嵌入式-冯梦川分析.ppt

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式-冯梦川分析

ARM的中断(异常)及优先级 1.ARM中断的种类 1)普通中断 2)快中断 3)复位中断 4) 预取指令中止异常 5)数据中止异常 6)未定义指令异常 2.1普通中断和快中断 ARM体系结构有2个外部设备请求输入端,即IRQ和FIQ。而IRQ叫普通中断,FIQ叫快中断,比IRQ响应快。 2.1.1普通中断 普通中断即IRQ中断,IRQ需要进行入栈和出栈操作(是为了执行完中断后返回)以及还要进行2次跳转才能进入中断服务函数,这都增加了进入中断服务函数的时间 2.1.2快中断 快中断即FIQ中断,为了提高中断的反应时间,ARM加入了快中断机制。(1).专门为FIQ设置了一个FIQ模式,并为这个模式配置了较多的寄存器,从而使中断服务程序有足够的寄存器使用,避免因寄存器冲突而必须做现场保护工作及恢复工作; (2). 把FIQ的中断向量放在中断向量表末尾0x0000001C处,中断发生只需一次跳转就可以执行中断服务程序,减少延时 2.2复位中断 (1)一种是系统初始运行时的正常上电 (2)一种是有程序引起的复位(看门狗) 2.3预取指令中止 由程序存储器引起的中止异常叫做预取指中止异常。 当程序发生预取指令中止时,ARM内核将预取的指令标记为无效,但在指令到达流水线指令阶段时才进入异常,因此当前PC的值为当前执行指令的地址+8(正确的中断返回地址+4),因此R14保存的值是中断返回地址+4,所以当修复了产生中止的原因后,不管在什么操作状态,处理器执行 SUBS PC,R14,#4;PC=R14-4 ?预取指令异常。ARM CPU根据一个地址预取指令,发现地址取不出数据或者无法访问,就会触发预取指异常。? ?? 一般是B(执行跳转分支指令)触发 2.4数据中止异常 由数据存储器引起的中止异常叫做数据中止异常。 ARM7TDMI内核不具有MMU,所以不应该发生中止异常(数据中止异常),如果发生异常,就是程序写错了。 2.5未定义指令异常 由于ARM是32位指令系统,理论上可以有2的32次个指令,当处理器读取一个未定义的指令时,处理器的指令译码器会先请求协处理器来解释这条指令,如果协处理器没有这条指令,或者系统中根本没有配置协处理器,则指令译码器将向处理器发出一个未定义指令异常。在实际中经常用来模拟某一种硬件的功能,或自定义一些指令来完成一些特殊功能。 ARM遇到一个协处理器指令,但这个协处理器在系统中并不存在 ARM遇到一个协处理器指令,这个协处理器在系统中存在,但ARM运行于非特权模式,于是拒绝这条指令 3.优先级 由于FIQ(3)的优先级比IRQ(4)高,数字越小优先级越高,因此当2个中断同时发生时间,会优先响应FIQ中断,当2个中断的优先级一样时间,就不会同时发生,比如未定义异常和SWI异常,优先级一样为6,而优先级最高的为复位中断(1),并且上图中的优先级是系统固定分配的,在ARM的CPSR中可以通过I位和F位来禁止或开放某个异常。

文档评论(0)

33qwer + 关注
内容提供者

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

1亿VIP精品文档

相关文档