ARM异常处理

ARM支持7种类型的异常,它们是:

复位异常

未定义指令异常

软中断指令异常

预取指令异常

数据中止访问异常

中断异常

快速中断异常


ARM异常向量表


当异常发生时,ARM将做如下事情

(1)将异常发生处下条指令地址保存到相应工作模式下LR寄存器中

(2)CPSR寄存器值复制到相应异常模式下的SPSR寄存器中

(3)切换ARM工作模式

(4)如果异常模式是复位模式或者是快速中断模式,禁止所有快速中断(CPSR[6]=1)

(5)禁止中断CPSR[7]= 1

(6)设置PC寄存器值为相应异常向量地址

我们看ARM异常向量表中,异常向量地址空间大小为4个字节,也就是说这段空间刚好能存放一条ARM指令,所以我们可以在异常这段地址空间中存放一条跳转指令,跳转到我们的异常处理程序中,u-boot中启动代码就是这样做的:

_start: b       start_code

复位异常时,跳转到start_code标号处。


你可能感兴趣的:(工作)