Cortex-M处理器中RTOS操作原理与实现
1. Trusted Firmware-M与OS辅助API
Trusted Firmware-M包含OS辅助API,这些API与非安全RTOS交互,以支持协调切换和上下文切换操作。这些API和Trusted Firmware-M的源代码都是开源的。更多相关信息可参考嵌入式世界发表的论文 “How should an RTOS work in a TrustZone for Armv8 - M environment”,关于Trusted Firmware - M的更多信息,包括如何获取其源代码,可访问https://www.trustedfirmware.org/ 。
2. 简单OS的启动
为简化示例,假设未实现或未使用TrustZone,所有操作都在非安全状态下进行。系统启动时处于特权状态(非安全)并使用MSP(MSP_NS),第一个应用线程在非特权状态下执行并使用PSP。
RTOS的初始化可按以下步骤进行:
1. 初始化所有将使用的线程的堆栈帧。
2. 为周期性的OS滴答中断初始化SysTick。
3. 写入CONTROL寄存器,设置位0和位1,将线程执行状态切换到非特权状态,并选择PSP作为当前堆栈指针。
4. 跳转到第一个应用线程的起始点。
然而,如果需要启用MPU进行内存保护,上述方法将无法工作,原因如下:
- 出于安全原因,MPU需要在进入应用线程之前启用,并且处理器需要切换到非特权级别。
- 用于启动第一个应用线程的OS代码不能在非特权级别执行。因为一旦启用MPU并将处理器切换到非特权状态,位于仅允许特权访问的内存区
超级会员免费看
订阅专栏 解锁全文
1304

被折叠的 条评论
为什么被折叠?



