嵌入式作业
(1)寄存器的使用与处理器状态和工作模式有关,简述ARM状态下寄存器的组织。
ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决微处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R14~R0、程序计数器PC、一个或两个状态寄存器都是可访问的。
所有模式下,R0-R7所对应的物理寄存器都是相同的。
访问的物理寄存器取决于当前的处理器模式,或使用规定的名字来访问。
R8-R12各有2个物理寄存器:FIQ模式和非FIQ模式。
R13-R14各有6个物理寄存器,用户模式和系统模式共用,其他5个用于各异常模式。
R13(SP)被用作栈指针,通常在系统初始化时需要对所有模式下的SP指针赋值, CPU会自动切换成相应模式下的值。
R14(LR,链接寄存器)用于保存子程序返回地址或异常返回地址。
R15用作程序计数器(PC),可以被读写程序状态寄存器包括所有的CPSR和SPSR寄存器
其中 CPSR(当前状态寄存器)在所有的模 式下都是可以读写的。SPSR是CPSR的 备份。二者的格式是一样的
(2)ARM支持哪些异常,优先级如何?
1,快速中断FIQ
2,软中断SWI Software Interrupt
3,一般中断IRQ
4,复位Rese
5,指令未定义 Undefined Instruction
6,指令预取中止 Prefetch Abort
7,数据中止 Data Abort
优先级
1(最高) SVC 复位
2 数据中止
3 FIQ(快速中断请求)
4 IRQ(外部中断请求)
5 abt 预取指令中止
6(最低) und 未定义指令,SWI
(3)ARM处理器异常响 应的过程是怎样的?
- 拷贝CPSR寄存器的内容至对应模式下的 SPSR_寄存器_
- 将返回地址保存到对应模式下的 LR_寄存器
- 对 CPSR 寄存器的一些标志位置位
如果当前处理器处于Thumb 状态,那么会 转换到 ARM 状态
处理器模式位
中断屏蔽位- 将程序计数器(PC)拨到异常向量处
(4)为什么CPU Core能够尽快地响应FIQ中断
- FIQ 向量在异常向量表的最后,这样使FIQ处理程序可以直接从FIQ向量处开始,省去了跳转的时间开销;
- FIQ 模式下有五个额外的寄存器 (r8_FIQ to r12_FIQ),对于这些寄存器在进入和推迟FIQ时无须保存和恢复,节省了时间;
(5)存储器的大端格式和小端格式?
大端格式:数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中
小端模式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节