rtos第一天

tech2022-09-20  108

裸机与RTOS的区别

前后台代码结构的缺点:

1》实时性不能保证,事件可能无法得到及时的处理 2》存在CPU空转的情况,CPU利用率不高,白白浪费时间 3》强迫人按照机器的顺序工作方式思考编码,当执行的任务越多,代码结构越复杂,编码难度越大

RTOS优势:

1》 “虚拟”出CPU 提升CPU的利用率 2》 通过RTOS可以控制任务的运行时机,事件处理的实时性得到有效保证 3》 提供了一些组件用于简化任务对资源的访问,事件的处理,以及任务之间的通信,有效降低任务之间的代码耦合 4》提供通用的任务管理框架,开发不同项目可以重复利用,简化开发难度,用户更友好

上帝:我有什么?

操作模式:

为了区别正在执行的代码的类型,Cortex M3支持两种操作模式-------------handler模式和thread模式 handler模式为异常处理例程的代码;线程模式为普通应用程序的代码;

特权级别

为了保证用户在访问存储器时的合法性,Cortex M3提供了一种分级保护机制,两种特权级别分别为特权级和用户级。 在特权级下,程序可以访问所有范围的存储器(如果有MPU,还要在MPU的禁地之外),并且能够执行所有指令; 在用户级下,不能访问系统控制空间(SCS,包含配置寄存器及调试组件的寄存器),且禁止使用MSR访问特殊功能寄存器(APSR除外),如果访问,则产生fault;

在线程模式,可以是特权级,也可以是用户级;handler模式总是特权级的;在复位后,处理器处于线程模式+特权级; 在特权级下的代码可以通过置位CONTROL[0]来进入用户级。而不管是任何原因产生了任何异常,处理器都将以特权级来运行其服务例程,异常返回后将回到产生异常之前的特权级。用户级下的代码不能再试图修改CONTROL[0]来回到特权级。它必须通过一个异常handler,由那个异常handler 来修改CONTROL[0],才能在返回到线程模式后拿到特权级。

寄存器组

低组寄存器R0–R7 高组寄存器R8–R12 链接寄存器 LR 存储子程序调用的返回地址 程序计数器PC 堆栈指针寄存器R13 : MSP PSP(分别用于特权级堆栈和用户级堆栈) 程序状态寄存器 异常屏蔽寄存器 PRIMASK 置1关闭所有中断 具体细节传送门:https://blog.csdn.net/wqx521/article/details/50914651

预定义的存储器映射

Code 存放可执行代码以及常量 SRAM 片内RAM 用于存放堆栈 变量等数据

双堆栈机制

异常和中断处理

最新回复(0)