Arm Cortex-M处理器寄存器详解
1. 通用寄存器访问
在编程中,寄存器R0 - R15可以使用大写或小写的各种名称进行访问,即R0 - R15或r0 - r15。对于R13 - R15,还可以使用以下别名:
- R13:SP或sp(当前选定的堆栈指针)
- R14:LR或lr(链接寄存器)
- R15:PC或pc(程序计数器)
堆栈指针SP在安全和非安全状态下是有存储区分的。当使用MSR/MRS指令访问堆栈指针时,可以指定使用哪个堆栈指针:
- MSP — 当前安全状态的主堆栈指针(可能是MSP_S或MSP_NS)
- PSP — 当前安全状态的进程堆栈指针(可能是PSP_S或PSP_NS)
- MSP_NS — 使安全软件能够访问非安全主堆栈指针
- PSP_NS — 使安全软件能够访问非安全进程堆栈指针
在相关文档中,堆栈指针也被标记为SP_main(主堆栈指针)和SP_process(进程堆栈指针)。当处理器处于调试状态(即暂停)时,还可以使用调试软件(运行在如PC等调试主机上)对R0 - R15进行读写操作。
2. 特殊寄存器
除了寄存器组中的寄存器外,还有一些具有特殊用途的特殊寄存器,例如用于中断屏蔽的控制寄存器和用于算术/逻辑运算结果的条件标志。这些寄存器可以使用特殊寄存器访问指令(如MRS和MSR)进行访问:
MRS <reg>, <special_reg>; 将特殊寄存器的值读取到寄存器中
MSR <special_reg&
超级会员免费看
订阅专栏 解锁全文
1421

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



