第2讲ARM体系结构报告.ppt

  1. 1、本文档共82页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 3.8 ARM体系的异常 复位异常 当nRESET信号被拉低时,ARM处理器放弃正在执行的指令,等到nRESET信号再次变高时,处理器执行以下操作: 强制M[4:0]变为b10011,系统进入管理模式; 将CPSR中的标志位I和F置位,IRQ与FIQ中断被禁止; 将CPSR中的标志位T清零,处理器处于ARM状态; 强制PC从地址0x00开始对下一条指令进行取指; 返回到ARM状态并恢复执行。 * 3.8 ARM体系的异常 中断请求异常 只有当CPSR中相应的中断屏蔽位被清除时,才可能发生IRQ异常,中断请求(IRQ)异常由一个nIRQ输入端的低电平所产生的正常中断。 注:中断异常产生时,中断异常模式下的R14保存的是PC的值。 取指 译码 执行 取指 译码 执行 取指 译码 执行 周期4 周期5 周期1 周期2 周期3 PC-8 指令1 指令2 指令3 PC-4 PC 中断发生周期 指令1的执行不会中断; 异常程序结束时返回到指令2; 进入中断服务程序时,指令3地址被保存在R14中。 * 程序运行在用户模式下,当一个IRQ异常中断发生时,内核切换到“中断模式”,并自动的做如下处理: 3.8 ARM体系的异常 进入IRQ异常模式 R0~R12 R13_usr R14_usr R15 CPSR - R13_irq R14_irq SPSR_irq USR模式 IRQ模式 2 I=1,T=0,mod=irq 3 异常向量地址0x0018 4 ISR代码将寄存器压栈 5 1 将异常处理程序的返回地址保存到异常模式下的R14(R14_irq)中。 1 用户模式的CPSR被保存到新的IRQ中断异常模式SPSR_irq中。 2 修改CPSR,禁止新的IRQ中断产生,进入ARM状态,设置为IRQ模式。 3 设置IRQ模式下的PC为IRQ异常处理程序的中断入口向量地址0 4 将IRQ中断异常模式的栈顶指针保存到R13_irq中,之后软件处理程序调用中断服务程序为中断源服务。 5 * 从R13_irq中获取IRQ中断异常模式的栈顶指针。 1 3.8 ARM体系的异常 退出IRQ异常模式 R0~R12 R13_usr R14_usr R15 CPSR - R13_irq R14_irq SPSR_irq IRQ模式 USR模式 恢复CPSR 2 R14减4后为返回地址 3 ISR代码将寄存器出栈 1 将SPSR_irq中的内容复制到CPSR。 2 由于流水线的特性,将R14_irq指向的地址减去一个偏移量后存入R15(PC),实现指令为: SUBS PC,R14_irq,#4 3 中断服务程序执行完毕后,系统将通过以下几步软件操作返回用户模式: * 3.8 ARM体系的异常 快速中断请求异常 快速中断请求(FIQ)适用于对一个突发事件的快速响应,这得益于在ARM状态中,快中断模式有8个专用的寄存器可用来满足寄存器保护的需要(这可以加速上下文切换的速度)。 不管异常入口是来自ARM状态还是Thumb状态,FIQ处理程序都会通过执行下面的指令从中断返回: SUBS PC,R14_fiq,#4 在一个特权模式中,可以通过置位CPSR中的F位来禁止FIQ异常。 * 系统模式 FIQ模式 程 序 寄 存 器 组 FIQ中断的例子 “?”表示该位无关 SPSR_fiq PC CPSR SPSR MOD T F I . . . N Z C V SYS 1 0 0 . . . ? ? ? ? R8 ~ R12 R8_fiq ~ R12_fiq LR LR_sys LR_fiq R0~R7 SP_sys SP_fiq Thumb Thumb 指令1 指令2 指令3 BX指令 BX指令 ARM ARM SYS 1 0 0 . ? ? ? ? FIQ 0 1 1 . . . ? ? ? ? BackAddr JumpAddr Jump 1 0 SYS 1 0 0 . . . ? ? ? ? Jump BackAddr-4 Thumb不是一个完整的体系结构,不能指望处理器只执行Thumb指令而不支持ARM指令集。 因此,Thumb指令只需要支持通用功能,必要时可以借助于完善的ARM指令集,比如,所有异常自动进入ARM状态。 在系统模式下运行用户程序,当前处理器处于Thumb状态,执行Thumb指令代码,同时处理器还允许IRQ和FIQ中断。 指令1的在执行过程产

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档