S3C2410的中断系统.ppt_第1页
S3C2410的中断系统.ppt_第2页
S3C2410的中断系统.ppt_第3页
S3C2410的中断系统.ppt_第4页
S3C2410的中断系统.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

第四章S3C2410的中断系统,应用科技学院张健,4.1S3C2410的中断源4.2S3C2410的中断处理4.3中断控制4.4子中断源的中断控制4.5中断向量设置4.6其它常用寄存器4.7中断程序编写中需注意问题4.8中断实验和中断程序编写,主要内容:,中断概述,中断是指计算机在执行某一程序的过程中,由于计算机系统内、外的某种原因,而必须中止原程序的执行,转去执行相应的处理程序,待处理结束之后,再回来继续执行被中止的原程序的过程。采用了中断技术后的计算机,可以解决CPU与外设之间速度匹配的问题,使计算机可以及时处理系统中许多随机的参数和信息,同时,它也提高了计算机处理故障与应变的能力。,定义当CPU在执行程序的过程中,外部事件向CPU发出信号,请求CPU迅速去处理,于是,CPU暂时中止执行当前程序,转去处理相应的事件,待处理完毕后,再继续执行原来被中止的程序,这样的过程称为“中断”。中断系统主要用需要及时处理的高速随机事件或信号,对于那些看来非常重要的信号(诸如急停开关、限位开关、键盘等),其响应速度要求并不高,切不可滥用中断。,为什么要用中断?,a.中断可以解决快速的CPU与慢速的外设之间的矛盾,使CPU和外设同时工作。这样,CPU可启动多个外设同时工作,大大地提高了CPU的效率。b.在实时控制中,现场的各种参数、信息均随时间和现场而变化。这些外界变量可根据要求随时向CPU发出中断申请,请求CPU及时处理中断请求。如中断条件满足,CPU马上就会响应,进行相应的处理,从而实现实时处理。c.针对难以预料的情况或故障,如掉电、存储出错、运算溢出等,可通过中断系统由故障源向CPU发出中断请求,再由CPU转到相应的故障处理程序进行处理。,4.1S3C2410的中断源,中断源是指在计算机系统中可以向CPU发出中断请求的来源。通常有I/O设备、实时控制系统中的随机参数和信息故障源等。S3C2410有56个中断源。在56个中断源中,有32个中断源提供中断控制器。其中,外部中断EINT4EINT7通过“或”的形式提供一个中断源送至中断控制器,EINT8EINT23也通过“或”的形式提供一个中断源送至中断控制器。,4.1S3C2410的中断源,EINT023nBATT_FLTINT_TICKINT_WDTINT_TIMER04INT_UART02共9个INT_LCDINT_DMA03INT_SDI,INT_SPI01INT_USBDINT_USBHINT_IICINT_RTCINT_ADC,中断源之间的逻辑关系,4.2S3C2410的中断处理,S3C2410的中断控制可以处理56个中断源的中断请求。片内的中断,比如DMA、UART和I2C等;处理器外部中断输入引脚。这些中断源中,有如下11个中断源通过分支中断控制器来申请使用中断(与其它中断共用一个中断向量)。,INT_ADCA/D转换中断;INT_TC触摸屏中断;INT_ERR2UART2收发错误中断;INT_TXD2UART2发送中断;INT_RXD2UART2接受中断;INT_ERR1UART1收发错误中断;INT_TXD1UART1发送中断;INT_RXD1UART1接受中断;INT_ERR0UART0收发错误中断;INT_TXD0UART0发送中断;INT_RXD0UART0接受中断。,中断控制逻辑(interruptcontrollerlogic)的任务是在片内和外部中断源组成的多重中断发生时,选择其中一个中断,通过FIQ(快速中断请求)或IRQ(通用中断请求)向CPU内核发出中断请求。,S3C2410的中断控制逻辑如图4-1所示,图4-1中中断源是指给出中断向量的那些中断,子中断源是指与其它中断共用一个中断向量的中断。例如UART0是一个中断源,而TXD0和RXD0就是子中断源。子中断源向CPU申请中断,子中断源挂起寄存器中相应位要置1,如果该子中断没被屏蔽,则该子中断源所归属的总中断源挂起寄存器中相应位也要置1。当多重中断源请求中断时,硬件优先级逻辑判断哪一个将被执行;同时,执行0 x18(IRQ)或者0 x1C(FIQ)地址处的指令。然后再由软件识别各个中断源,并跳转到相应的中断处理程序处。,中断控制,程序状态寄存器的F位和I位如果CPSR(程序状态寄存器)的F位被设置为1,那么CPU将不接受来自中断控制器的FIQ(快速中断请求);如果CPSR程序状态寄存器的I位被设置为1,那么CPU将不接受来自中断控制器的IRQ(通用中断请求)。因此,为了使能FIQ和IRQ,必须先将CPSR程序状态寄存器的F位和I位清零,并且中断屏蔽寄存器INTMSK中相应的位也要清零。,4.3中断控制,4.3.1中断模式(INTMOD)寄存器ARM920T提供了两种中断模式,即FIQ模式(快速模式)和IRQ模式(通用模式)。所有的中断源在中断请求时都要确定使用那一种中断模式。中断模式控制寄存器设置如表4-2所示,因为复位时各位等于0,如果我们采用通用中断,中断模式寄存器可以不用设置。,INTMOD,注意:在S3C2410中,只能有一个中断源在FIQ模式下处理,即INTMOD寄存器中只能有一位可以设置为1。FIQ中断不影响INTPND和INTOFFSET寄存器。,4.3.2SRCPND中断源挂起寄存器,SRCPND中断请求寄存器当某个中断源请求中断服务时,SRCPND相应位置1,记录了哪个中断源的请求需要处理。SRCPND的每一位由中断源自动设置,不受INTMASK和优先级逻辑的影响。当多个中断源提出中断请求后,SRCPND相应位都置1,裁决逻辑选中优先级最高的中断请求将INTPND的相应为置1。在特定的中断处理程序中需要清除SRCPND相应位,以允许同一中断源的下一次请求。清除方法为写入1。从中断服务程序返回时,如果没有清除SRCPND相应位,中断控制器会误认为产生了新的中断请求。,硬件置位、软件清除,SRCPND寄存器定义,4.3.2INTPND中断挂起寄存器,INTPND中断允许寄存器只有未被屏蔽、优先级最高、SRCPND中等待处理的中断请求可以将INTPND相应位置1。INTPND寄存器在任意时刻只能有一位可以设置为1,同时中断控制器产生IRQ信号给ARM920T内核。在中断服务程序中,设计者可以读取该寄存器获知是哪个中断源正被处理。INTPND寄存器由硬件置位,由用户在中断服务程序中清除,清除方法为写入1。,4.3.3中断屏蔽寄存器(INTMSK),当INTMSK寄存器的屏蔽位为1时,对应的中断被禁止;当INTMSK寄存器的屏蔽位为0时,则相应的中断正常执行。如果一个中断的屏蔽位为1,则该中断请求不被受理。,4.3.4PRIORITY,PRIORITY中断优先级寄存器S3C2410共有56个中断源,有32个中断控制器,外部中断EXTIN823共用一个中断控制器,外部中断EXTIN47共用一个中断控制器,9个UART中断分成3组,共用3个中断控制器,ADC和触摸屏共用一个中断控制器。系统对中断优先级实行由中断优先寄存器(PRIORITY)和7个中断仲裁器组组成的两级控制,这7个中断仲裁器组由6个子中断仲裁器组(ARBITER0ARBITER5)和一个主中断仲裁器组(ARBITER6)组成,每个中断仲裁器下面有46个中断源,这些中断源对应着REQ0REQ5这6个优先级。,当一个中断源向CPU申请中断时,它首先要在自己所在的子中断仲裁器组进行仲裁比较,如果此中断仲裁器组中没有和它同级别或高于它的中断源向CPU申请中断,则它进入主中断仲裁器组和其他组的优先中断源进行仲裁比较,决定能否向CPU申请中断。,优先级寄存器设定,每个仲裁器的REQ0总是具有最高优先权,REQ5总是具有最低优先权。改变ARB_SEL的2位值,可以循环REQ14的优先级。ARB_MOD位决定仲裁器优先顺序是否循环。56个中断源中,实际上32个中断请求信号,7个优先级仲裁器,每个可确定6级中断优先级。,4.4子中断源的中断控制,有一些中断源和其它中断共用一个中断向量,我们称它们为子中断源。S3C2410使用SUBSRCPND和INTSUBMSK来对它们进行中断控制和反馈工作状态。,SUBSRCPND,子中断请求寄存器用于共用中断请求信号的中断源控制。该操作类似于SRCPND寄存器。,INTSUBMASK,子中断屏蔽寄存器,4.5中断向量设置,一个中断源的中断向量就是该中断服务函数的入口地址。在S3C2410中,所有中断服务函数的入口地址都在2410addr.h中定义成函数指针。我们在主程序中,只要把我们的中断服务函数的入口地址(函数名)赋给该指针即可。2410addr.h中定义的函数指针形式为:pISR_XXX,pISR表示是中断服务函数的指针,后面XXX表示中断源名字。如,#definepISR_EINT0(*(unsigned*)(_ISR_STARTADDRESS+0 x20)定义的是外部中断0的服务函数的指针。,中断服务函数的名前加关键字_isr,表明此函数是中断服务函数,例如函数void_irqUart0_TxInt(void)是串行通信0通道发送中断服务函数,void_irqUart0_RxIntOrErr(void)是串行通信0通道接收字符和接收错误代码中断服务函数。做串行通信发送中断实验时:pISR_UART0=(unsigned)Uart0_TxInt;做串行通信接收中断实验时:pISR_UART0=(unsigned)Uart0_RxIntOrErr。中断服务函数声明时名前也要加关键字_isr。,4.6其它常用寄存器,在S3C2410系统中,外部中断控制有:外部中断控制寄存器(EXTINTN0EXTINTN2)外部中断屏蔽寄存器(EINTMASK)外部中断请求寄存器(EINTPEND),EXTINTN,外部中断控制寄存器主要控制外部中断触发模式,触发模式可以有高电平、低电平、脉冲上升沿、脉冲下降沿和双沿5种方式,有EXTINTN02三个寄存器。,EINTMASK,外部中断屏蔽寄存器控制外部中断的允许和禁止,EINTPEND,外部中断请求寄存器,表示当前正在响应的中断服务程序是外部中断中哪一个申请的。,中断开关控制1)FIQ和IRQ总的中断是通过CPSR中F和I位来设置2)一级中断的开关通过INTMSK来控制3)外部中断子中断(EINT4、EINT5-EINT23)通过EINTMASK来设置。4)一般中断子中断(UART1_RXD、INT_TC、INT_AC97)INTSUBMSK中断判断寄存器1)一级中断-INTPND2)外部中断子中断-EINTPEND3)一般中断子中断-SUBSRCPND,4.7中断程序编写中需注意问题,1中断初始花一般在系统复位后和中断程序执行结束,要对中断挂起寄存器初始花,可按如下方法进行,以免写入不正确数据引起错误。rSRCPND=rSRCPND;rINTPND=rINTPND;,2头文件中挂起位:在头文件2410addr.h中对中断挂起位和清中断挂起位进行了如下宏定义,我们在使用时只要用挂起位的名即可:#defineBIT_EINT0(0 x1)#defineBIT_EINT1(0 x11)#defineBIT_EINT2(0 x12)#defineBIT_EINT3(0 x13)#defineBIT_EINT4_7(0 x14)#defineBIT_EINT8_23(0 x15)#defineBIT_WDT(0 x19),#defineBIT_TIMER0(0 x110)#defineBIT_TIMER1(0 x111)#defineBIT_TIMER2(0 x112)#defineBIT_TIMER3(0 x113)#defineBIT_TIMER4(0 x114)#defineBIT_UART2(0 x115)#defineBIT_LCD(0 x116)#defineBIT_DMA0(0 x117)#defineBIT_DMA1(0 x118)#defineBIT_DMA2(0 x119)#defineBIT_DMA3(0 x120)#defineBIT_SDI(0 x121),#defineBIT_SPI0(0 x122)#defineBIT_UART1(0 x123)#defineBIT_USBD(0 x125)#defineBIT_USBH(0 x126)#defineBIT_IIC(0 x127)#defineBIT_UART0(0 x128)#defineBIT_SPI1(0 x129)#defineBIT_RTC(0 x130)#defineBIT_ADC(0 x131)#defineBIT_ALLMSK(0 xffffffff)#defineBIT_SUB_ALLMSK(0 x7ff)#defineBIT_SUB_ADC(0 x110)#defineBIT_SUB_ERR2(0 x18),#defineBIT_SUB_TXD2(0 x17)#defineBIT_SUB_RXD2(0 x16)#defineBIT_SUB_ERR1(0 x15)#defineBIT_SUB_TXD1(0 x14)#defineBIT_SUB_RXD1(0 x13)#defineBIT_SUB_ERR0(0 x12)#defineBIT_SUB_TXD0(0 x11)#defineBI

温馨提示

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

评论

0/150

提交评论