预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共99页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

《嵌入式系统原理与开发》第7章中断、DMA和时间管理引言7.1嵌入式系统中断控制中断控制器概述——几种处理器的中断控制器一览表PC机的中断控制器嵌入式系统中断控制器概述PC和ES的中断控制器之主要差异x86与ARM中断向量表的比较x86处理器的实模式中断向量表起始地址是0号单元地址,每一个中断向量占4字节,总共占空间1KB字节。x86处理器的每一个中断向量就是该中断向量号所对应的中断服务子程序首条指令的逻辑地址。三种嵌入式中断控制器介绍ARM系列处理器有两种中断请求类型: 普通中断请求—IRQ 快速中断请求—FIQIRQ中断请求 InterruptRequest 也叫IRQ异常,属于普通中断请求。 由nIRQ引脚上的低电平触发。 IRQ中断请求的优先级低于FIQ,当FIQ信号进入时,IRQ被暂停执行。FIQ—快速中断请求FIQ由外部的nFIQ引脚上的低电平产生,其电平输入依赖于ISYNC(ARM7TDMI输入信号),能够排除同步或异步的情况。当ISYNC信号为低电平时,IRQ和FIQ被认为是异步的,在中断影响处理器流程之前,会产生一个时钟周期延时以转入同步状态。在特权(非用户)模式下,设置/复位PSR(CPSR和SPSR的统称)的I位和F位,能够禁止/允许CPU响应IRQ和FIQ中断请求。因此为了开发IRQ和FIQ中断响应功能,I位和F位必须被清0,同时INTMSK(中断屏蔽寄存器)的相应位也必须清0。ADS/AXD中的增强型程序状态字(EPSR)S3C44B0X处理器能够处理30个中断源,其中内建的中断控制器可接受26个中断源的中断请求信号。4个外部中断(EINT4/5/6/7)请求是通过“或”的形式合成为1个中断源送至中断控制器,2个UART错误中断(UERROR0/1)也是如此。 下面给出S3C44B0X的中断控制器内部寄存器以及处理流程。7.1.2.1S3C44B0X的中断控制寄存器组S3C44B0X处理器的中断源说明S3C44B0X的中断源清单(1)S3C44B0X的中断源清单(2)S3C44B0X的中断源清单(3)S3C44B0X的中断源优先级EINT4,EINT5,EINT6和EINT7是S3C44B0X处理器的外部中断请求引脚,它们共用同一个中断请求源。 因此,ISR(中断服务子程序)要通过读取EXTINTPND3~0寄存器来区别这4个中断源,并在处理结束时通过将EXTINTPND3~0中对应位写1来清除该位。S3C44B0X中的中断请求(悬置)寄存器就是INTPND寄存器,其端口地址在0x01E00004,只读属性,初值为0x0。 它记录中断请求信号的到来,相当于PC机8259A中断控制器接口中的中断请求寄存器(IRR:InterruptRequestRegister)。因为S3C44B0X的中断控制器只处理26个中断源,所以INTPND寄存器共有26个位有效位。其中的26位[bit25-bit0]分别对应26个中断源,标记该中断源的中断请求状态,称为该中断源的中断Pending状态位。Pending位等于0,说明对应的中断源没有发出中断请求;Pending位等于1,说明对应的中断源发出了中断请求。 参看表7-3的左起第3列。中断控制器主要功能列表(表7-3)当一个中断源发出中断请求,INTPND寄存器中对应的Pending位会被自动置1。此时如果S3C44B0X对该中断源开放IRQ或者FIQ,中断服务程序(ISR)就会被启动执行。中断服务程序执行完毕返回主程序之前必须清除该中断源的Pending位。由于INTPND寄存器是只读寄存器,不可直接改写。所以在中断服务程序结束之前,需要对中断服务悬挂清除寄存器I_ISPC或F_ISPC的相应位写入“1”,以实现清除该中断源的Pending位。中断模式寄存器INTMOD位于0x01E00008,可读可写属性,初值为0x0,其中的26位[bit25-bit0]分别对应26个中断源,标记该中断源的中断请求模式是IRQ还是FIQ。这26位称为中断模式位(Modebit)。如表7-3的左起第4列所示。当某中断源在INTMOD寄存器中的Mode位设置为1,则ARM7TDMI内核将以FIQ模式响应此中断源的中断请求;否则,以IRQ模式响应。程序员可以通过中断模式寄存器INTMOD的设置将所有的中断源定义为IRQ中断。在这种中断的预设定工作状态下,如果在同一时刻发生了多个中断请求(例如,13个或者8个等等),中断响应例程就能够通过读取INTPND寄存器来了解哪些中断发生了,并对产生的中断依次进行处理。这就是通过软件查询方式来决定中断服务的优先级。S3C44B0X的中断屏蔽寄存器是INTMSK寄存器,端口地址:0x01E0000C,具有可读可写属性,初值为0x07FFFFFF。在I