第2章 ARM技术与ARM体系结构(2).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嵌入式系统结构与编程》, 邱铁 编著,清华大学出版社,2009,3 第2章 ARM技术与ARM体系结构 内容提要 2.1 ARM体系结构版本与内核 2.2 ARM内核模块 2.3 ARM处理器的工作模式 2.4 ARM内部寄存器 2.5 ARM异常处理 2.6 存储方式与存储器映射机制 2.7 ARM流水线技术分析 2.5 ARM异常处理 异常通常定义为:处理器需要中止指令正常执行的任何情形并转向相应的处理,包括ARM内核产生复位,取指或存储器访问失败,遇到未定义指令,执行软件中断指令,或者出现外部中断等。 大多数异常都对应一个软件的异常处理程序,也就是在异常发生时执行的软件程序。? 2.5.1 异常入口 ARM处理器的异常分为数据中止、快速中断请求、普通中断请求、预取指中止、软件中断、复位及未定义指令共7种 。 1.复位具有最高的优先级,是系统启动(或芯片复位)时调用的程序。复位程序对异常处理程序和系统进行初始化(包括配置储存器和Cache)。同时要保证在IRQ和FIQ中断允许之前初始化外部中断源,避免在没有设置好相应的处理程序前产生中断。还要设置好各种处理器模式的堆栈指针。 2.引起未定义指令异常: ARM 试图执行一条真正的未定义指令; ARM 遇到一条协处理器指令,可是系统中的协处理器硬件并不存在; ARM 遇到一条协处理器指令,系统中协处理器硬件也存在,可是ARM 不是在超级用户模式。 解决方法: 在处理程序中执行软协处理器仿真; 禁止在非超级用户模式下操作; 报告错误并退出。 3.数据中止异常 指示访问了无效的存储器地址,或者当前代码没有正确的数据访问权限。 4.预取指中止 由于处理器预取的指令地址不存在,或者地址无法访问,当被预取的指令执行时,发生预取指中止异常。 5. FIQ中断的优先级比IRQ中断的优先级要高,且内核进入FIQ处理程序时,把FIQ和IRQ都禁止 6.软中断(SWI)和未定义指令异常的优先级最低,共享同一优先级,两者不可能同时出现。 异常处理 当异常产生时, ARM core: 拷贝 CPSR 到 SPSR_mode 设置适当的 CPSR 位: 改变处理器状态进入 ARM 状态 改变处理器模式进入相应的异常模式 设置中断禁止位禁止相应中断 (如果需要) 保存返回地址到 LR_mode 设置 PC 位相应的异常向量 返回时, 异常处理需要: 从 SPSR_mode恢复CPSR 从LR_mode恢复PC Note:这些操作只能在 ARM 态执行. 向量表指令 ARM or Thumb? 异常处理中的寄存器使用 与异常发生相关的模式改变意味着所调用的异常处理程序至少要访问: 私有的 SP_mode (stack pointer ). 私有的 LR_mode (link register). 私有的 SPSR_mode (saved program status register ). 在 FIQ异常处理中, 另有5个私有的通用寄存器 (r8_fiq to r12_fiq). 其它的寄存器是所有模式公用的. 异常处理程序必须确保其他的寄存器在退出前恢复到原来的状态 这可以通过将任何正在使用的寄存器的内容保存在堆栈中,并在返回前恢复来实现 任何所需寄存器的初始化要有应用程序的起始代码来完成 2.5.2 异常产生过程与返回 外中断处理 FIQ vs IRQ 中断重新使能的问题 软中断 未定义指令 预取异常 数据异常 异常返回地址 外中断处理 ARM 有两级外部中断 FIQ,IRQ. 可是大多数的基于ARM 的系统有 2个的中断源! 因此需要一个中断控制器(通常是地址映射的)来控制中断是怎样传递给ARM的。 在许多系统中,一些中断的优先级比其它中断的优先级高,他们要抢先任何正在处理的低优先级中断。 Note: 通常中断处理程序总是应该包含清除中断源的代码。 FIQ vs IRQ FIQ 和 IRQ 提供了非常基本的优先级级别。 在下边两种情况下,FIQs有高于IRQs的优先级: 当多个中断产生时,FIQ高于IRQ. 处理 FIQ时禁止 IRQs. IRQs 将不会被响应直到 FIQ处理完成. FIQs 的设计使中断处理尽可能的快. FIQ 向量位于中断向量表的最末. 为了使中断处理程序可从中断向量处连续执行 FIQ 模式有5个额外的私有寄存器 (r8-r12) 中断处理必须保护其使用的非私有寄存器 可以有多个FIQ中断源,但是考虑到系统性能应避免嵌套。 中断重新使能的问题 当另外一个中断抢先当前中断时,如果程序员使用下边特殊的步骤来防止系统状态丢失 ,中断是可以嵌套: 保存IRQ状态下的LR( LR_irq ) 保存

文档评论(0)

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

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

1亿VIP精品文档

相关文档