微处理器第7章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文档。上传文档
查看更多
中断异常(IRQ、FIQ) 中断请求(IRQ)是一个由nIRQ引脚信号低电平所产生的普通中断(nIRQ是内核信号,对用户不可见)。IRQ的优先级低于FIQ,对于FIQ异常它是被屏蔽的。在一个特权模式中可通过置位CPSR中的I 位来禁止IRQ。 快速中断请求(FIQ)适用于对一个突发事件的快速响应。ARM状态中FIQ模式多设置了7个分组寄存器(R8_fiq~R14_fiq)可加速上下文切换的速度。在一个特权模式中可通过置位CPSR中的F位来禁止FIQ异常。 * 快速中断请求 快速中断请求(FIQ)适用于对一个突发事件的快速响应,这得益于在ARM状态中,快中断模式有8个专用的寄存器可用来满足寄存器保护的需要(这可以加速上下文切换的速度) 不管异常入口是来自ARM状态还是Thumb状态,FIQ处理程序都会通过执行下面的指令从中断返回: SUBS PC,R14_fiq,#4 在一个特权模式中,可以通过置位CPSR中的F位来禁止FIQ异常 * 中断请求 中断请求(IRQ)异常是一个由nIRQ输入端的低电平所产生的正常中断(在具体的芯片中,nIRQ由片内外设拉低,nIRQ是内核的一个信号,对用户不可见)。IRQ的优先级低于FIQ。对于FIQ序列它是被屏蔽的。任何时候在一个特权模式下,都可通过置位CPSR中的I 位来禁止IRQ 不管异常入口是来自ARM状态还是Thumb状态,IRQ处理程序都会通过执行下面的指令从中断返回: SUBS PC,R14_irq,#4 * 中断延迟 当允许FIQ中断时,最坏情况下FIQ的中断延迟由以下几部分组成,即 ① Tsyncmax(请求通过同步器的最长时间)。Tsyncmax为4个处理器周期 ② Tldm(最长指令的完成时间)。最长指令是加载包括PC在内的所有寄存器的LDM指令。在零等待状态的系统中,Tldm为20个处理器周期 ③ Texc(数据中止异常进入时间)。Texc为3个处理器周期 ④ Tfiq(FIQ进入时间)。Tfiq为2个处理器周期。 总延迟是29个处理器周期。在使用40 MHz处理器时钟的系统中,总延迟超过0.7 ms。当延迟结束时,处理器执行在0x1C处的指令。 对于最大的IRQ延迟,其计算与FIQ的类似。若必须允许FIQ有更高的优先级,那么其结果是,进入IRQ处理程序的延迟时间是随机的。 * 未定义指令异常 当ARM处理器遇到一条自己和系统内任何协处理器都无法处理的指令时,将产生未定义指令陷阱 软件可使用这一机制通过模拟未定义的协处理器指令来扩展ARM指令集。 在模拟处理了失败的指令后,陷阱程序执行下面的指令: MOVS PC,R14_und 这个动作恢复了PC并返回到未定义指令之后的指令 * 软件中断异常(SWI) 执行指令SWI可进入软件中断异常; 该异常使处理器从用户模式进入管理模式,通常用于请求一个特定的管理函数(即调用系统功能函数)。 SWI处理程序通过执行下面的指令返回: MOVS PC,R14_svc 这个动作恢复了PC并返回到SWI之后的指令。 * 异常向量(表) 向量地址 异常类型 进入时模式 进入时I状态 进入时F状态 0x0000 0000 复位 管理 禁止 禁止 0x0000 0004 未定义指令 未定义 I F 0x0000 0008 软件中断(SWI) 管理 禁止 F 0x0000 000C 预取中止(指令) 中止 I F 0x0000 0010 数据中止 中止 I F 0x0000 0014 保留 保留 — — 0x0000 0018 IRQ 中断 禁止 F 0x0000 001C FIQ 快中断 禁止 禁止 注:表中的I和F表示不对该位有影响 异常发生时处理器将PC值强制设置为对应的异常向量; 异常向量处通常只存放一条跳转指令,指向真正的异常处理程序; 异常向量表的后面一般紧跟着存放FIQ的异常处理程序,这样可以减少一次跳转,提高FIQ的响应速度; * * 异常入口/出口汇总 异常类型 返回指令 之前的状态 备注 ARM R14_x Thumb R14_x BL MOV PC,R14 PC+4 PC+2 此处PC为BL,SWI,为定义的指令取指或预取指中止指令的地址 软件中断 SWI MOVS PC,R14_svc PC+4 PC+2 未定义的指令 MOVS PC,R14_und PC+4 PC+2 预取指中止 SUBS PC,R14_abt,#4 PC+4 PC+4 快中断 SUBS PC,R14_fiq,#4 PC+4 PC+4 此处PC为由于FIQ或IRQ占先而没有被执行的指令的地址 中断 SUBS PC,R14_irq,#4 PC+4 PC

文档评论(0)

精品课件 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档