arm中断保护和恢复_ARM中断返回的详细分析

原标题:ARM中断返回的详细分析在ARM体系中,通常有以下3种方式控制程序的执行流程:1、在正常执行过程中,每执行一条ARM指令,程序计数器PC的值加4个字节;每执行一条Thumb指令,程序计数器PC加2个字节。整个过程是顺序执行的;2、跳转 B指令执行跳转操作; BL指令在执行跳转的同时,保存子程序返回地址; BX指令,执行跳转的同时,根据目标地址的最低位,可以将程序状态切换到Thumb状态; ...
摘要由CSDN通过智能技术生成

原标题:ARM中断返回的详细分析

在ARM体系中,通常有以下3种方式控制程序的执行流程:

1、在正常执行过程中,每执行一条ARM指令,程序计数器PC的值加4个字节;每执行一条Thumb指令,程序计数器PC加2个字节。整个过程是顺序执行的;

2、跳转 B指令执行跳转操作; BL指令在执行跳转的同时,保存子程序返回地址; BX指令,执行跳转的同时,根据目标地址的最低位,可以将程序状态切换到Thumb状态; BLX指令执行上述3个操作;

3、当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。在进入异常中断处理程序时,要保存被中断的程序的执行现场,在从异常中断处理程序退出时,要恢复被中断的程序的执行现场。当异常中断处理程序执行完成后,程序返回到发生中断的指令的下一条指令处执行。

异常中断种类、异常中断向量地址和异常中断优先级别见下表:

ARM运行的几种处理器模式如上表所示。其中,应用程序通常运行在用户模式下!

为了说明异常中断执行过程,先了解各处理器模式下的寄存器组,如下表:

重点:ARM处理器对异常中断的响应过程:

(一)、保存当前程序状态寄存器CPSR到对应异常中断的处理器模式下的SPSR中;

(二)、设置当前程序状态寄存器CPSR的处理器模式位M(4:0)为对应的处理器模式,并禁止IRQ中断(设置I位=1);当进入的是FIQ模式时,禁止FIQ中断(设置F位=1);

(三)、将对应异常中断的处理器模式下的LR设置成返回地址;

(四)、将程序计数器PC值,设置成该异常中断向量地址,从而跳转到相应的异常中断处理程序处执行。

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

R14=return Link

SPSR=CPSR

CPSR[4:0]=exception mde number

CPSR[5] = 0 //所有异常均在ARM状态下处理 (本句出自《基于ARM的嵌入式系统开发与实例》P32)

if(==Reset or FIQ )then

CPSR[6]=1 //禁止FIQ中断

CPSR[7] =1 //禁止IRQ中断

PC = exception vetor address

程序将自动跳转到对应异常中断的处理程序中。

上述过程,完全由处理器自动完成,所以,当发生一种异常中断时,寄存器R14 、CPSR、SPSR和PC的值将是上述的结果!结果如下图所示:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值