第7讲_ARM中断机制_第1页
第7讲_ARM中断机制_第2页
第7讲_ARM中断机制_第3页
第7讲_ARM中断机制_第4页
第7讲_ARM中断机制_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、2q 只要正常的程序流被暂时中止,处理器就进入只要正常的程序流被暂时中止,处理器就进入异常模式异常模式。例如响应一个来自外设的中断。在处理异常之前,例如响应一个来自外设的中断。在处理异常之前,ARMARM内内核保存当前的处理器状态(核保存当前的处理器状态(CPSR-SPSRCPSR-SPSR),这样当处理程),这样当处理程序结束时可以恢复执行原来的程序(序结束时可以恢复执行原来的程序(SPSR-CPSRSPSR-CPSR)。)。q 如果同时发生两个或更多异常,那么将按照一定的顺序来如果同时发生两个或更多异常,那么将按照一定的顺序来处理异常,也即处理异常,也即“异常优先级异常优先级”的处理。的处

2、理。 3异常类型异常类型返回指令返回指令之前的状态之前的状态备注备注ARM R14_xThumb R14_xBLMOV PC,R14PC+4PC+2 此处此处PC为为BL,SWI,为定义的指,为定义的指令取指或预取指中令取指或预取指中止指令的地址止指令的地址软件中断软件中断 SWIMOVS PC,R14_svcPC+4PC+2未定义的指令未定义的指令MOVS PC,R14_undPC+4PC+2预取指中止预取指中止SUBS PC,R14_abt,#4PC+4PC+4快中断快中断SUBS PC,R14_fiq,#4PC+4PC+4此处此处PC为由于为由于FIQ或或IRQ占先而占先而没有被执行的指

3、令没有被执行的指令的地址的地址中断中断SUBS PC,R14_irq,#4PC+4PC+4数据中止数据中止SUBS PC,R14_abt,#8PC+8PC+8此处此处PC为产生数为产生数据中止的装载或保据中止的装载或保存指令的地址。存指令的地址。 复位复位无无复位时保存在复位时保存在R14_svc中的值不中的值不可预知。可预知。 注意:注意:“MOVS PC,R14_svc”是指在管理模式执行是指在管理模式执行MOVS PC,R14指令。指令。“MOVS PC,R14_und”、“SUBS PC,R14_abt,#4”等指令也是类似的。等指令也是类似的。异常入口异常入口/ /出口出口4 如果异

4、常处理程序已经把返回地址拷贝到堆栈,如果异常处理程序已经把返回地址拷贝到堆栈,那么可以使用一条多寄存器传送指令来恢复用户寄那么可以使用一条多寄存器传送指令来恢复用户寄存器并实现返回。存器并实现返回。SUB LR,LR,#4;计算返回地址计算返回地址STMFD SP!,R0-R3,LR;保存使用到的寄存器保存使用到的寄存器. . .LDMFD SP!,R0-R3,PC;中断返回中断返回中断处理代码的开始部分和退出部分中断处理代码的开始部分和退出部分异常入口异常入口/ /出口出口5 如果异常处理程序已经把返回地址拷贝到堆栈,如果异常处理程序已经把返回地址拷贝到堆栈,那么可以使用一条多寄存器传送指令

5、来恢复用户寄那么可以使用一条多寄存器传送指令来恢复用户寄存器并实现返回。存器并实现返回。SUB LR,LR,#4;计算返回地址计算返回地址STMFD SP!,R0-R3,LR;保存使用到的寄存器保存使用到的寄存器. . .LDMFD SP!,R0-R3,PC;中断返回中断返回中断处理代码的开始部分和退出部分中断处理代码的开始部分和退出部分异常入口异常入口/ /出口出口注意:中断返回指令的寄存器列表(其中必须包括PC)后的“”符号表示这是一条特殊形式的指令。这条指令在从存储器中装载PC的同时(PC是最后恢复的),CPSR也得到恢复。这里使用的堆栈指针SP(R13)是属于异常模式的寄存器,每个异常

6、模式有自己的堆栈指针。这个堆栈指针应必须在系统启动时初始化。 6在异常发生后,在异常发生后,ARM9ARM9内核会作以下工作:内核会作以下工作:1 1、在适当的、在适当的LRLR中保存下一条指令的地址,当异常中保存下一条指令的地址,当异常入口来自:入口来自:ARMARM状态,那么状态,那么ARMARM内核将当前指令地址加内核将当前指令地址加4 4或加或加8 8复制(取决于异常的类型)到复制(取决于异常的类型)到LRLR中;中;为为ThumbThumb状态,那么状态,那么ARMARM内核将当前指令地内核将当前指令地址加址加2 2、4 4或加或加8 8 (取决于异常的类型)复制到(取决于异常的类型

7、)复制到LRLR中;异常处理器程序不必确定状态。中;异常处理器程序不必确定状态。进入异常进入异常7在异常发生后,在异常发生后,ARM9ARM9内核会作以下工作:内核会作以下工作:进入异常进入异常2.2.将将CPSRCPSR复制到适当的复制到适当的SPSRSPSR中;中;3. 3. 将将CPSRCPSR模式位强制设置为与异常类型相对应的模式位强制设置为与异常类型相对应的值;值;4.4.强制强制PCPC从相关的异常向量处取指。从相关的异常向量处取指。 ARM9 ARM9内核在中断异常时内核在中断异常时置位置位中断禁止标志中断禁止标志,这样可以防止不受控制的异常嵌套。这样可以防止不受控制的异常嵌套。

8、【注注】异常总是在异常总是在ARMARM状态中进行处理。当处理器状态中进行处理。当处理器处于处于ThumbThumb状态时发生了异常,在异常向量地址装状态时发生了异常,在异常向量地址装入入PCPC时,会自动切换到时,会自动切换到ARMARM状态。状态。8程序AIRQ服务程序系统模式IRQ模式程序寄存器组1. 1. 程序在系统模式下运行程序在系统模式下运行用户程序,假定当前处理用户程序,假定当前处理器状态为器状态为ThumbThumb状态、允状态、允许许IRQIRQ中断;中断;2. 2. 用户程序运行时发生用户程序运行时发生IRQIRQ中断,硬件完成以下中断,硬件完成以下动作:动作:LR_sys

9、SPSR_irqLR_irqLRPCCPSRSPSRSYS1?0. . .? ? ? ?MODTFI. . .N Z C V置位置位I I位(禁止位(禁止IRQIRQ中断)中断)清零清零T T位(进入位(进入ARMARM状态)状态)设置设置MODMOD位,切换处理器位,切换处理器模式至模式至IRQIRQ模式模式将下一条指令的地址存入将下一条指令的地址存入IRQIRQ模式的模式的LRLR寄存器寄存器将将CPSRCPSR寄存器内容存入寄存器内容存入IRQIRQ模式的模式的SPSRSPSR寄存器寄存器将跳转地址存入将跳转地址存入PCPC,实,实现跳转现跳转IRQ0?1. . .? ? ? ?Back

10、AddrJumpAddrJumpSYS1?0. . .?“?”表示对该位不关心表示对该位不关心进入异常进入异常9退出异常退出异常当异常结束时,异常处理程序必须:当异常结束时,异常处理程序必须:1 1)将)将LRLR( R14 R14 )中的值减去偏移量后存入)中的值减去偏移量后存入PCPC,偏,偏移量根据异常的类型而有所不同;移量根据异常的类型而有所不同;2 2)将)将SPSRSPSR的值复制回的值复制回CPSRCPSR;3 3)清零在入口置位的中断禁止标志。)清零在入口置位的中断禁止标志。【注注】恢复恢复CPSRCPSR的动作会将的动作会将T T、F F和和I I位自动恢复为位自动恢复为异常

11、发生前的值。异常发生前的值。10退出异常退出异常在异常处理结束后,异常在异常处理结束后,异常处理程序完成以下动作:处理程序完成以下动作:程序AIRQ服务程序系统模式IRQ模式程序寄存器组LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0. . .? ? ? ?MODTFI. . .N Z C V将将SPSRSPSR寄存器的值复制回寄存器的值复制回CPSRCPSR寄存器;寄存器;将将LRLR寄存的值减去一个常寄存的值减去一个常量后复制到量后复制到PCPC寄存器,跳寄存器,跳转到被中断的用户程序。转到被中断的用户程序。IRQ0?1. . .? ? ? ?BackAddrJ

12、umpAddrreturnSYS1?0. . .?SYS1?0. . .? ? ? ?BackAddr-4Jump“?”表示对该位不关心表示对该位不关心11 快速中断请求(FIQ)适用于对一个突发事件的快速响应,这得益于在ARM状态中,快中断模式有8个专用的寄存器可用来满足寄存器保护的需要(这可以加速上下文切换的速度)。 不管异常入口是来自ARM状态还是Thumb状态,FIQ处理程序都会通过执行下面的指令从中断返回: 在一个特权模式中,可以通过置位CPSR中的F位来禁止FIQ异常。快速中断请求快速中断请求12 中断请求(IRQ)异常是一个由nIRQ输入端的低电平所产生的正常中断(在具体的芯片中

13、,nIRQ由片内外设拉低,nIRQ是内核的一个信号,对用户不可见)。IRQ的优先级低于FIQ。对于FIQ序列它是被屏蔽的。任何时候在一个特权模式下,都可通过置位CPSR中的I 位来禁止IRQ。 不管异常入口是来自ARM状态还是Thumb状态,IRQ处理程序都会通过执行下面的指令从中断返回:中断请求中断请求13 中止(中止(AbortAbort)发生在对存储器的访问不能完)发生在对存储器的访问不能完成时,中止包含两种类型:成时,中止包含两种类型:预取中止预取中止发生在指令预取过程中发生在指令预取过程中数据中止数据中止发生在对数据访问时发生在对数据访问时中止中止14 当发生预取中止时,ARM9内核

14、将预取的指令标记为无效,但在指令到达流水线的执行阶段时才进入异常。如果指令在流水线中因为发生分支而没有被执行,中止将不会发生。 在处理中止的原因之后,不管处于哪种处理器操作状态,处理程序都会执行下面的指令恢复PC和CPSR并重试被中止的指令:中止中止15中止中止 当发生数据中止后,根据产生数据中止的指令当发生数据中止后,根据产生数据中止的指令类型作出不同的处理:类型作出不同的处理: 数据转移指令数据转移指令(LDRLDR、STRSTR)回写到被修改的基址)回写到被修改的基址寄存器。中止处理程序必须注意这一点;寄存器。中止处理程序必须注意这一点; 交换指令交换指令(SWPSWP)中止好像没有被执

15、行过一样)中止好像没有被执行过一样(中止必须发生在(中止必须发生在SWPSWP指令进行读访问时)指令进行读访问时) ; 在修复产生中止的原因后,不管处于哪种处理在修复产生中止的原因后,不管处于哪种处理器操作状态,处理程序都必须执行下面的返回指令,器操作状态,处理程序都必须执行下面的返回指令,重试被中止的指令重试被中止的指令 : 16 使用软件中断使用软件中断(SWI)(SWI)指令可以进入管理模式,指令可以进入管理模式,通常用于通常用于请求一个特定的管理函数请求一个特定的管理函数。SWISWI处理程序处理程序通过执行下面的指令返回:通过执行下面的指令返回: 这个动作恢复了这个动作恢复了PCPC

16、并返回到并返回到SWISWI之后的指令。之后的指令。SWISWI处理程序读取操作码以提取处理程序读取操作码以提取SWISWI函数编号。函数编号。 软件中断软件中断17未定义未定义 当当ARMARM处理器遇到一条自己和系统内任何协处理处理器遇到一条自己和系统内任何协处理器都无法处理的指令时,器都无法处理的指令时,ARMARM内核执行未定义指令陷内核执行未定义指令陷阱。软件可使用这一机制通过模拟未定义的协处理器阱。软件可使用这一机制通过模拟未定义的协处理器指令来指令来扩展扩展ARMARM指令集指令集。 在模拟处理了失败的指令后,陷阱程序执行下面在模拟处理了失败的指令后,陷阱程序执行下面的指令:的指

17、令: 这个动作恢复了这个动作恢复了PCPC并返回到未定义指令之后的并返回到未定义指令之后的指令。指令。 18地址地址异常类型异常类型进入时的模式进入时的模式进入时进入时I的状态的状态进入时进入时F的状态的状态0 x0000 0000复位复位管理管理禁止禁止禁止禁止0 x0000 0004未定义指令未定义指令未定义未定义IF0 x0000 0008软件中断软件中断(SWI)管理管理禁止禁止F0 x0000 000C预取中止预取中止(指令指令)中止中止IF0 x0000 0010数据中止数据中止中止中止IF0 x0000 0014保留保留保留保留0 x0000 0018IRQ中断中断禁止禁止F0

18、x0000 001CFIQ快中断快中断禁止禁止禁止禁止【注注】表中的表中的I I和和F F表示不对该位有影响,保留原来的指。表示不对该位有影响,保留原来的指。 异常向量异常向量19 当多个异常同时发生时,一个固定的优先级系当多个异常同时发生时,一个固定的优先级系统决定它们被处理的顺序:统决定它们被处理的顺序:异常类型异常类型优先级优先级复位复位1(最高优先级)(最高优先级)数据中止数据中止2FIQ3IRQ4预取中止预取中止5未定义指令未定义指令6SWI7(最低优先级)(最低优先级)优先级降低优先级降低异常优先级异常优先级20S3C2410X中断控制器有中断控制器有56个中断源个中断源,对外提,

19、对外提供供24个外中断输入引脚,内部所有设备都有中断个外中断输入引脚,内部所有设备都有中断请求信号,例如请求信号,例如DMA控制器、控制器、UART、IIC等等。等等。S3C2410X的的ARM920T内核有两个中断内核有两个中断,IRQ中断和快速中断中断和快速中断FIQ。中断仲裁:中断仲裁:当中断控制器接收到多个中断请求当中断控制器接收到多个中断请求时,其内的优先级仲裁器裁决后向时,其内的优先级仲裁器裁决后向CPU发出优先发出优先级最高的中断请求信号或快速中断请求信号。级最高的中断请求信号或快速中断请求信号。S3C2410S3C2410中断概述中断概述21S3C2410S3C2410中断结构

20、中断结构主要由主要由中断源中断源和和控制寄存器控制寄存器两大部分构成,其寄存器主要有两大部分构成,其寄存器主要有4种种:模式、屏蔽、优先级、挂起(标志)寄存器等。模式、屏蔽、优先级、挂起(标志)寄存器等。中断源中断源(有子寄存器有子寄存器)子中断源子中断源挂起寄存器挂起寄存器中断源中断源(无子寄存器无子寄存器)子中断源子中断源屏蔽寄存器屏蔽寄存器中断屏蔽中断屏蔽中断模式中断模式优先级仲裁优先级仲裁FIQIRQ中断源挂起中断源挂起中中断断挂挂起起22S3C2410S3C2410中断结构中断结构中断系中断系统有统有6个分个分仲裁器仲裁器和和1个总仲裁器个总仲裁器,每一个仲裁每一个仲裁器可以处理器可

21、以处理6路中断。路中断。23S3C2410S3C2410中断控制器中断控制器Register Address R/W Description Reset Value SRCPND0 x4A000000 R/W 中断标志寄存器中断标志寄存器 0 x00000000 INTMOD 0 x4A000004 R/W 中断模式寄存器中断模式寄存器0 x00000000 INTMSK0 x4A000008 R/W 中断屏蔽寄存器中断屏蔽寄存器0 xFFFFFFFF PRIORITY0 x4A00000C R/W 中断优先级寄存器中断优先级寄存器0 x7FINTPND0 x4A000010 R/W 中断服务

22、寄存器中断服务寄存器0 x00000000 INTOFFSET 0 x4A000014R中断偏移寄存器中断偏移寄存器0 x00000000 SUBSRCPND 0 x4A000018 R/W 子源挂起寄存器子源挂起寄存器0 x00000000INTSUBMSK 0 x4A00001C R/W 中断子源屏蔽寄存器中断子源屏蔽寄存器0 x7FFp 主要使用前主要使用前5个寄存器个寄存器24该寄存器也就是中断标志寄存器该寄存器也就是中断标志寄存器各位:各位: 1:对应中断源:对应中断源有有中断请求中断请求0:对应中断源:对应中断源无无中断请求中断请求注意:必须在中断处理程序中对其标志位清注意:必须在

23、中断处理程序中对其标志位清0。位号位号中断源中断源位号位号中断源中断源位号位号中断源中断源位号位号中断源中断源31INT_ADC23INT_UART115INT_UART27nBATT_FLT30INT_RTC22INT_SPI014INT_TIM46保留保留29INT_SPI121INT_SDI13INT_TIM35EINT8_2328INT_UART020INT_DMA312INT_TIM24EINT4_727INT_IIC19INT_DMA211INT_TIM13EINT326INT_USBH18INT_DMA110INT_TIM02EINT225INT_USBD17INT_DMA09I

24、NT_WDT1EINT124保留保留16INT_LCD8INT_TICK0EINT0SRCPND-中断源挂起(标志)寄存器中断源挂起(标志)寄存器25该寄存器是设置各中断源是该寄存器是设置各中断源是FIQ中断还是中断还是IRQ中断中断各位:各位: 1:对应中断源设为:对应中断源设为FIQ中断中断模式模式0:对应中断源设为:对应中断源设为IRQ中断中断模式模式INTMOD-中断模式寄存器中断模式寄存器位号位号中断源中断源位号位号中断源中断源位号位号中断源中断源位号位号中断源中断源31INT_ADC23INT_UART115INT_UART27nBATT_FLT30INT_RTC22INT_SPI

25、014INT_TIM46保留保留29INT_SPI121INT_SDI13INT_TIM35EINT8_2328INT_UART020INT_DMA312INT_TIM24EINT4_727INT_IIC19INT_DMA211INT_TIM13EINT326INT_USBH18INT_DMA110INT_TIM02EINT225INT_USBD17INT_DMA09INT_WDT1EINT124保留保留16INT_LCD8INT_TICK0EINT026位号位号中断源中断源位号位号中断源中断源位号位号中断源中断源位号位号中断源中断源31INT_ADC23INT_UART115INT_UART

26、27nBATT_FLT30INT_RTC22INT_SPI014INT_TIM46保留保留29INT_SPI121INT_SDI13INT_TIM35EINT8_2328INT_UART020INT_DMA312INT_TIM24EINT4_727INT_IIC19INT_DMA211INT_TIM13EINT326INT_USBH18INT_DMA110INT_TIM02EINT225INT_USBD17INT_DMA09INT_WDT1EINT124保留保留16INT_LCD8INT_TICK0EINT0INTMSK-中断屏蔽寄存器中断屏蔽寄存器各位:各位: 1:屏蔽对应中断源:屏蔽对应中断源0:开放对应中断源:开放对应中断源27PRIORITY-中断优先级寄存器中断优先级寄存器ARB_SELn-n组优先级顺序控制位组优先级顺序控制位00:REQ0, 1, 2, 3, 4, 5 01:REQ0, 2, 3, 4, 1, 510

温馨提示

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

评论

0/150

提交评论