文章目录
1,七种异常源
地址偏移量 | 异常 | 异常模式 | 描述 |
---|---|---|---|
0x00000000 | 复位 | SVC | 复位电平有效时,产生复位异常,程序跳转到复位处理程序处执行 |
0x00000004 | 未定义指令 | Undefined | 遇到不能处理的指令时,产生未定义指令异常 |
0x00000008 | 软件中断 | SVC | 执行SWI指令产生,用于用户模式下的程序调用特权操作指令(主要在系统调用时使用) |
0x0000000c | 预取指异常 | Abort中止模式 | 处理器预取指令的地址不存在,或该地址不允许当前指令访问,产生指令预取中止异常 |
0x00000010 | 数据异常 | Abort中止模式 | 处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时 产生数据中止异常 |
0x00000014 | - | 未使用 | 未使用 |
0x00000018 | IRQ | IRQ | 外部中断请求有效,且CPSR中的I位为0时,产生IRQ异常 |
0x0000001c | FIQ | FIQ | 快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常 |
2,异常优先级
- 异常在当前指令执行完成之后才被响应
- 多个异常可以在同一时间产生
- 异常指定了优先级和固定的服务顺序:
. Reset
. Data Abort
. FIQ
. IRQ
. Prefetch Abort
. SWI
. Undefined instr