什么是异常?程序员
(1)正常工做以外的流程都叫异常架构
(2)异常会打断正在执行的工做,而且通常咱们但愿异常处理完成后继续回来执行原 来的工做异步
(3)中断是异常的一种fetch
知识点回顾:设计
ARM 有7个基本工做模式:orm
User : 非特权模式,大部分任务执行在这种模式内存
-----------------------------------------------------------------------------------------------同步
FIQ : 当一个高优先级(fast) 中断产生时将会进入这种模式it
IRQ : 当一个低优先级(normal) 中断产生时将会进入这种模式ast
Supervisor :当复位或软中断指令执行时将会进入这种模式
Abort : 当存取异常时将会进入这种模式
Undef : 当执行未定义指令时会进入这种模式
------------------------------------------------------------------------------------------------
System : 使用和User模式相同寄存器集的特权模式
小结:
(1)FIQ,IRQ,Supervisor,Abort ,Undef 五种都为异常模式。
(2)同步 同步时钟 ,异步 靠中断(一种特殊的中断)来实现
1.异常向量表
1.1特色:
(1)全部的CPU都有异常向量表,这是CPU设计时就设定好的,是硬件决定 的。
(2)当异常发生时,CPU会自动动做(PC跳转到异常向量到处理异常,有时 伴有一些辅助动做)
(3)异常向量表是硬件向软件提供的处理异常的支持。
1.2ARM的异常处理机制
1.21向量表:
(1)复位异常 0X00
(2)未定义异常 0X04
(3)软中断 0X08
(4)Prefetch Abort (预取指异常) 0X0C
(5)Data abort(数据访问异常) 0X10
(6)Reserved(空) 0X14
(7)IRQ (外部中断模式) 0X18
(8) FRQ (快速中断模式) 0X1C
笔记:内存地址规划
1.22处理机制
1.23当异常产生时:ARM core:
(1)拷贝 CPSR 到 SPSR_<mode>
(2)设置适当的 CPSR 位:
1.改变处理器状态进入 ARM 态
2.改变处理器模式进入相应的异常模式
3.设置中断禁止位禁止相应中断 (若是须要)
(3)保存返回地址到 LR_<mode>
(4)设置 PC 为相应的异常向量
1.24返回时, 异常处理须要:
(1)从 SPSR_<mode>恢复CPSR
(2)从LR_<mode>恢复PC
(3)Note:这些操做只能在 ARM 态执行.
1.25知识小结:
1.改变处理器状态进入 ARM 态
T Bit
仅ARM xT架构支持
T = 0: 处理器处于 ARM 状态
T = 1: 处理器处于 Th
2..改变处理器模式进入相应的异常模式
Mode位:
处理器模式位
3.设置中断禁止位禁止相应中断 (若是须要)
中断禁止位:
I = 1: 禁止 IRQ.
F = 1: 禁止 FIQ.
总结:
(1)异常处理中有一些是硬件自动作的,有一些是程序员须要本身作的。须要搞清楚 哪些是须要本身作的,才知道如何写代码。
(2)以上说的是CPU设计时提供的异常向量表,通常成为一级向量表。有些CPU为 了支持多个中断,还会提供二级中断向量表,处理思路相似于这里说的一级中断 向量表。