微处理器系统结构与嵌入式系统-第七章_ARM微处理器编程模型解析.pptVIP

微处理器系统结构与嵌入式系统-第七章_ARM微处理器编程模型解析.ppt

  1. 1、本文档共45页,可阅读全部内容。
  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微处理器编程模型解析

1.异常返回地址的处理与子程序调用类似,都是由硬件自动完成。区别在于有些异常有一个小常量偏移。 2.当发生异常嵌套时,这些异常之间可能会发生冲突。如用户模式下发生IRQ中断嵌套时,R14_irq中低级中断返回主程序的地址将被高级中断的返回地址所覆盖; R14(LR)寄存器与异常处理 R14 R14_irq 用户模式下的程序0 IRQ模式下的程序1 …… 指令m+1 ... 指令m+n 指令m 地址A 地址A 未被破坏 IRQ模式下的程序2 …… return 指令j+1 ... 指令j+k 指令j 地址B 地址B R14_irq 被破坏 return return 1.执行用户模式下的程序0; 2.发生IRQ中断后,硬件将带偏移的返回地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏; 3. IRQ服务程序1执行完后,可将R14_irq寄存器的内容减去偏移量后存入PC,返回之前被中断的程序; 4. 如果在IRQ处理程序中打开IRQ中断,并且再次发生IRQ中断; 5. 硬件将返回地址保存在R14_irq寄存器中,原来保存的返回地址信息将被覆盖,造成错误; 6. 在程序2返回到程序1,然后在返回到用户模式下被中断的程序时,发生错误,将不能正确返回; 解决办法是确保R14的对应版本在发生中断嵌套时不再保存任何有意义的值(将R14入栈),或者切换到其它处理器模式下。 * */95 R15(PC)寄存器的读操作 ARM指令以字为单位,因此R15的最低两位总是为0; R15的值是处理器正在取指的指令地址。因为有流水线,它与当前正在执行指令的地址之间存在一个偏移(对于确定的ARM芯片该值为常量)。 当使用指令STR/STM保存R15时,不同芯片中(可能是三级流水的ARM7或五级流水的ARM9)PC偏移量可能是8或12,因此需事先计算出该芯片的PC偏移量。 MOV R0,PC ??? ??? PC PC-4 PC-8 正在执行 正在译码 正在取指 流水线、ARM状态下 指令地址 程序代码 写入R15 的值被当作指令地址,程序将从这个地址处继续执行(相当于执行无条件跳转); 由于ARM指令以字为边界,因此写入R15的值最低两位通常为0b00。具体的规则取决于内核结构的版本: 在V3及以下版本中,写入R15的值的最低两位被忽略,因此跳转地址由指令的实际目标地址(写入R15的值)和0xFFFFFFFC相与得到; 在V4及以上版本中,写入R15的值的最低两位如果不为0,结果将不可预测。 R15(PC)寄存器的写操作 * */95 N Z C V — — I M0 M1 M2 M3 M4 T F — . . . 31 30 29 28 27 26 8 7 6 5 4 3 2 1 0 程序状态寄存器PSR 条件代码标志 保留 控制位 溢出oVerflow 进/借位扩展 Carry 零 Zero 负Negative 禁止IRQ 禁止 FIQ Thumb状态 模式 Mode N Z C V I M0 M1 M2 M3 M4 T F 一般指令带S后缀时,执行结果会影响条件代码标志;但有一些指令的执行总是会影响条件代码标志。 所有ARM指令都可由条件域来指定是否需要执行,而Thumb指令中只有分支指令可按条件执行。 每个异常模式还有SPSR用于保存在异常发生之前的CPSR。CPSR和SPSR可通过特殊指令(MRS/MSR)进行访问。 */95 M[4:0] 模式 可见的Thumb状态寄存器 可见的ARM状态寄存器 10000 用户 R0~R7,SP,LR,PC,CPSR R0~R14,PC, CPSR 10001 快中断 R0~R7,SP_fiq,LR_fiq,PC,CPSR, SPSR_fiq R0~R7,R8_fiq~R14_fiq,PC, CPSR, SPSR_fiq 10010 中断 R0~R7,SP_irq,LR_irq,PC,CPSR, SPSR_fiq R0~R12,R13_irq,R14_irq,PC, CPSR, SPSR_irq 10011 管理 R0~R7,SP_svc,LR_svc,PC,CPSR, SPSR_svc R0~R12,R13_svc,R14_svc, PC,CPSR, SPSR_svc 10111 中止 R0~R7,SP_abt,LR_abt,PC,CPSR, SPSR_abt R0~R12,R13_abt,R14_abt,PC, CPSR, SPSR_abt 11011 未定义 R0~R7,SP_und,LR_und,PC,

文档评论(0)

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

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

1亿VIP精品文档

相关文档