DataAbort简单分析

DataAbort中止表示当前存储器访问不能被完成。

有两种类型的中止:
        预取指中止: 发生在指令预取指过程中
        数据中止:  发生在对数据访问时

1.预取指中止

当发生预取指中止时ARM7TDMI-S内核将预取的指令标记为无效但在指令到达流水线的执行阶段时才进入异常,如果指令在流水线中因为发生分支而没有被执行,中止将不会发生。

在处理中止的原因之后不管处于哪种处理器操作状态处理程序都会执行下面的指令

SUBSPC,R14_abt,#4

这个动作恢复了PC和CPSR并重试被中止的指令

2.数据中止

当发生数据中止时根据指令的类型产生不同的动作

●数据转移指令LDR,STR回写到被修改的基址寄存器中止处理程序必须注意这一点

●交还指令SWP中止好像没有被执行过一样中止必须发生在SWP指令进行读访问时

●块数据转移指令LDM,STM完成 当回写被设置时基址寄存器被更新在指示出现中止后。ARM7TDMI-S内核防止所有寄存器被覆盖这意味着ARM7TDMI-S内核总是会保护被中止的LDM指令中的r15(总是最后一个被转移的寄存器)

 

中止的机制使指令分页的虚拟存储器系统能够被实现。在这样一个系统中,处理器允许产生仲裁地址。当某一地址的数据无法访问时,存储器管理单元MMU通知产生了中止,中止处理程序必须找出中止的原因,使请求的数据可以被访问并重新执行被中止的指令。应用程序不必知道可用存储器的数量,也不必知道它的被中止时所处的状态。在修复产生中止的原因后,不管处于哪种处理器操作状态,处理程序都必须执行下面的返回指令 SUBSPC,R14_abt,#8  这个动作恢复了PC和CPSR并重试被中止的指令

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值