理论教育 异常响应和返回处理-ARM嵌入式系统基础与应用

异常响应和返回处理-ARM嵌入式系统基础与应用

时间:2023-11-03 理论教育 版权反馈
【摘要】:当一个异常出现以后,ARM处理器会执行以下几步操作进入异常:1)将下一条指令的地址存入相应链接寄存器LR,以便程序在处理异常返回时,能从正确的位置重新开始执行。3)根据异常类型,设置CPSR的运行模式位。为了保证ARM处理器在发生异常时不会出于未知状态,应用程序设计中必须确保对异常的处理。当异常处理完成之后,返回到主程序继续执行。

异常响应和返回处理-ARM嵌入式系统基础与应用

当一个异常出现以后,ARM处理器会执行以下几步操作进入异常:

1)将下一条指令的地址存入相应链接寄存器LR,以便程序在处理异常返回时,能从正确的位置重新开始执行。若异常是从ARM状态进入,LR寄存器中保存的是下一条指令的地址(当前PC+4或PC+8,与异常的类型有关);若异常是从Thumb状态进入,则在LR寄存器中保存当前PC的偏移量。这样,异常处理程序就不需要确定异常是从何种状态进入的。例如:对于软件中断SWI异常,指令MOV PC,R14_svc总是返回到下一条指令,不管SWI是在ARM状态执行,还是在Thumb状态执行。

2)将CPSR复制到相应的SPSR中。

3)根据异常类型,设置CPSR的运行模式位。

4)强制PC从相关异常向量地址取下一条指令执行,从而跳转到相应异常处理程序处。

还可以设置中断禁止位,以阻止其他无法处理的异常嵌套

如果异常发生时处理器处于Thumb状态,则当异常向量地址加载到PC时,处理器将自动切换到ARM状态。(www.daowen.com)

ARM处理器对异常的响应过程可以用伪代码描述如下:

异常处理完毕之后,ARM处理器会执行以下几步操作从异常返回:

1)将链接寄存器LR的值减去相应的偏移量后送到PC中。

2)SPSR复制回CPSR中。

3)若在进入异常处理时设置了中断禁止位,要在此清除。

系统运行时异常可能随时发生。为了保证ARM处理器在发生异常时不会出于未知状态,应用程序设计中必须确保对异常的处理。通常是在异常向量表中特定位置放置一条跳转指令,当发生异常时,程序计数器PC的值被强制设置为对应的异常向量地址,跳转到异常处理程序。当异常处理完成之后,返回到主程序继续执行。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈