ARM内核的异常处理.pptVIP

  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文档。上传文档
查看更多
ARM内核的异常处理

互动教学 ——ARM内核的异常处理 1.ARM内核中异常的含义是什么? 异常是指程序执行过程中出现的意外事件 2.ARM内核有几种异常,分别是什么,它们在什么条件下发生? 3.异常处理的一般流程包含哪些主要步骤? 异常响应的过程(复位异常除外) 出现xxx异常时, ARM内核尽可能执行完当前正在执行的指令,然后依次自动实现以下响应过程 将当前CPSR的内容拷贝到SPSR_xxx 将响应异常时的PC-4保存到LR_xxx,若出现异常时处理器为Thumb状态,则将对LR_xxx进行修正(见后) 设置CPSR中的相应位 强制处理器进入ARM工作状态 设置CPSR的M[4:0],使处理器进入相应的工作模式 设置中断禁止位I=1,禁止IRQ中断 若是复位或FIQ异常,还将设置中断禁止位F=1,禁止FIQ中断 将异常向量地址强制赋给PC,跳转执行异常处理程序 4.不同类型异常发生时,内核如何响应,分别跳转到什么地址执行程序? 内核响应过程:当异常发生时,处理器会把PC设置为一个特定的存储器地址,这一地址放在被称为向量表的特定地址范围内。向量表的入口是一些跳转指令,跳转到专门处理某个异常或中断的子程序。 5.什么是异常向量表,表中一般存放何种指令?为什么?为什么把FIQ中断异常入口地址放在异常向量表的顶端? 异常向量表 一般从0地址开始 某些内核(如ARM9/10,ARM720T)异常向量表可以设置为从其它非0地址(如0xFFFF0000)开始 每个异常向量占4个字节,通常用于存放转移指令,以实现从异常向量地址到异常处理程序地址的跳转 FIQ中断向量被安排在向量表的顶端,便于对FIQ中断的快速响应(不需跳转) 6.在Thumb工作状态下响应异常,系统将进入何种工作状态?异常处理过程中能否进入Thumb状态? 处理器响应异常时自动进入ARM状态,且必须用一条ARM指令来实现从异常的返回,但在异常处理过程中可以切换到Thumb状态 7.异常处理为什么要保护现场和恢复现场?保护现场主要保护哪些内容?保护现场一般采用什么方法? 为了在异常处理完毕能恢复原来的程序执行状态,响应异常时需保护被中断程序的的执行现场,异常处理完毕应该恢复被中断程序的执行现场 内容:将当前CPSR的内容拷贝到SPSR_xxx 将响应异常时的PC-4保存到LR_xxx,若出现异常时处理器为Thumb状态,则将对LR_xxx进行修正 方法:将需要保护的通用寄存器内容压入堆栈 有时还须将某些影子寄存器的内容入栈(如中断嵌套) 8.不同类型异常的返回地址为什么不同,分别如何确定?为什么原工作状态(ARM或Thumb)不同,需要采用不同的返回地址? 异常返回地址的确定 复位异常处理程序不需要返回 除复位外的其它异常的实际返回地址与异常的类型有关 SWI和未定义指令异常 指令执行导致异常 返回地址=LR(SWI或未定义指令的下一条指令) FIQ、IRQ和预取指令中止异常 返回地址=LR-4 数据中止异常 正在执行的指令无法执行完成 返回地址=LR-8(重新执行未能执行完的指令) 若响应异常时为Thumb状态,内核将自动修正LR,返回地址仍按上述方法计算 9.从异常返回需要执行哪两个基本操作?为什么这两个操作不能用两条指令来分别实现?ARM采用何种机制来实现用一条指令同时完成这两个操作? 基本操作:1.将当前SPSR_xxx 的内容拷贝到CPSR 2.根据异常类型和LR_xxx 的返回地址恢复PC 原因:若先恢复CPSR,则系统工作模式恢复为进入异常前的模式, LR_xxx将无法再访问 若先恢复PC,则在此之后的恢复CPSR的指令将不会被执行 10.各种异常的优先级如何排序?是否允许异常的嵌套? 异常的优先级 各异常的优先级顺序 复位RESET (1,最高优先级) 数据中止异常 (2) 快速中断请求FIQ (3) 外部中断请求IRQ (4) 预取指中止异常 (5) 软中断SWI (6) 未定义指令 (7,最低优先级) 各异常同时发生时,将优先处理优先级较高的异常 SWI和未定义指令异常不可能同时发生 1.进入某种异常模式后,出现未屏蔽的异常仍然将按其优先级顺序进行响应,即异常嵌套 2.一般应避免出现异常嵌套情况,若无特殊处理,同类型异常的自嵌套或几个异常的循环嵌套会导致程序死锁 一些特殊的嵌套例子: 如果数据中止异常和FIQ同时发生,将先响应前者,但由于响应数据 中止异常不会屏蔽FIQ,则进入数据中止异常处理程序后,立即响应

文档评论(0)

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

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

1亿VIP精品文档

相关文档