ARM7异常处理所涉及寄存器的变化.docxVIP

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

ARM7的异常与异常处理 ARM7 的异常 ??? 在ARM中,异常是一些事件,这些事件能导致正常的程序执行流程被暂时地停止,而进入到该事件对应的处理器异常模式并对该事件进行处理,这个过程称作异常响应。ARM中定义了复位、未定义指令、软中断、预取指终止、预取数终止、irq 以及fiq 等7种异常。 ARM7 的异常处理? ?? ?CPSR:当前程序状态寄存器 (current program status register),就是R16; SPSR : 备份程序状态寄存器; PC: 程序计数器,就是R15; LR: 链接寄存器,就是R14; R13:堆栈指针寄存器;在系统中用处理器作堆栈指针; 当异常发生时,处理器会对异常事件作出相应的响应,主要表现为:处理器转入到ARM状态对应的异常模式,在该异常模式的 SPSR、LR寄存器分别备份了 CPSR、PC的当前数据,重置CPSR和PC。重置CPSR会导致ARM 处理器的状态、模式改变、自动屏蔽fiq/irq异常等;重置PC 显然会改变CPU 的执行流向。 ??? ARM 处理器硬件约定,在处理器寻址空间的0起始位置安排了一个称为异常向量表的特别区域,当异常发生时处理器会到固定的地址单元取指运行,同时处理器还会发生其它一些状态、模式变化. ??? ARM 处理器硬件约定异常发生时,处理器按照异常的种类自动地转移表 2-8 所列特定地址取指执行,例如:发生复位异常时,CPU? 自动转移到0址单元取指执行。发生FIQ异常时,CPU自动转移到0x0000001C 地址单元取指执行。发生IRQ 异常时,CPU自动转移到0x0000 0018 地址单元取指执行。异常处理通常是一段程序,所以在异常向量表中各单元行存放的是一条条转移指令,实现到各异常处理代码的链接。详见程序清单? 在不含有存储器管理部件(MMU)的ARM7中,‘预取指中止’异常和‘取数中止异常通常由程序跑飞引起。? 处理器响应异常时,硬件自动完成异常响应对应的操作。 如下: ?当异常产生时,ARM 硬件自动完成如图操作; 步骤: ?图中的SPSR_x、LR_x 是指处理器模式x下的SPRP、LR寄存器。 ??? 首先 ARM硬件自动备份了异常返回现场到处理器模式x 相关寄存器;之后依据异常类型改写CPSR中的控制位,用于屏蔽IRQ、FIQ 和处理器模式控制;最后根据不同的异常,重置 PC(例如:FIQ 异常,PC 重置为 0x1C,IRQ 异常,PC 重置为0x18)。 ? 特别提示:处理器总是按照PC 指向进行取指、执行!ARM7TDMI 体系中PC 的重置会导致处理器指令三级流水线的清空与重建。 异常的优先级: ??? 所谓的优先级是要解决当多个异常同时发生时处理器如何响应的问题,系统约定总是最高优先级的异常优先获得响应。在ARM 体系结构中,硬件约定了各个异常的优先级顺序 异常的返回: ??? 当异常处理程序结束时,异常处理程序必须返回到发生异常所中断程序的断点处继续执行。由于ARM 处理器流水线的存在,在进入异常处理时LR 中的值未必就是目标返回点!因为是三级流水,所以LR的值减4才为切换回来的点!!! 当前程序状态寄存器(CPSR)-R16 ARM体系结构包含一个当前程序状态寄存器(CPSR )和五个存储程序状态寄存器(SPSR)。???? ? ?CPSR以寄存器标志位的方式,标示了处理器对前一条指令执行的状态,CPSR的状态标志在本条指令执行期间可被查阅、使用。ARM 处理器响应异常时,处理器将暂停当前的程序运行而转移到特定的‘异常处理程序’,SPSR用来备份原来正在运行程序被打断时的CPSR,这样异常处理结束时,可以方便地使用SPSR恢复CPSR。 ??? 32bit 长度的 CPSR 寄存器,其中最低 8bit 的用作控制位,最高4bit? 的用作运算状态标志位,其它的24bit 保留,不可随意改写。如下所示: 程序计数器(PC?)--R15 冯 ·诺伊曼计算机体系结构的主要内容之一就是“程序预存储,计算机自动执行”!处理器要执行的程序(指令序列)都是以二进制代码序列方式预存储在计算机的存储器中,处理器将这些代码逐条地取到处理器中再译码、执行,以完成整个程序的执行。为了保证程序能够连续地执行下去,CPU必须具有某些手段来确定下一条取指指令的地址。程序计数器(PC )正是起到这种作用,所以通常又称之为‘指令计数器’。CPU总是按照PC的指向对指令序列进行取指、译码和执行,也就是说,最终是PC 决定了程序运行流向。故而,程序计数器(PC )属于特别功能寄存器范畴,不能自由地用于存储其他运算数据。 ??? 在程序开始执行前,

文档评论(0)

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

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

1亿VIP精品文档

相关文档