ARM处理器分类
cortex-M 单片机 低端 低功耗 传感器 stm 32
cortex-R 实时性要求高的场合。无人机 汽车 实时性操作系统
cortex-A 多媒体应用 图形图像采集,高端应用 带操作系统
ARMCPU核心结构
1、运算器 运算
2、控制器
3、寄存器 是硬件与软件的接口 CPU留给用户的接口
- 寄存器
1、通用寄存器 r0-r12
2、特殊功能寄存器
r13 sp 栈指针寄存器 C语言运行基本条件
r14 lr 链接寄存器 用于存放返回地址
r15 pc 程序计数器 记录即将要执行的指令的位置
3、cpsr 程序状态寄存器 标记CPU一些状态
条件位: 运算过程中的条件的记录
N:ALU中产生了负数的结果
Z:ALU中运算结果产生了0
C:加法时产生了进位C自动置1否则为0,减法时产生了借位C位自动置0否则为1
V:对于有符号数符号位发生变化时自动置1
模式位 [4:0]
-
spsr cpsr备份寄存器
-
CPU模式切换:
usr 用户模式
sys 系统模式
共有一套寄存器 ---- 每个模式都有一套可见寄存器
fiq 快速中断模式 在触发fiq中断时
svc 超级用户模式 触发软中断时进入
abort 异常模式
irq 中断模式
undefind 未定义模式
7种模式有寄存器37个
cortex-A 特有 monitor模式
-
模式分类:
非特权模式 user模式
特权模式 除user模式
异常模式
非异常模式 sys moi -
异常:发生某些事,触发cpu切换模式: 异常向量表、
异常向量表 | ||
---|---|---|
复位异常 | svc | 0x0000 |
未定义指令异常 | undefin | 0x0004 |
软中断异常 | svc | 0x0008 |
指令预取异常 | abort | 0x000 |
c数据异常 | abort | 0x0010 |
0x0014 (保留)中断异常 | ||
中断 | irq | 0x0018 |
快速中断 | fiq | 0x001c |
- 流水线:提高执行效率
指令的执行:取址->译码->执行
异常发生时,cpu如何处理
-
硬件如何处理
4大步3小步
1、保存cpsr 到spsr
2、设置适当的cpsr位
(1)、状态切换为arm状态
(2)、切换模式位
(3)、禁止某些中断。
3、保存返回地址到lr == (pc-4)
4、修改PC到对应向量的地址 -
软件如何处理
1、保存现场 入栈保存 保存lr r0-r12
2、软件处理异常
3、恢复现场 -
异常向量表: 异常触发时硬件会自动跳转的位置,是一个程序的入口
-
异常的优先级:
1、Reset
2、Data Abort
3、FIQ
4、IRQ
5、Prefetch Abort
6、SWI
7、Undefined instruction