收藏 分销(赏)

chap6-2中断机制.ppt

上传人:pc****0 文档编号:14030060 上传时间:2026-06-10 格式:PPT 页数:28 大小:931.50KB 下载积分:10 金币
下载 相关
chap6-2中断机制.ppt_第1页
第1页 / 共28页
chap6-2中断机制.ppt_第2页
第2页 / 共28页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第五章 中断机制,嵌入式系统的硬件平台是由微处理器(或微控制器)、存储器、,I/O,端口及设备组成。,I/O,接口部件是嵌入式系统的关键组成部分。,控制,I/O,接口部件的方式主要有:程序查询、中断控制、,DMA,方式 等。,中断技术主要是用于,I/O,接口部件与微处理器之间进行数据传输的控制,它协调了数据传输的双方的步调。,5.1,中断控制方式原理,嵌入式系统中,微处理器控制,I/O,端口或部件的数据传送方式有2种:程序查询方式和中断方式。,程序查询方式是由微处理器周期性地执行一段查询程序来读取,I/O,端口或部件中状态寄存器的内容,并判断其状态,从而使微处理器与,I/O,端口或部件在进行数据、命令传送时保持同步。,程序查询方式的特点,程序查询方式下,微处理器的效率是非常低的,因为微处理器要花费大量的时间测试,I/O,端口或部件的状态。并且,,I/O,端口或部件的数据也不能得到实时地处理。,中断方式特点,中断方式是,I/O,端口或部件在完成了一个,I/O,操作后,产生一个信号给微处理器,这个信号叫做“中断请求”,微处理器响应这个请求信号,停止其当前的程序操作,而转向对该,I/O,端口或部件进行新的读/写操作。,特点:,1,实时性能好,2,调试复杂,图,中断的形象示意:,中断方式控制的,I/O,操作步骤,初始化微处理器中用于中断方式的寄存器,开放中断。,I/O,端口或部件完成数据操作后并产生中断请求信号。,当中断请求信号有效时,微处理器可能处在不可中断状态。等到微处理器允许中断时,微处理器就保存当前状态,停止它现行的操作并开始进行中断源的识别。,在识别出优先级最高的中断源后,微处理器转到对应的中断服务例程入口,并应答中断,,I/O,端口或部件收到应答信号后,撤消其中断请求。,微处理器读入或写出数据,当中断服务例程结束后,回到原来的被中断程序处继续执行。,中断源及其识别方法,嵌入式系统中,需要采用中断控制方式的,I/O,端口或部件有许多,如,S3C2410,芯片中就有56个中断源。而通常微处理器能够提供的中断请求信号线是有限的,如,ARM920T,核提供给外部的中断请求信号线仅有,IRQ,和,FIQ,两根。因此,当有中断产生时,微处理器就必须通过一定的方式识别出是哪个中断源发来的请求信号,以便转向其对应的中断服务程序例程,这就是中断源的识别。,向量识别中断,向量识别中断就是微处理器响应中断后,要求中断源提供一个地址信息,该地址信息称为中断向量(或叫中断矢量),微处理器根据中断向量(矢量)转移到中断复位程序处执行。所以,中断向量就是中断服务程序的入口地址。,中断优先级仲裁,若嵌入式系统中由多个中断源,则这些中断源必须要进行中断优先级的排列。所谓优先级,指的以下两层含义:,若有2个及2个以上的中断源同时提出中断请求,微处理器先响应哪个中断源,后响应哪个中断源。,若1个中断源提出中断请求,并得到响应后,又有1个中断源提出中断请求,后来的中断源能否中断前一个中断源的中断服务程序。,5.2 S3C2410,的中断系统,实际上,,S3C2410,的中断系统分成两级,一级是控制内部外围,I/O,端口或部件、或者芯片外部中断引脚(,EINTn,),的中断控制;另一级是,ARM920T,核的异常中断控制,采用了固定向量中断方式。,S3C2410,芯片中的中断控制器可以支持56个中断源提出的中断请求,如表6-1所示。,(表6-1见附录),(续),这些中断源由芯片内部的,I/O,端口或部件如,DMA,控制器、,UART,、,IIC,、,RTC,等,以及外部中断引脚提供。,在这些中断源中,有些中断,如串行接口,UARTn,中断和外部中断,EINTn,中断对于中断控制器来说都是共用的。,当,S3C2410,芯片的内部外围,I/O,端口或部件提出中断请求、或者芯片外部中断引脚(,EINTn,),收到中断请求时,中断控制器经过仲裁之后再请求,ARM9,核的,FIQ,或,IRQ,中断。,S3C2410,的中断系统逻辑图,(续),S3C2410,芯片中断控制器支持的56个中断源,由于其中有些中断共用中断请求信号线,因此,实际中断请求信号有32个。这32个中断请求的优先级仲裁判决机制采用了中断优先级编码判断电路原理。其裁决逻辑由7个基本裁决器组成,其中6个一级裁决器和1个二级裁决器。,S3C2410,芯片的32个中断请求信号,在系统复位初始状态下,按照前图中由上到下的顺序,中断优先级由高到低排列,即,EINT0,中断优先级最高,,INT_ADC,中断优先级最低。,中断控制寄存器,用,S3C2410,的中断方式来控制,I/O,端口或部件操作时,除了要对,I/O,端口或部件的相应寄存器进行初始化设置外,还需对中断控制器的5个控制寄存器进行初始化设置。这5个寄存器是:源未决寄存器、中断模式寄存器、屏蔽寄存器、优先级寄存器、中断未决寄存器。,源未决寄存器,源未决寄存器(,SRCPND),由,32,位构成,每一位与一个中断请求信号相关联。当某个中断源请求中断服务时,,SRCPND,寄存器的相应位被置为,1,,即首先在源未决寄存器中登记。因此,该寄存器记录了哪个中断源的请求在等待处理。注意:,SRCPND,寄存器的每一位由中断源自动设置,而不管中断屏蔽寄存器(,INTMASK,),中对应的位是否被屏蔽。此外,,SRCPND,寄存器也不受中断控制器的优先级逻辑影响。,源未决寄存器的每一位定义见附录中表6-2,中断模式寄存器,S3C2410,的中断模式有2种:,FIQ,模式和,IRQ,模式。32位的,INTMOD,寄存器中每一位都与一个中断源相关联,确定对应的中断源中断请求采用哪种模式。如果某位被设置成1,则相应的中断按,FIQ,模式处理。若设置成0,则按,IRQ,模式处理,该模式又称为普通中断模式。(见附录中表6-3),注意:在,S3C2410,中,只能有一个中断源在,FIQ,模式下处理,既,INTMOD,寄存器中只有一位可以设置为1。因此,设计者应该将最紧迫的中断源设置为,FIQ,模式使用。,中断屏蔽寄存器,中断屏蔽寄存器(,INTMSK),也是由32位组成,每一位与一个中断源相对应。若某位设置为1,则中断控制器不会处理该位所对应的中断源提出的中断请求。否则,如果设置为0,则对应的中断源提出的中断请求可以被处理。即使某屏蔽位设置为1,其对应的中断源产生中断请求时,相应的源未决位将设置成1。,见附录表6-4。,优先级判别器,优先级判别寄存器(,PRIORITY),是,IRQ,中断模式下的中断优先级控制寄存器,每个中断源在寄存器中有3位对应,分别代表,ARB_SEL,的2位和,ARB_MODE,的1位。其地址是0,x4a00000c,,复位初始状态为0,x0000007f。,该寄存器每位的含义如表6-5所示。,中断未决寄存器,INTPND,寄存器是,32,位寄存器,寄存器中的每一位对应一个中断源。只有未被屏蔽且具有最高优先级、在源未决寄存器中等待处理的中断请求可以把其对应的中断未决位置,1,。因此,,INTPND,寄存器中只有一位可以设置为,1,,同时,中断控制器产生,IRQ,信号给,ARM920T,核。在,IRQ,的中断服务例程里,设计者可以读取该寄存器,从而获知哪个中断源被处理。,当,INTPND,寄存器的一个未决位被设置为1,只要,ARM920T,核内部的状态寄存器,PSR,中的,I,标志和,F,标志被清零,对应的中断服务例程就可以开始执行。,INTPND,寄存器是可读写的,在中断服务例程里面必须清除中断未决位。,(续),在编程操作,INTPND,寄存器时,应注意以下两点:,如果发生了,FIQ,模式的中断,那么,INTPND,寄存器中相应的位将不会置,1,,因为,INTPND,寄存器只对,IRQ,模式下的中断有效。,清除,INTPND,寄存器的中断未决位时要谨慎。因为,,INTPND,寄存器是通过写数据位1而对未决位清零的。如果,INTPND,寄存器为1的位试图通过写数据位0来清除,那么,INTPND,和,INTOFFSET,寄存器在某些情况下可能会具有不可预料的值。因此,切记不要往,INTPND,寄存器中为1的位写数据位0。清除,INTPND,寄存器的未决位最简捷的方法就是将,INTPND,寄存器的值写回到,INTPND,寄存器里。,S3C2410,中断控制的机制,以上5个寄存器是,S3C2410,中断控制器中主要的寄存器,在每个中断源的处理时,设计者均需根据要求,通过编程进行初始化设定,既确定寄存器中每一位设为0还是设为1。,中,断,未,决,寄,存,器,优,先,级,判,别,器,源,未,决,寄,存,器,屏,蔽,寄,存,器,5.3,中断编程实例,在嵌入式系统设计时,为了提高,I/O,端口或部件处理的实时性,往往采用中断控制方式。,S3C2410,芯片中使用了,ARM920T,核,因此,在完成,I/O,端口或部件的中断服务程序设计时,除了要了解各中断控制寄存器的格式外,还必须了解,ARM920T,核的,IRQ,异常中断模式和,FIQ,异常中断模式的处理过程。因为,,S3C2410,芯片的56个中断源均是按照,IRQ,中断模式或,FIQ,中断模式处理的。,ARM9,中断响应的过程,ARM9,微处理器响应,IRQ,异常中断时,需要完成保护现场及进入,IRQ,异常模式等操作。所有这些操作描述如下。,链接寄存器,R14_irq,保存有:被执行指令地址,4,;,状态寄存器,SPSR_irq,保存有:,CPSR,寄存器的内容,/*,系统进入,IRQ,中断模式,*/,状态寄存器,CPSR,的位,4:0,被赋予:,0,b10010,/*,系统切换到,ARM,状态,*/,寄存器,CPSR,的位,5,清,0,,但位,6,不变,(续),/*,设置,IRQ,中断禁止位,*/,寄存器,CPSR,的位,7,置,1,如果采用高向量地址配置,那么,PC,寄存器被赋予,0,xffff0018,否则,PC,寄存器被赋予,0,x00000018,因为,,ARM920T,核会把当前,PC,的值保存到,R14_irq,中,该值在,ARM,状态下,对应当前指令后的第,2,条指令的地址。,IRQ,中断返回时,就需要通过下面指令来实现回到断点下第,1,条指令处执行:,SUBSPC,LR,4,同时将,SPSR_irq,内容复制到当前,CPSR,中。,中断编程模式,S3C2410,芯片的,I/O,端口或部件若采用中断方式控制操作时,其编程的内容实际上涉及四部分,既:,建立系统中断向量表,并且设置,ARM920T,核的程序状态寄存器,CPSR,中的,F,位和,I,位。一般情况下中断均需使用数据栈,因此,还需建立用户数据栈。这一部分内容对应的程序指令,通常编写在系统引导程序中,如,3.4,节中的实例。,(续),设置,S3C2410,芯片中,56,个中断源的中断向量。通常需要利用未决寄存器或地址偏移寄存器来计算,若中断号还对应有子中断(如中断号为,5,时,对应,EINT8_23,),,需求出子中断的地址偏移。,中断控制初始化。主要是初始化,S3C2410,芯片内部的中断控制的寄存器。针对某个具体的中断源,设置其中断控制模式、中断是否屏蔽、中断优先级等。,(续),完成,I/O,端口或部件具体操作功能的中断服务程序。中断服务程序中,在返回之前必须对中断未决寄存器(,INTPND,),的相应未决位进行清除操作。,上述四部分的程序,第一部分应属于系统引导程序完成的功能。用户在开发嵌入式系统时若使用的是现成硬件平台,则用户对第一部分的程序通常不需要进行编写,因为现成的硬件平台已带有系统引导程序,用户主要需编写的是后三部分的程序。,中断实例,完成一个,S3C2410,芯片中断源的中断控制程序的编写,需要完成上述的四部分编程内容。第一部分的实际上是引导程序的部分功能,已经在第三讲介绍。下面介绍其他几部分的编程内容。,实例详见附录中的实例。,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服