ARM七种异常类型.docVIP

  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支持六种操作模式: (1) 用户模式(usr):正常的程序执行状态 (2) FIQ模式(fiq): 支持数据传送或通道处理 (3) IRQ模式(irq): 用于通用的中断处理 (4) 管理模式(svc):用于操作系统的保护模式 (5) 异常模式(abt):数据或者指令预取异常时进入 (6) 无定义模式(und):当无定义指令被执行时进入 (7) 软件控制,外部中断,异常处理都可以改变操作模式。大部分的应用程序在用户模式下执行。 其他模式,比如管理模式,在中断、异常服务、或者访问被保护资源时进入。 ARM 的中央寄存器集是16 个用户寄存器R0 – R15。这些寄存器均是32 位宽度,R0 – R12 没有其他特殊功能,寄存器R13 – R15在CPU中有特殊功能。R13被用作栈指针(stack pointer, SP)。R14被称为链接寄存器(link register, LR),当调用一个函数时返回地址被自动保存到链接 寄存器,在函数返回时有效。这使得快速进入和返回“叶”函数(不调用其他函数的函数)成为可 能。如果函数是分支的一部分(即该函数将调用另一个函数),链接寄存器必须入栈(R13)。 R15 是程序计数器(program counter, PC)。有趣的是,许多指令也可以在R13 – R15中执行, 就像它们是标准的用户寄存器。 ARM中断的问题 ARM的七种异常类型 --------- 1?复位异常 2?数据访问中止异常 3?快速中断请求异常 4?一般中断请求 5?预取指令异常 6?软件中断异常 7?未定义异常 ------------------------- 问题: 1?为什么除了进入复位异常模式外,在别的异常处理模式中都允许FIQ中断? 2?数据访问中止异常的优先级?大于?FIQ异常,为什么在数据访问异常处理模式中,还允许?FIQ中断?这样不就成了:在高优先级异常处理中允许低优先级的中断发生?   即使这样,因为FIQ中断的优先级??数据异常中断优先级,也不会进入?FIQ中断处理程序啊,这样不就更没有用处了??ARM体系的各种异常的分析(学习日记)- [ARM7TDMI] 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 /logshtml 1.复位异常 (1)当内核的nRESET信号被拉低时,ARM处理器放弃正在执行的指令,当nRESET信号再次变高时,ARM处理器进行复位操作; (2)系统复位后,进入管理模式对系统进行初始化,复位后,只有PC(0和CPSR(nzcvqIFt_SVC)的值是固定的,另外寄存器的值是随机的。 2.IRQ异常 (1)当CPSR中的相应的中断屏蔽被清除时,内核的nIRQ信号被拉低时可产生IRQ异常; (2)由于ARM处理器的三级流水线结构,当异常发生时,PC的值等于当前执行指令的地址+8(即正确的中断返回地址+4),因此R14保存的值是 中断返回地址+4 ,所以当异常要返回时须执行以下指令: SUBS?? PC,R14_irq,#4???????????? ;PC=R14 - 4 注意:在SUB指令尾部有个S,并且PC是目标寄存器,所以程序返回时CPSR将自动从SPSR寄存器中恢复; (3)将用户模式下的CPSR保存到SPSR_irq中; (4)设置PC为IRQ异常处理程序的中断入口向量地址,在IRQ模式下该向量地址为0 3.FIR异常 (1)当CPSR中的相应F位被清零时,内核的nFIR信号被拉低时可产生FIR异常,FIQ异常是优先级最高的中断; (2)FIQ异常的进入和退出与IRQ异常类似; (3)快速中断模式有8个专用的寄存器,可用来满足寄存器保护的需要,因此从其他模式进入FIQ模式时这些寄存器不用压栈了,提高程序运行的速度,且在中断入口地址的安排上,FIQ处于所有异常入口的最后,这是为了让用户可以从FIQ异常入口处(0x1c)就开始安排中断服务程序,而不需要再次跳转。 4.未定义指令异常 (1)当ARM在对一条未定义指令进行译码时,发现这是一条自己和系统内任何协处理器都无法执行的指令时,就会发生未定义指令异常; (2)由于是在对未定义指令译码时发生异常,所以PC的值等于未定义指令的地址+4(即刚好为中断返回地址),因此R14保存的值是 中断返回地址 ,所以当异常要返回时可执行以下指令: MOVS?? PC,R14_und????????????? 5.中止异常 中止表示当前存储器的访问不能完成,是由外部的ABOUT输入信号引起的异常,分为两类: (1) 预取指中止:由程序存储器引起的中止异常; (2) 数据中止:由数据存储器引起的中止异常; 5.1预取指中止异常 当程序发生预取指中止时,

文档评论(0)

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

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

1亿VIP精品文档

相关文档