当前位置:首页 > 嵌入式 > 嵌入式硬件

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)若在进入异常处理时设置了中断禁止位,则要在此清除。  可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭