RTOS
文章平均质量分 81
RTOS分析及实现
猪哥-嵌入式
这个作者很懒,什么都没留下…
展开
-
RTOS系列(17):CPU启动、创建OS任务、启动首个任务、任务切换完整流程说明
在前面的系列文章中,我们详细讲述了RTOS所需的一些重点知识点,也分析了RTOS的启动、上下文的切换流程,本文总结一下CPU启动到创建OS任务、到启动首个任务、任务切换的完整流程。原创 2023-05-08 22:44:28 · 628 阅读 · 1 评论 -
RTOS系列(16):从0到1写一个简单、易懂、易用的RTOS ——K2OS 启动首个任务原理介绍
CPU从上电启动到OS接管,启动首个任务过程中,背后发生了很多动作,涉及的知识点也非常多,所以我们有必要详细分析一下RTOS启动首个任务的原理。原创 2022-09-03 22:31:00 · 740 阅读 · 1 评论 -
RTOS系列(15):从0到1写一个简单、易懂、易用的RTOS ——K2OS
前面的系列文章中,我们详细的分析了RTOS所依赖的各种基础知识点,文章即便写的再详细,相信很多人对RTOS仍然会觉得有点模糊,引用一句经典程序员术语:从本篇开始,我们从0到1写一个RTOS,通过自己动手,彻底搞清楚RTOS的运行机制。我们这款RTOS起名为K2OS(Keep simple、stupid OS),欢迎大家下载体验。原创 2022-09-03 22:08:52 · 1137 阅读 · 0 评论 -
RTOS系列(14):提升RTOS实时性的算法技巧分析
在一般的应用程序开发中,我们很少会关注程序性能、实时性问题,一方面是因为CPU的硬件资源已经够用,另一方面就是一般的应用程序对于性能、实时性的要求并不会太高,几十毫秒的延时,可能对于多说应用程序的逻辑都是没有太大影响的。但是对于RTOS的代码,我们就需要重点关注代码是否高效、毕竟RTOS的R 是Real time的含义,即对实时性要求很高。...原创 2022-08-21 22:34:07 · 1337 阅读 · 2 评论 -
RTOS系列(13):汇编LDR指令、LDR伪指令、[Rn]寄存器间接引用 详细解析
汇编LDR指令在RTOS中使用的比较频繁,尤其是在PendSV中进行上下文切换的时候,LDR指令是不可缺少的,我们在看uC/OS、FreeRTOS、RT-Thread的源码时,都能够看到LDR的身影。由于LDR指令有2个名字LDR指令、LDR伪指令,这就给我们理解LDR带来了困难,很容易混淆。本文就详细分析一下汇编LDR、[Rn]间接引用的原理。......原创 2022-07-24 12:17:28 · 3540 阅读 · 0 评论 -
RTOS系列(12):使用SVC或PendSV启动OS流程详细分析
RTOS系列(1):基础知识——中断嵌套RTOS系列文章(2):PendSV功能,为什么需要PendSVRTOS系列文章(3): 为什么将SysTick和PendSV的优先级设置为最低RTOS系列文章(4): MDK软件仿真 + Debug-(printf)-Viewer使用方法RTOS系列文章(5):C语言程序运行原理分析:汇编、栈、栈帧、进栈、出栈、保存现场、恢复现场、返回RTOS系列文章(6):Cortex-M3/4之SP,MSP,PSP,Thread模式、Handler模式、内核态、用户态原创 2022-07-10 22:33:16 · 2758 阅读 · 3 评论 -
RTOS系列文章(11):RTOS启动方式——直接设置CONTROL寄存器、SVC启动、PendSV启动
RTOS系列(1):基础知识——中断嵌套RTOS系列文章(2):PendSV功能,为什么需要PendSVRTOS系列文章(3): 为什么将SysTick和PendSV的优先级设置为最低RTOS系列文章(4): MDK软件仿真 + Debug-(printf)-Viewer使用方法RTOS系列文章(5):C语言程序运行原理分析:汇编、栈、栈帧、进栈、出栈、保存现场、恢复现场、返回RTOS系列文章(6):Cortex-M3/4之SP,MSP,PSP,Thread模式、Handler模式、内核态、用户态原创 2022-07-10 10:06:59 · 1871 阅读 · 3 评论 -
RTOS系列文章(10):简单OS示例分析
RTOS系列(1):基础知识——中断嵌套RTOS系列文章(2):PendSV功能,为什么需要PendSVRTOS系列文章(3): 为什么将SysTick和PendSV的优先级设置为最低RTOS系列文章(4): MDK软件仿真 + Debug-(printf)-Viewer使用方法RTOS系列文章(5):C语言程序运行原理分析:汇编、栈、栈帧、进栈、出栈、保存现场、恢复现场、返回RTOS系列文章(6):Cortex-M3/4之SP,MSP,PSP,Thread模式、Handler模式、内核态、用户态原创 2022-07-05 22:55:34 · 1540 阅读 · 5 评论 -
RTOS系列文章(7):CM3/4之LR寄存器、EXC_RETURN深入分析
在Cortex-M3/4中有个特殊的寄存器R14,这个寄存器还有一个大家熟知的名字LR,LR全称为Link Register,有的书本上会翻译成链接寄存器。该寄存器一般用于存放函数退出返回地址。除了函数调用返回使用,中断退出也会使用LR,不过中断返回机制与函数返回机制会有一些细节不通,中断返回虽然也是通过LR,但是还会有EXC_RETURN辅助。这里我们直接引用《The definitive guide to ARM Cortex-M3/4》中对LR的介绍:翻译过来,有如下重点知识:如上面描述,LR是链原创 2022-06-04 18:46:39 · 4639 阅读 · 4 评论 -
RTOS系列文章(6):Cortex-M3/4之SP,MSP,PSP,Thread模式、Handler模式、内核态、用户态
FreeRTOS系列(1):基础知识——中断嵌套FreeRTOS系列文章(2):PendSV功能,为什么需要PendSVFreeRTOS系列文章(3): 为什么将SysTick和PendSV的优先级设置为最低FreeRTOS系列文章(4): MDK软件仿真 + Debug-(printf)-Viewer使用方法FreeRTOS系列文章(5):C语言程序运行原理分析:汇编、栈、栈帧、进栈、出栈、保存现场、恢复现场、返回在深入分析RTOS调度之前,我们还需要了解一下Cortex-M3/4的工作模式以及双原创 2022-06-03 18:50:15 · 8409 阅读 · 11 评论 -
RTOS系列文章(5):C语言程序运行原理分析:汇编、栈、栈帧、进栈、出栈、保存现场、恢复现场、返回
C源程序; Reset handlerReset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT __main IMPORT SystemInit LDR R0, =SystemInit BLX R0原创 2022-05-28 19:10:46 · 3285 阅读 · 1 评论 -
RTOS系列文章(4): MDK软件仿真 + Debug-(printf)-Viewer使用方法
背景MDK具有强大的软件仿真能力,这里的仿真不是仿真虚拟的CPU,而是仿真我们工程中使用的CPU,简单的说,我们在MDK中的工程文件,只要CPU型号是MDK本地支持的,都可以使用仿真器直接仿真,而不依赖真实的硬件。仿真器除了常规的寄存器、堆栈信息,还可以使用自带的print打印窗口。但是如果使用printf功能,需要重定向fput函数。在后续的文章中,我们会使用软件仿真来学习分析FreeRTOS具体步骤1. 勾选[User MircroLIB]2. 仿真Debug设置3. fput 重原创 2022-05-21 18:02:17 · 1995 阅读 · 0 评论 -
RTOS系列文章(3): 为什么将SysTick和PendSV的优先级设置为最低
FreeRTOS系列(1):基础知识——中断嵌套FreeRTOS系列文章(2):PendSV功能,为什么需要PendSV前言在上一篇文章中,我们详细分析了PendSV的功能,也分析了SysTick和PendSV结合,实现OS任务调度,简单的分析了SysTick的优先级。我觉得有必要针对SysTick的优先级,单独写一篇文章分析。结论概述嵌入式实时OS的【实时】不仅仅是OS对任务调度及时,更重要的是要求嵌入式OS具有【可剥夺/抢占】的特性,既允许高优先级任务抢占低优先级任务,又要允许外部中断能够抢占原创 2022-05-17 21:43:12 · 5259 阅读 · 12 评论 -
RTOS系列文章(2):PendSV功能,为什么需要PendSV
背景大多数嵌入式RTOS在Cortex-M3/M4上的移植都需要PendSV,比如uCOS、RT-Thread、FreeRTOS等,本文就对PendSV的功能作用,以及为什么需要PendSV进行详细的分析。PendSV是什么?我们先引用《Cortex-M3权威指南》对PendSV的介绍:PendSV(可悬起的系统调用),它是一种CPU系统级别的异常,它可以像普通外设中断一样被悬起,而不会像SVC服务那样,因为没有及时响应处理,而触发Fault。个人理解PendSV的英文全称应该是:Pend S原创 2022-05-17 20:55:58 · 14487 阅读 · 17 评论 -
RTOS系列(1):基础知识——中断嵌套
背景我们在单片机编程,嵌入式RTOS编程,甚至其他OS下的系统编程时,可能会忽略“中断嵌套”背景知识,在之前的工作和编码过程中,我也没有深入的了解或者注意过“中断嵌套”,直到当我想要深入了解嵌入式RTOS的运行原理时,才发现,原来“中断嵌套”的概念是如此的重要,以至于各种RTOS的基础配置,以及设计,都是围绕着“中断嵌套”的机制来设计和配置的。什么是中断嵌套中断嵌套的书面解释如下:中断嵌套指中断系统正在执行一个中断服务L时,有另一个优先级更高的中断H触发,这时中断系统会暂时中止当前正在执行低优先级原创 2022-05-15 22:00:13 · 11825 阅读 · 4 评论