ARM Cortex M3内核的操作模式
本文解析了ARM Cortex-M3内核中CONTROL寄存器和EXC_RETURN异常返回值的作用。CONTROL寄存器通过bit0和bit1控制处理器操作模式(特权级/用户级)和堆栈指针选择(MSP/PSP),与handler模式和线程模式组合形成三种运行状态。特权级可直接修改CONTROL寄存器,而用户级需通过异常服务例程修改。EXC_RETURN作为32位异常返回值,其低四位决定中断返回行
前言:
这篇文章是一个短文,主要是对前一篇文章《通过链表深入理解FreeRTOS的任务调度机制》中启动第一个任务时msr control, r0这一句做一个解释,这里主要是牵扯到ARM Cortex M3内核的操作模式,随学随记, 希望煮包的总结对大家有点帮助~~~~
一、关于CONTROL寄存器和EXC_RETURN异常返回值的一些讨论总结
在复位后,处理器进入线程模式+特权级
介绍:CONTROL是一个寄存器,用bit0和bit1两个bit位产生的控制效果分别是当前处理器的操作模式(0->特权级,1->用户级)和所使用的堆栈指针(0->MSP,1->PSP);与handler模式和线程模式搭配组成了三种当前代码运行时,处理器的模式(handler模式+特权级,线程模式+特权级,线程模式+用户级),以下是各种模式之间的转换图:
注意:特权级可以直接操作CONTROL寄存器回到用户级,用户级必须触发异常,在异常服务例程中才可修改CONTROL寄存器,异常返回后便可以达到用户级->特权级的切换;
EXC_RETURN是一个32位的异常返回值,高28位全为1,由低四位起控制作用,关于EXC_RETURN的三个合法值如下图:

1.0xFFFF_FFF1:中断嵌套;
2.0xFFFF_FFF9:中断回MSP
3.0xFFFF_FFFFD:中断回PSP
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐



所有评论(0)