ARM异常中断以及对ARM异常返回地址的分析.pdfVIP

ARM异常中断以及对ARM异常返回地址的分析.pdf

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARM异常中断以及对ARM异常返回地址的分析.pdf

1、ARM7异常的分类 异常类型 具体含义 复位(Reset) 处理器的复位电平有效时,产生复位异常 未定义指令 当ARM处理器或协处理器遇到不能处理的指令时,产生未定义的指令异 (Undefined) 常,可使用该异常进行软件仿真 软件中断 该异常由执行SWI指令产生,可用于用户模式下的程序调用特权操作指 (SWI) 令。可使用该异常机制实现系统功能调用。 指令预取中止 处理器试图去执行一条被标记为预取无效的指令时,将产生指令预取中 (PrefetchAbort) 止异常 数据中止 它由Load/Store 产生,若处理器数据访问指令的地址不存在,或者是地 (DataAbort) 址不允许当前指令访问时,产生数据中止异常 外部中断请求 当处理器的外部中断请求引脚有效,且CPSR 中的I位为0时,产生IRQ (IRQ) 异常。系统的外设可通过该异常请求中断服务。 快速中断请求 当处理器的快速中断请求引脚有效,且CPSR 中的F 位为0时,产生FIQ (FIQ) 异常。 2、各异常分析 举个小例子,下面是一段ARM汇编代码: (后面的返回地址分析中将会用到此图) 地址 指令 0x3000 MOV r3,#1 0x3004 MOV r0,#0 0x3008 MOV r1,#1 0x300C MOV r2,#2 2、各异常发生时处理器的动作以及返回地址的计算 复位异常: R14_svc = UNPREDICTABLE value SPSR_svc = UNPREDICTABLE value if high vectors PC=0xFFFF0000 Else PC=0 复位异常是没有返回地址的,所以R14,SPSR 寄存器中的值是不确定的,复位后程序从 0者是0xFFFF0000处开始执行。 未定义指令异常: 发生原因: 当ARM 处理器执行协处理器指令时,需等待外部协处理器响应后才 能够执行指令,如果没有协处理器响应,未定义指令异常中断出现。 (If the ARM processor executes a coprocessor instruction, it waits for any external coprocessor to acknowledge that it can execute the instruction. If no coprocessor responds, an Undefined Instruction exception occurs) // 摘自 ARMArcitecture Reference Manual(1) P57 处理器动作伪代码: R14_und = address ofnextinstruction afterthe Undefined instruction . SPSR_und = CPSR …. …. Ifhigh vectorsconfigured then PC=0xffff0004; Else PC=0 返回地址: MOV PC,R14 返回地址分析:假设在执行地址为0x3000处的指令时,由于ARM7 是三级流 水线结构,所以此时PC 的值实际上为0x3000+8=0x3008,而当进入异常时ARM7 处理器将 R14_und 中的值保存为 address of next instruction after the Undefined instruction ,即 R14_und=0x3004,

您可能关注的文档

文档评论(0)

docinpfd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5212202040000002

1亿VIP精品文档

相关文档