Cortex-M3权威指南阅读笔记1
1.基本概念
ARM的体系架构版本:即其所使用的指令集的版本。ARM架构支持32位ARM指令集和16位Thumb指令集,后者使代码存储空间大大减小并提供一些拓展功能(Jazelle、Trustzone、IEM等)。
架构有ARMv4、ARMv4T、ARMv5TEJ、ARMv6、ARMv9等等。相同的指令集下,搭配不同的部件即为不同的处理器:ARM7、ARM9、Cortex、SecurCore等系列。(T代表Thumb指令集,D表示支持debug,M表示内嵌乘法器,I支持片上断点和调试点,E代表增强型DSP指令,J表示·Java加速器)
Cortex系列:基于ARMv7架构,分为A,R,M(价格敏感产品,仅支持Thumb-2指令集,前二者支持ARM、Thumb、Thumb-2)三个子系列。
ARM7:ARMv4架构,ARM9:ARMv5架构,ARM11:ARMv6架构。
Thumb-2指令集16位与32位指令并存,UAL更好地支持了Thumb-2指令集。
Cortex-M3基础:
MRS:move to register from special register 特殊寄存器到通用寄存器
MSR: move to special register from register 通用寄存器到特殊寄存器
通用寄存器:
R0到R12复位后的初始值是不可预料的。
特殊功能寄存器:没有存储器地址,只能用专用的MRS和MSR访问
1.xPSR=APSR+IPSR+EPSR,既可以单独访问,也可以组合访问。
2.PRIMASK1位(改写当前优先级为0),FAULTMASK1位(改写当前优先级为-1),BASEPRI最多9位(由表达优先级的位数决定)。这3者特权级下才能访问。 -->其访问方式
快速开断指令CPS,4种用法。
3.CONTROL:位0:特权级下可写,写0位特权级线程模式,1位用户级线程模式。Handler模式永远是特权级 ->由用户级返回特权级途径
位1:选择堆栈指针MSP、PSP ,特权级的线程模式下可写 ,handler模式下总是0(MSP)
位2:限M4,是否启用FPU
EXC_RETURN:进入异常服务程序后,LR的值自动更新为特殊的EXC_RETURN,合法的该值共3个:与进入前使用的堆栈、处理器模式有关。
事实上,从用户级切换到特权级的的唯一途径就是异常。