ARM的中断控制.doc_第1页
ARM的中断控制.doc_第2页
ARM的中断控制.doc_第3页
ARM的中断控制.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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地址处执行程序。所示,在0x00000080处和0x0000001C处必须各有一条跳转指令,分别跳转的IRQ和FIQ中断处理的代码处。在0x00000000处的一般向量表称为异常向量表,定义如下:ENTRY b ResetHandler ;for debug b HandlerUndef ;handlerUndef b HandlerSWI ;SWI interrupt handler b HandlerPabort ;handlerPAbort b HandlerDabort ;handlerDAbort b . ;handlerReserved b HandlerIRQ ;这里是IRQ中断入口处0x00000018b HandlerFIQ ;这里是FIQ中断入口处0x0000001CResetHandler、HandlerUndef等只是地址标签,是由用户自己在这些异常处理代码的开始处定义的。2、44b0X的中断2.1、44b0X的启动时中断的初始化44B0的初始化程序就是初始化各个关键的寄存器,建立中断向量,然后转移到主函数去执行程序。不过44B0不支持地址映射,所以程序不COPY到RAM种执行。44B0初始化对我们广大初学者来说,比较难理解的是中断的处理和一些少见的操作符号。下面我来一段一段地分析。2.1.1、44b0的中断子程序地址就是存放在初始化程序最后的一段: _ISR_STARTADDRESSHandleReset # 4HandleUndef # 4HandleSWI # 4HandlePabort # 4HandleDabort # 4HandleReserved # 4HandleIRQ # 4HandleFIQ # 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.;IntVectorTableHandleADC # 4HandleRTC # 4HandleUTXD1 # 4HandleUTXD0 # 4HandleSIO # 4 HandleEINT3 # 4HandleEINT2 # 4HandleEINT1 # 4HandleEINT0 # 4 ;0xc1(c7)fff84这段第一行 “”符号表示在RAM区开辟空间。 _ISR_STARTADDRESS 表示在RAM的_ISR_STARTADDRESS处开辟一段空间。这里开辟的空间是用来存放中断服务程序及其他异常处理程序地址的。每个中断或其他异常都开辟4个字节的空间,这是因为RAM区的程序地址要4个字节才能放得下。而中断程序的地址是应用程序在使用这个中断时,将中断服务程序的地址存入这对应的空间内。_ISR_STARTADDRESS一般是定义在RAM的最后一段空间,可以在一些配置文件中找到这个标签,如:Option.inc。2.1.2、IRQ中断 44B0的IRQ中断有两种装断模式 一种是非向量IRQ中断,一种是向量IRQ中断。当有两个中断同时发生时,前者是由软件方式来判断决定先执行那个中断服务,而后者是由硬件逻辑来决定的。非向量IRQ中断的执行过程(1) 中断允许并且外部中断请示产生。(2) PC自动跳转一0x00000018处也就是异常向

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论