学习要求
cortex-M3内部结构
Cortex-M3处理器结构框图
ARM处理器包含三种工作状态
ARM处理器工作模式和工作状态
处理器工作模式(usr、sys、fiq快中断、irq外部中断、svc、abt、und)
特权模式
异常模式
用户和系统模式
ARM寄存器
ARM状态各模式下的寄存器
通用寄存器
(1)未分组寄存器
(2) 分组寄存器(SP和LR)
SP和LR
R13通常用作堆栈指针SP
R14用作子程序链接寄存器LR(Link Register)
(3) 程序计数器R15(PC)
程序状态寄存器
当前程序状态寄存器(Current Program Status Register,CPSR)
CPSR可以在任何处理器模式下被访问,它包含下列内容:
- ① ALU(Arithmetic Logic Unit)状态标志的备份
- ② 当前的处理器模式
- ③ 中断使能标志
- ④ 设置处理器的状态(只在4T架构)
(1)标志位
N(Negative)、Z(zero)、C(Carry)和V(oVerflow)通称为条件标志位。这些条件标志位会根据程序中的算术或逻辑指令的执行结果而修改。而且这些条件标志位可由大多数指令检测以决定指令是否执行。
N:本位设置成当前指令运行结果的bit[31]的值;当两个补码表示的有符号整数运算时,N=1,表示运算的结果为负数;N=0,表示结果为正数或零
Z:Z=1,表示运算的结果为零;Z=0,表示运算的结果不为零。
对于CMP指令,Z=1表示进行比较的两个数相等。
C:分下面4种情况讨论C的设置方法
V:溢出标志。V=1表示符号位溢出,V=0表示符号位无溢出
小例子
(2)Q标志位
在带DSP指令扩展的ARM v5及其更高的版本中,bit[27]被指定用于指示增强的DAP指令是否发生了溢出,因此也就被称为Q标志位。同样,在SPSR中bit[27]也被称为Q标志位,用于在异常中断发生时保存和恢复CPSR中的Q标志位。
在ARM v5以前的版本及ARM v5的非E系列处理器中,Q标志位没有被定义,属于待扩展的位。
(3)控制位
CPSR的低8位(I、F、T及M[4:0])统称为控制位。当异常发生时,这些位值将发生相应的变化。另外,如果在特权模式下,也可以通过软件编程来修改这些位的值。
① 中断禁止位
② 状态控制位
③ 模式控制位
(3)CPSR中的保留位
备份程序状态寄存器(SavedProgram Status Register,SPSR)
每一种处理器模式下都有一个专用的物理寄存器作为备份程序状态寄存器(SavedProgram Status Register,SPSR)。当特定的异常中断发生时,这个物理寄存器负责存放当前程序状态寄存器CPSR的内容。当异常处理程序返回时,再将其内容恢复到当前程序状态寄存器。
例题
Thumb状态与ARM状态下的寄存器组织的关系
Cortex-M3工作模式
Cortex-M3寄存器
R14 --连接寄存器(LR)
状态寄存器组 xPSR (PSRs) (包括3个 )
控制寄存器CONTROL
Cortex-M3寄存器Thumb/Thumb-2 状态下的寄存器组织
数据类型与存储器格式
(1)地址空间
(2)数据类型(字节、半字、字)
(3)存储格式(大端方式and小端方式)
从左到右看,最左边的就是高字节,最右边的就是低字节
因为0x是表示十六进制,所以0x12H用二进制表示其实占8位
例题
非对齐的存储器访问
非对齐的存储访问含义
- ARM状态,访问地址的低二位不为00;
- Thumb状态,访问地址的最低位不为0