24、嵌入式操作系统:并行任务、调度与安全机制解析

嵌入式操作系统:并行任务、调度与安全机制解析

1. 特权级别与堆栈管理

Cortex - M CPU 设计为支持两种不同级别的特权运行代码,这在运行不可信应用代码时极为重要,能让内核始终掌控执行过程,防止因用户线程异常导致系统故障。启动时默认执行级别为特权级,方便内核启动。应用程序可配置为在用户级别执行,并在上下文切换操作中使用不同的堆栈指针寄存器。

1.1 特权级别切换

特权级别切换仅能在异常处理程序中进行,通过存储在 LR 中的特殊异常返回值实现。控制特权级别的标志是 $0/530 - 寄存器的最低位,可在异常处理程序返回前的上下文切换中更改,从而使应用线程在用户特权级别运行。

1.2 堆栈指针寄存器

大多数 Cortex - M 提供两个独立的堆栈指针 CPU 寄存器:
- 主堆栈指针(MSP)
- 进程堆栈指针(PSP)

操作系统应遵循 ARM 建议,使用 PSP 执行用户线程,而 MSP 由中断处理程序和内核使用。堆栈选择取决于异常处理程序结束时的特殊返回值。目前实现的调度器将该值硬编码为 Y''''''' ,用于在中断后返回线程模式并保持在特权级别执行代码。从中断处理程序返回 Y'''''''% 值会告知 CPU 在返回线程模式时选择 PSP 作为堆栈指针寄存器。

1.3 上下文保存与恢复函数

为正确实现特权分离,用于任务切换的 PendSV 处理程序需修改,以使用正确的堆栈指针保存和恢复被抢占任务的上下文。原有的 TUPSF@DPOU

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值