- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中断-20132014-2
中断与异常 中断的基本概念 硬中断即和硬件相关的中断也就是通常意义上的“中断处理程序”,它是直接处理由硬件发过来的中断信号的。当某个设备发出中断请求时,CPU停止正在执行的指令,转而跳到包括中断处理代码或者包括指向中断处理代码的转移指令所在的内存区域。这些代码一般在CPU的中断方式下运行。就回去自己驱动的设备上去看看设备的状态寄存器以了解发生了什么事情,并进行相应的操作。当中断处理完毕以后,CPU将恢复到以前的状态,继续执行中断处理前正在执行的指令。 中断的种类: 中断: 外部可屏蔽中断 外部非屏蔽中断 异常:不使用中断控制器,不能被屏蔽 故障 陷阱 S3C2440A 中的中断控制器接受来自 60个中断源的请求。提供这些中断源的是内部外设,如DMA控制器、UART、IIC 等等。在这些中断源中,UARTn、AC97 和EINTn 中断对于中断控制器而言是“或”关系。 当从内部外设和外部中断请求引脚收到多个中断请求时,中断控制器在仲裁步骤后请求 ARM920T 内核的 FIQ或IRQ 。 仲裁步骤由硬件优先级逻辑决定并且写入结果到帮助用户通告是各种中断源中的哪个中断发生了的中断挂起寄存器中。 中断源 中断控制器支持 60个中断源,如表所示。 参考S3C2440中文手册 P14-3 中断控制器的操作 程序状态寄存器(PSR) 中断模式:FIQ和IRQ,所有中断源在中断请求时决定使用哪种类型。 中断挂起寄存器SRCPND、INTPND 中断控制器的操作-PSR 程序状态寄存器(PSR)的F 位和I 位 如果ARM920T CPU中的PSR的F 位被置位为 1,CPU不会接受来自中断控制器的快中断请求(FIQ )。同样的如果 PSR的I 位被置位为 1 ,CPU不会接受来自中断控制器的中断请求(IRQ )。因此,中断控制器可以通过清除PSR的F 位和 I 位为 0 并且设置 INTMSK 的相应位为 0 来接收中断。 中断挂起寄存器(SRCPND\INTPND) 3C2440A 有两个中断挂起寄存器:源挂起寄存器(SRCPND)和中断挂起寄存器(INTPND )。这些挂起寄存器表明一个中断请求是否为挂起。当中断源请求中断服务,SRCPND寄存器的相应位被置位为 1 ,并且同时在仲裁步骤后 INTPND 寄存器仅有 1 位自动置位为 1 。如果屏蔽了中断,则SRCPND寄存器的相应位被置位为 1 。这并不会引起 INTPND 寄存器的位的改变。当INTPND 寄存器的挂起位为置位,每当 I 标志或 F 标志被清除为 0 中断服务程序将开始。SRCPND和INTPN D 寄存器可以被读取和写入,因此服务程序必须首先通过写 1 到SRCPND寄存器的相应位来清除挂起状态并且通过相同方法来清除 INTPND 寄存器中挂起状态。 中断屏蔽寄存器(INTMSK) 此寄存器表明如果中断相应的屏蔽位被置位为 1 则禁止该中断。如果某个 INTMSK 的中断屏蔽位为 0,将正常服务中断。如果 INTMSK 的中断屏蔽位为 1 并且产生了中断,将置位源挂起位。 中断优先级 每个仲裁器可以处理基于 1 位仲裁器模式控制(ARB_MODE)和选择控制信号(ARB_SEL)的2 位的6 个中断请求; 参考 中文手册 P14-5 中断控制器特殊寄存器 此处中断控制器中有 5 个控制寄存器:源挂起寄存器、中断模式寄存器、屏蔽寄存器、优先级寄存器和中断挂起寄存器。 所有来自中断源的中断请求首先被记录到源挂起寄存器中。基于中断模式寄存器,它们被分配到 2 个组中,包括快中断请求(FIQ )和中断请求(IRQ )。IRQ 的多仲裁过程是基于优先级寄存器。 源挂起(SRCPND)寄存器 SRCPND寄存器由 32位组成,其每一位都涉及一个中断源。如果中断源产生了中断则相应的位被设置为 1 并且等待中断服务。因此此寄存器指示出是哪个中断源正在等待请求服务。注意 SRCPND寄存器的每一位都是由中断源自动置位,其不顾 INTMASK 寄存器中的屏蔽位。另外 SRCPND寄存器不受中断控制器的优先级逻辑的影响。 源挂起(SRCPND)寄存器 在指定中断源的中断服务程序中,必须通过清除 SRCPND寄存器的相应位来正确的获得来自相同源的中断请求。如果从 ISR 中返回并且未清除相应位,则中断控制器的操作就好像其它中断请求已经从同一个源进入了。换句话说,如果 SRCPND寄存器的指定位被设置为 1,其通常被认作一个有效中断请求正在等待服务。 清除相应位的时间依赖于用户的需要。如果希望收到来自相同冤源的其它有效请求,则应该首先清除相应位,并且接着使能中断。 可以通过写入一个数据到此寄存器来清除 SRCPND寄存器的指定位。其
文档评论(0)