目标:了解ARM处理器的工作状态,工作模式,寄存器结构,理解ARM处理器的异常处理,数据类型和存储格式,以及内存管理单元(MMU)和存储器保护单元(MPU)的含义和功能。
1.ARM处理器的工作状态及切换
在ARM体系结构中,处理器可以工作在3种不同的状态:一是ARM状态,二是Thumb状态以及Thumb-2状态,三是调试状态。
(1)ARM状态
ARM处理器工作于32位指令的状态。
(2)Thumb状态
ARM处理器工作于16位指令的状态。
值得注意的是:
①除Cortex-M外,所有的ARM处理器复位后开始执行代码时总是处于ARM状态。
②Cortex_M因为只有Thumb-2指令集,所以只有Thumb状态和调试状态两种。
(3)调试状态
处理器停机调试时进入调试状态。
(4)ARM与Thumb间的转换
①由ARM状态切换到Thumb状态
通过BX指令,将操作数寄存器最低位置1;
如果Thumb状态进入异常处理(异常处理要在ARM状态下进行),则当异常返回时,将自动切换到Thumb状态。
②Thumb状态与ARM状态间的转换
通过BX指令,将操作数寄存器最低位置0;
当处理器进行异常处理时,则从异常向量地址开始执行,将自动进入ARM状态。
2.ARM处理器的工作模式
ARM体系结构支持七种工作模式,取决于程序状态寄存器(CPSR)低五位的值。
具体参考P60的表格。
3.ARM处理器的寄存器组织
ARM处理器共有37个寄存器,包括31个通用寄存器和6个状态寄存器。
ARM处理器在不同模式下使用的寄存器有所不同。
相同之处:
①无论何种模式,R15均作为PC使用
②CPSR为当前程序状态寄存器
③R7~R0为公用的通用寄存器
不同之处:
高端7个通用寄存器和状态寄存器在不同模式下不同。
(1)ARM状态下的寄存器组织
①通用寄存器
②状态寄存器
PS:具体参考P62
(2)Thumb状态下的寄存器组织
高位寄存器R8~R12在Thumb状态不可见,在Thumb-2下可以使用。
(3)带MMU的ARM处理器中的控制寄存器
3.ARM处理器的异常
(1)ARM异常种类,异常向量表及优先级
复位异常的优先级最高。
(2)ARM异常的中断响应过程
(3)从异常处理程序中返回
具体参考P64。
4.ARM数据类型及存储格式
(1)ARM的两种存储字格式
①大端模式
高字节放在低地址,低字节放在高地址。
②小端模式
高字节放在高地址,低字节放在低地址。
系统复位时一般自动默认为小端模式,与大家熟悉的Intel 80x86一致。
(2)ARM存储器的数据类型
除Cortex-A50外,32位的ARM处理器中支持字节(8位),半字(16位),字(32位)。每一种又可分为有符号与无符号数,因此认为有6种数据类型。
ARM状态下,指令32位。
Thumb状态下,指令16位。
5.ARM处理器中的存储器管理单元(MMU)和存储器保护单元(MPU)
1.ARM处理器中的MMU
MMU能把系统中不同类型的存储器(如Flash,SRAM,SDRAM,ROM,优盘)进行统一管理(虚拟存储器技术)。
MMU功能:虚拟地址到物理地址的映射;存储器访问权限控制。
2.ARM处理器中的MPU
MPU是对存储器进行保护的可选组件。它提供了简单替代MMU的方法来管理存储器。