S3C2410的中断系统.ppt

上传人:牧羊曲112 文档编号:6518045 上传时间:2023-11-08 格式:PPT 页数:47 大小:2.67MB
返回 下载 相关 举报
S3C2410的中断系统.ppt_第1页
第1页 / 共47页
S3C2410的中断系统.ppt_第2页
第2页 / 共47页
S3C2410的中断系统.ppt_第3页
第3页 / 共47页
S3C2410的中断系统.ppt_第4页
第4页 / 共47页
S3C2410的中断系统.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《S3C2410的中断系统.ppt》由会员分享,可在线阅读,更多相关《S3C2410的中断系统.ppt(47页珍藏版)》请在三一办公上搜索。

1、第四章S3C2410的中断系统,应用科技学院 张健,4.1S3C2410的中断源4.2 S3C2410的中断处理4.3 中断控制4.4 子中断源的中断控制4.5 中断向量设置4.6 其它常用寄存器4.7 中断程序编写中需注意问题4.8 中断实验和中断程序编写,主要内容:,中断概述,中断是指计算机在执行某一程序的过程中,由于计算机系统内、外的某种原因,而必须中止原程序的执行,转去执行相应的处理程序,待处理结束之后,再回来继续执行被中止的原程序的过程。采用了中断技术后的计算机,可以解决CPU与外设之间速度匹配的问题,使计算机可以及时处理系统中许多随机的参数和信息,同时,它也提高了计算机处理故障与应

2、变的能力。,定义当CPU在执行程序的过程中,外部事件向 CPU 发出信号,请求 CPU 迅速去处理,于是,CPU暂时中止执行当前程序,转去处理相应的事件,待处理完毕后,再继续执行原来被中止的程序,这样的过程称为“中断”。中断系统主要用需要及时处理的高速随机事件或信号,对于那些看来非常重要的信号(诸如急停开关、限位开关、键盘等),其响应速度要求并不高,切不可滥用中断。,为什么要用中断?,a.中断可以解决快速的 CPU 与慢速的外设之间的矛盾,使 CPU 和外设同时工作。这样,CPU 可启动多个外设同时工作,大大地提高了 CPU 的效率。b.在实时控制中,现场的各种参数、信息均随时间和现场而变化。

3、这些外界变量可根据要求随时向 CPU 发出中断申请,请求 CPU 及时处理中断请求。如中断条件满足,CPU 马上就会响应,进行相应的处理,从而实现实时处理。c.针对难以预料的情况或故障,如掉电、存储出错、运算溢出等,可通过中断系统由故障源向 CPU 发出中断请求,再由 CPU 转到相应的故障处理程序进行处理。,4.1 S3C2410的中断源,中断源是指在计算机系统中可以向CPU发出中断请求的来源。通常有I/O设备、实时控制系统中的随机参数和信息故障源等。S3C2410有56个中断源。在56个中断源中,有32个中断源提供中断控制器。其中,外部中断EINT4EINT7通过“或”的形式提供一个中断源

4、送至中断控制器,EINT8EINT23也通过“或”的形式提供一个中断源送至中断控制器。,4.1 S3C2410的中断源,EINT023nBATT_FLTINT_TICKINT_WDTINT_TIMER04INT_UART02共9个INT_LCDINT_DMA03INT_SDI,INT_SPI01INT_USBDINT_USBHINT_IICINT_RTCINT_ADC,中断源之间的逻辑关系,4.2 S3C2410的中断处理,S3C2410的中断控制可以处理56个中断源的中断请求。片内的中断,比如DMA、UART和I2C等;处理器外部中断输入引脚。这些中断源中,有如下11个中断源通过分支中断控制

5、器来申请使用中断(与其它中断共用一个中断向量)。,INT_ADC A/D转换中断;INT_TC 触摸屏中断;INT_ERR2 UART2收发错误中断;INT_TXD2 UART2发送中断;INT_RXD2 UART2接受中断;INT_ERR1 UART1收发错误中断;INT_TXD1 UART1发送中断;INT_RXD1 UART1接受中断;INT_ERR0 UART0收发错误中断;INT_TXD0 UART0发送中断;INT_RXD0 UART0接受中断。,中断控制逻辑(interrupt controller logic)的任务是在片内和外部中断源组成的多重中断发生时,选择其中一个中断,通

6、过FIQ(快速中断请求)或IRQ(通用中断请求)向CPU内核发出中断请求。,S3C2410的中断控制逻辑如图4-1所示,图4-1中中断源是指给出中断向量的那些中断,子中断源是指与其它中断共用一个中断向量的中断。例如UART0是一个中断源,而TXD0和RXD0就是子中断源。子中断源向CPU申请中断,子中断源挂起寄存器中相应位要置1,如果该子中断没被屏蔽,则该子中断源所归属的总中断源挂起寄存器中相应位也要置1。当多重中断源请求中断时,硬件优先级逻辑判断哪一个将被执行;同时,执行0 x18(IRQ)或者0 x1C(FIQ)地址处的指令。然后再由软件识别各个中断源,并跳转到相应的中断处理程序处。,中断

7、控制,程序状态寄存器的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

8、所示,因为复位时各位等于0,如果我们采用通用中断,中断模式寄存器可以不用设置。,INTMOD,注意:在S3C2410中,只能有一个中断源在FIQ模式下处理,即INTMOD寄存器中只能有一位可以设置为1。FIQ中断不影响INTPND和INTOFFSET寄存器。,4.3.2 SRCPND中断源挂起寄存器,SRCPND中断请求寄存器当某个中断源请求中断服务时,SRCPND相应位置1,记录了哪个中断源的请求需要处理。SRCPND的每一位由中断源自动设置,不受INTMASK和优先级逻辑的影响。当多个中断源提出中断请求后,SRCPND相应位都置1,裁决逻辑选中优先级最高的中断请求将INTPND的相应为置1

9、。在特定的中断处理程序中需要清除SRCPND相应位,以允许同一中断源的下一次请求。清除方法为写入1。从中断服务程序返回时,如果没有清除SRCPND相应位,中断控制器会误认为产生了新的中断请求。,硬件置位、软件清除,SRCPND寄存器定义,4.3.2 INTPND中断挂起寄存器,INTPND中断允许寄存器只有未被屏蔽、优先级最高、SRCPND中等待处理的中断请求可以将INTPND相应位置1。INTPND寄存器在任意时刻只能有一位可以设置为1,同时中断控制器产生IRQ信号给ARM920T内核。在中断服务程序中,设计者可以读取该寄存器获知是哪个中断源正被处理。INTPND寄存器由硬件置位,由用户在中

10、断服务程序中清除,清除方法为写入1。,4.3.3 中断屏蔽寄存器(INTMSK),当INTMSK寄存器的屏蔽位为1时,对应的中断被禁止;当INTMSK寄存器的屏蔽位为0时,则相应的中断正常执行。如果一个中断的屏蔽位为1,则该中断请求不被受理。,4.3.4 PRIORITY,PRIORITY中断优先级寄存器S3C2410共有56个中断源,有32个中断控制器,外部中断EXTIN823共用一个中断控制器,外部中断EXTIN47共用一个中断控制器,9个UART中断分成3组,共用3个中断控制器,ADC和触摸屏共用一个中断控制器。系统对中断优先级实行由中断优先寄存器(PRIORITY)和7个中断仲裁器组组

11、成的两级控制,这7个中断仲裁器组由6个子中断仲裁器组(ARBITER0 ARBITER5)和一个主中断仲裁器组(ARBITER6)组成,每个中断仲裁器下面有46个中断源,这些中断源对应着REQ0REQ5这6个优先级。,当一个中断源向CPU申请中断时,它首先要在自己所在的子中断仲裁器组进行仲裁比较,如果此中断仲裁器组中没有和它同级别或高于它的中断源向CPU申请中断,则它进入主中断仲裁器组和其他组的优先中断源进行仲裁比较,决定能否向CPU申请中断。,优先级寄存器设定,每个仲裁器的REQ0总是具有最高优先权,REQ5总是具有最低优先权。改变ARB_SEL的2位值,可以循环REQ14的优先级。ARB_

12、MOD位决定仲裁器优先顺序是否循环。56个中断源中,实际上32个中断请求信号,7个优先级仲裁器,每个可确定6级中断优先级。,4.4 子中断源的中断控制,有一些中断源和其它中断共用一个中断向量,我们称它们为子中断源。S3C2410使用SUBSRCPND和INTSUBMSK来对它们进行中断控制和反馈工作状态。,SUBSRCPND,子中断请求寄存器用于共用中断请求信号的中断源控制。该操作类似于 SRCPND寄存器。,INTSUBMASK,子中断屏蔽寄存器,4.5 中断向量设置,一个中断源的中断向量就是该中断服务函数的入口地址。在S3C2410中,所有中断服务函数的入口地址都在2410addr.h中定

13、义成函数指针。我们在主程序中,只要把我们的中断服务函数的入口地址(函数名)赋给该指针即可。2410addr.h中定义的函数指针形式为:pISR_XXX,pISR表示是中断服务函数的指针,后面XXX表示中断源名字。如,#define pISR_EINT0(*(unsigned*)(_ISR_STARTADDRESS+0 x20)定义的是外部中断0的服务函数的指针。,中断服务函数的名前加关键字_isr,表明此函数是中断服务函数,例如函数void _irq Uart0_TxInt(void)是串行通信0通道发送中断服务函数,void _irq Uart0_RxIntOrErr(void)是串行通信0

14、通道接收字符和接收错误代码中断服务函数。做串行通信发送中断实验时:pISR_UART0=(unsigned)Uart0_TxInt;做串行通信接收中断实验时:pISR_UART0=(unsigned)Uart0_RxIntOrErr。中断服务函数声明时名前也要加关键字_isr。,4.6 其它常用寄存器,在S3C2410系统中,外部中断控制有:外部中断控制寄存器(EXTINTN0 EXTINTN2)外部中断屏蔽寄存器(EINTMASK)外部中断请求寄存器(EINTPEND),EXTINTN,外部中断控制寄存器主要控制外部中断触发模式,触发模式可以有高电平、低电平、脉冲上升沿、脉冲下降沿和双沿5种

15、方式,有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,

16、4.7 中断程序编写中需注意问题,1中断初始花 一般在系统复位后和中断程序执行结束,要对中断挂起寄存器初始花,可按如下方法进行,以免写入不正确数据引起错误。rSRCPND=rSRCPND;rINTPND=rINTPND;,2头文件中挂起位:在头文件2410addr.h中对中断挂起位和清中断挂起位进行了如下宏定义,我们在使用时只要用挂起位的名即可:#define BIT_EINT0(0 x1)#define BIT_EINT1(0 x11)#define BIT_EINT2(0 x12)#define BIT_EINT3(0 x13)#define BIT_EINT4_7(0 x14)#defi

17、ne BIT_EINT8_23(0 x15)#define BIT_WDT(0 x19),#define BIT_TIMER0(0 x110)#define BIT_TIMER1(0 x111)#define BIT_TIMER2(0 x112)#define BIT_TIMER3(0 x113)#define BIT_TIMER4(0 x114)#define BIT_UART2(0 x115)#define BIT_LCD(0 x116)#define BIT_DMA0(0 x117)#define BIT_DMA1(0 x118)#define BIT_DMA2(0 x119)#defi

18、ne BIT_DMA3(0 x120)#define BIT_SDI(0 x121),#define BIT_SPI0(0 x122)#define BIT_UART1(0 x123)#define BIT_USBD(0 x125)#define BIT_USBH(0 x126)#define BIT_IIC(0 x127)#define BIT_UART0(0 x128)#define BIT_SPI1(0 x129)#define BIT_RTC(0 x130)#define BIT_ADC(0 x131)#define BIT_ALLMSK(0 xffffffff)#define BIT

19、_SUB_ALLMSK(0 x7ff)#define BIT_SUB_ADC(0 x110)#define BIT_SUB_ERR2(0 x18),#define BIT_SUB_TXD2(0 x17)#define BIT_SUB_RXD2(0 x16)#define BIT_SUB_ERR1(0 x15)#define BIT_SUB_TXD1(0 x14)#define BIT_SUB_RXD1(0 x13)#define BIT_SUB_ERR0(0 x12)#define BIT_SUB_TXD0(0 x11)#define BIT_SUB_RXD0(0 x10)#define ClearPending(bit)rSRCPND=bit;rINTPND=bit;rINTPND;,4.8 中断实验和中断程序编写,实验方式1、ADS1.2上进行软件模拟,学会C语言编程。2、实验室实验选择的是外部中断EINT0和EINT11。中断的产生分别来自按钮SB1202和SB1203。当按钮按下时,EINT0或EINTll与地连接,输入低电平,从而向CPU发出中断请求。当CPU受理中断后,进人相应的中断服务程序,通过超级终端的主窗口显示当前进入的中断号。S3C2410中断实验电路如图4-3所示。,作业:P59页 2、3、5、6,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号