凌阳教育的个人空间 https://blog.eetop.cn/204849 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

ARM的异常中断响应过程

已有 3253 次阅读| 2015-12-4 14:25 |个人分类:嵌入式培训

当发生异常时,除了复位异常立即中止当前指令外,处理器尽量完成当前指令,然后脱离当前的指令处理序列去处理异常。ARM异常处理器对异常中断的响应过程如下:

    CPSR的内存保存到将要执行的异常中断对应的SPSR中,以实现对处理器当前状态、中断屏蔽及各条件标志位的保存。各异常中断模式都有自己相应的物理SPSR寄存器。

    设置当前状态寄存器CPSR中的相应位。

设置CPSR模式控制位CPSR[4:0],,是处理器进入相应的执行模式;

设置中断标志位(CPSR[6]=1),禁止IRQ中断;

当进入ResetFIQ模式时,还要设置中断标志位(CPSR[7]=1),禁止FIQ中断。

    将引起异常指令的下一条指令的地址保存到新的异常工作模式的R14R14_mode中,使异常处理程序执行完后能正确返回原程序。

    给程序计数器强制赋值,是程序从ARM体系中的异常工作模式表中给出的相应的矢量地址开始执行中断处理程序。一般来说,矢量地址处将包含一条指向相应程序的转移指令,从而可跳转到相应的异常中断处理程序处执行异常中断处理程序。

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

R14_<exception_mode>=return link

SPSR_<exception_mode>=CPSR

CPSR[4:0]=exception mode number

CPSR[5]=0

CPSR[6]=1

If<exception-mode>=Reset or FIQ then

CPSR[7]=1

PC=exception vector address

每个异常模式对应有2个寄存器R13_<mode> R14_<mode>,分别保存相应模式下的堆栈指针、返回地址。堆栈指针可用来定义一个存储区域保存其他用户寄存器,这样异常处理程序就可使用这些寄存器。

FIQ模式还有额外的专用寄存器R8_fiqR12_fiq,使用这些寄存器可加快快速中断的处理速度。

凌阳教育,专注嵌入式人才培养13年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网。


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 1

    获赞
  • 3

    评论
  • 3815

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-19 20:33 , Processed in 0.012856 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部