位置:51电子网 » 技术资料 » 嵌入式系统

ARM异常的响应及返回

发布时间:2008/12/22 0:00:00 访问次数:1240

  1.对异常的响应

  当一个异常出现以后,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状态。

  arm微处理器对异常的响应过程用伪码可以描述为:

  2,从异常返回

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

  (1)将连接寄存器lr的值减去相应的偏移量后送到pc中。

  (2)将spsr复制回cpsr中。

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

  可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。



  1.对异常的响应

  当一个异常出现以后,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状态。

  arm微处理器对异常的响应过程用伪码可以描述为:

  2,从异常返回

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

  (1)将连接寄存器lr的值减去相应的偏移量后送到pc中。

  (2)将spsr复制回cpsr中。

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

  可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。



上一篇:FIQ异常的描述

上一篇:ARM异常类型

相关IC型号

热门点击

 

推荐技术资料

DFRobot—玩的就是
    如果说新车间的特点是“灵动”,FQPF12N60C那么... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!