第三章 ARM体系结构
1、嵌入式微处理器概述
嵌入式微处理器的组成:
(1)控制单元
(2)算术逻辑运算单元
(3)寄存器
2、ARM体系结构概览
ARM处理器的特点:
(1)体积小、功耗低
(2)16/32位双指令集
(3)合作伙伴多
3、ARM编程模型
指令流水线:ARM7采用3级,PC指向正在被取指的指令。
ARM的工作状态(2种):
(1)ARM状态:32位
(2)Thumb状态:16位
ARM采用32位架构,使用BX指令切换状态。
ARM的工作模式(7种):
(1)用户(usr):正常的模式。
(2)系统(sys):可执行操作系统特权指令。
(3)快中断(fiq):高速数据传输和通道。
(4)中断(irq):通用中断处理。
(5)管理(svc):操作系统保护模式。
(6)中止(abt):支持虚拟内存。
(7)未定义(und):支持硬件协处理器的软件支持。
除了用户模式,其他均为特权模式。特权模式可以随意切换到其他模式,而用户模式则不行。
用户和系统模式都不能由异常进入,使用相同的寄存器。
ARM的寄存器:
- 37个寄存器(
R
0
∼
R
15
R_0\sim R_{15}
R0∼R15)
- R 0 ∼ R 13 R_0\sim R_{13} R0∼R13完全通用, R 0 ∼ R 17 R_0\sim R_{17} R0∼R17未分组, R 8 ∼ R 14 R_8\sim R_{14} R8∼R14分组
- R 13 → S P R_{13}\rightarrow SP R13→SP
-
R
14
→
L
R
R_{14}\rightarrow LR
R14→LR,链接寄存器
- 子程序返回地址保存在自身的 R 14 R_{14} R14中
- 异常返回地址保存在对应的 R 14 R_{14} R14异常版本中,因此,发生异常嵌套时, R 14 R_{14} R14可能被破坏。
- R 15 → P C R_{15}\rightarrow PC R15→PC
- 6个状态寄存器(
C
P
S
R
和
S
P
S
R
CPSR和SPSR
CPSR和SPSR)
-
C
P
S
R
CPSR
CPSR,程序状态寄存器(32bit)
- 保存ALU信息(N、Z、C、V)
- 控制允许和禁止中断(I、F)
- 设置操作模式(Mode),工作状态(T)
- S P S R SPSR SPSR,程序状态保存寄存器
-
C
P
S
R
CPSR
CPSR,程序状态寄存器(32bit)
4、ARM 异常处理
异常:打断处理器正常执行,迫使其执行特权指令的事件。
异常的分类:
(1)同步异常
→
\rightarrow
→内部事件,一般是指令,如陷阱、故障、中止。
(2)异步异常
→
\rightarrow
→外部事件,一般是硬件信号,如中断。
ARM异常,首先要保存处理器的状态。
ARM异常类型:
(1)FIQ
(2)IRQ
(3)未定义指令
(4)软件中断(SWI)
(5)…
ARM异常处理过程:
- 进入异常
- C P S R → S P S R _ < m o d e > CPSR\rightarrow SPSR\_<mode> CPSR→SPSR_<mode>
- 更新
C
P
S
R
CPSR
CPSR
- C P S R CPSR CPSR的T位清0进入ARM态
- C P S R CPSR CPSR的Mode位设置为相应的模式
- C P S R CPSR CPSR的I、F位置1,禁止中断
- 异常返回地址 → L R _ < m o d e > \rightarrow LR\_<mode> →LR_<mode>
- 异常向量(入口地址) → P C \rightarrow PC →PC
- 退出异常
- S P S R _ < m o d e > → C P S R SPSR\_<mode>\rightarrow CPSR SPSR_<mode>→CPSR
- L R _ < m o d e > → P C LR\_<mode>\rightarrow PC LR_<mode>→PC
ARM中断:
(1)硬件中断:IRQ、FIQ等,优先级FIQ
>
\gt
>IRQ
(2)软件中断:SWI
中止:当前存储器的访问不能完成。
(1)预取中止
(2)数据中止