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文档。上传文档
查看更多
ARM的中断控制

S3C44b0的中断控制 ????? 中断控制是所示嵌入式系统中不可或缺的一部分。对于不同的处理器,虽然中断控制的原理是基本一致的,但其管理方式往往都有很大的区别。学过51系列单片机的刚开始学ARM人会觉得ARM的中断管理系统很复杂,因为在51中中断向量几乎不用你管。主要是因为在ARM系统中中断源多,且为了实现不同系统对实时性的要求不同而进行多优先级的管理的造成的。 1、ARM7TDMI内核的中断 至于中断的概念这里就说的,下面我来介绍一下ARM7TDMI内核下的中断。 和51单片机只有一种模式不同,ARM7TDMI内核CPU在响应中断后会切换到异常模式下:FIQ中断是进入快中断模式,IRQ中断时进入中断模式(ARM7TDMI内核有7种模式:用户模式,系统模式,快中断模式,中断模式,管理模式,中止模式和未定义模式,其中后5种被称为异常模式,由程序状态寄存器的M4M3M2M1M0这5位来决定,其实ARM7的模式管理的这5位和51单片机状态寄存器的RS1RS0两位的作用相似)。 1.1、中断处理过程 ARM7进入及退出快中断模式和中断模式的过程(中断响应过程)如下: ???? 将下一条指令的地址复制到LR(R14)中(在ARM状态下)。 ???? 将CPSR复制到适当的SPSR(各种模式处CPSR是共用一个的,而SPSR在不同异常模式下是不同的)。 ???? 根据异常将CPSR模式强制设为快中断模式或中断模式。 ???? 强制PC从相关的异常向量处取指。(到此完成进入中断服务程序的动作) ???? 执行异常服务程序。 ???? 将LR中的值减去偏移量后移入PC。ARM状态快中断模式和中断模式下这个偏移量为4,因为LR保存的是由于FIQ或IRQ占先面没有被执行的指令的地址。 ???? 将SPSR的值复制回CPSR中。 ???? 清零在入口置位的中断禁止标志。 1.2、异常向量表 ?????? 一旦产生IRQ中断,微控制器会切换到IRQ模式,并且跳转到向量表0x0000018地址处执行程序。而一旦产生FIQ中断,微控制器会切换到FIQ模式,并且跳转到向量表0x000001C地址处执行程序。所示,在0和0x0000001C处必须各有一条跳转指令,分别跳转的IRQ和FIQ中断处理的代码处。在0的一般向量表称为异常向量表,定义如下: ENTRY ??? b ResetHandler????? ;for debug ??? b HandlerUndef???? ;handlerUndef ??? b HandlerSWI?????? ;SWI interrupt handler ??? b HandlerPabort???? ;handlerPAbort ??? b HandlerDabort??? ;handlerDAbort ??? b .??????????????????? ;handlerReserved ??? b HandlerIRQ?????????? ;这里是IRQ中断入口处0b HandlerFIQ?????????? ;这里是FIQ中断入口处0x0000001C ? ResetHandler、HandlerUndef等只是地址标签,是由用户自己在这些异常处理代码的开始处定义的。 2、44b0X的中断 2.1、44b0X的启动时中断的初始化 44B0的初始化程序就是初始化各个关键的寄存器,建立中断向量,然后转移到主函数去执行程序。不过44B0不支持地址映射,所以程序不COPY到RAM种执行。44B0初始化对我们广大初学者来说,比较难理解的是中断的处理和一些少见的操作符号。下面我来一段一段地分析。 2.1.1、44b0的中断子程序地址 就是存放在初始化程序最后的一段: ????????????? ^????? _ISR_STARTADDRESS HandleReset??? #???? 4 HandleUndef?? #???? 4 HandleSWI???? #???? 4 HandlePabort? #???? 4 HandleDabort? #???? 4 HandleReserved????? #???? 4 HandleIRQ????? #???? 4 HandleFIQ????? #???? 4 ? ;Dont use the label IntVectorTable, ;because armasm.exe cannt recognize this label correctly. ;the value is different with an address you think it may be. ;IntVectorTable HandleADC

文档评论(0)

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

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档