不同CPU中断之间的比较.doc_第1页
不同CPU中断之间的比较.doc_第2页
不同CPU中断之间的比较.doc_第3页
不同CPU中断之间的比较.doc_第4页
不同CPU中断之间的比较.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

不同CUP中断技术对比专题研究1.1、8086中断源类型:1、内部中断 它由CPU内部事件及执行软中断指令产生。通过在指令操作数中提供中断向量号,INT n指令可用于从软件中产生中断。例如,指令INT 0x80会执行Linux的系统中断调用中断0x80。向量0255中的任何一个都可以用作INT指令的中断号。然而,如果使用了处理器预先定义的NMI向量,那么处理器对它的响应将与普通方式产生的该NMI中断不同。如果NMI的向量号2用于该INT指令,就会调用NMI的中断处理器程序,但是此时并不会激活处理器的NMI处理硬件。2、外部中断 它是由外部中断源产生对CPU的请求而引发的。8086(88)中断系统将外部中断源又分为两种。 非屏蔽中断, 可屏蔽中断。外部中断通过处理器芯片上两个引脚(INTR和NMI)接收。当引脚INTR接收到外部发生的中断信号时,处理器就会从系统总线上读取外部中段控制器(如8259A)提供的中断向量号。当引脚NMI接收到信号时,就产生一个非屏蔽中断。它使用固定的中断向量号2。任何通过处理器INTR引脚接收的外部中断都被称为可屏蔽硬件中断,包括中断向量号0255。标志寄存器EFLAGS中的IF标志可用来屏蔽所有这些硬件中断。1.2、8086中断中断处理过程:一个完整的中断处理过程应该包括:中断请求、中断排队或中断判优、中断响应、中断处理和中断返回等环节,下面分别进行讨论。1中断请求中断请求是由中断源向CPU发出中断请求信号。外部设备发出中断请求信号要具备以下两个条件:(1)外部设备的工作已经告一段落。例如输入设备只有在启动后,将要输入的数据送到接口电路的数据寄存器(即准备好要输入的数据)之后,才可以向CPU发出中断请求。(2)系统允许该外设发出中断请求。如果系统不允许该外设发出中断请求,可以将这个外设的请求屏蔽。当这个外设中断请求被屏蔽,虽然这个外设准备工作已经完成,也不能发出中断请求。2中断响应经中断排队后,CPU收到一个当前申请中断的中断源中优先级别最高的中断请求信号,如果允许CPU响应中断(IF1),在执行完一条指令后,就中止执行现行程序,而响应中断申请。此时首先由硬件电路保护断点,即将当前正在执行的程序的段地址(CS)和偏移地址(IP)以及标志寄存器(FR)压入堆栈;然后关闭CPU内的允许中断触发器IF(可屏蔽中断时);接下来就是寻找中断服务程序的入口地址。寻找中断服务程序入口地址的方法分软件和硬件两种。软件方法即为上述的查询方式。在硬件方式中,目前均采用矢量中断方式。所谓矢量中民即当CPU响应中断后,由提出中断请求的中断源向CPU发去一个中断矢量,CPU根据这个中断矢量找到中断程序的入口地址,而转到相应的中断服务程序。以Intel为CPU的PC系列微型计算机系统就采用矢量中断方式。3中断处理程序如下:中断响应后,进入中断处理,即执行中断服务程序。在中断服务程序中,首先要保护现场,把中断服务程序中所要使用到的寄存器内容保护起来,如将经们的内容压入堆栈,然后才进行与此次中断有关的相应服务处理。处理完毕要恢复现场,即恢复中断前各寄存器的内容。如果在中断服务程序中允许嵌套(可屏蔽中断方式时),还应用STI指令将IF1(即开中断)。4中断返回通常,中断服务程序的最后一条指令是一条中断返回指令。当CPU执行这条指令时,把原来程序被中断的断点地址从堆栈中弹回CS和IP中,原来的FR弹回FR。这样,实中断的程序就可以从断点处继续执行下去。CPU从中断服务程序又回到了被中断的主程序。在实际应用系统中,中断可以嵌套,即可以有多重中断。所谓多重中断,就是在CPU执行某一中断服务程序时,又有优先级别更高的中断源申请断,此时,CPU应当暂停止这个中断服务,而去处理优先级别比它高的中断申请。处理完毕再返回中断占,继续处理较低优先级别的中断。这种在低级中断中还嵌套有高级中断的多重中断方式,对实时处理系统是很有用的。1.3、80x86中断向量I/O ADDRINT TYPEFUNCTION00 030除法溢出中断04 071单步(用于DEBUG)08 0B2非屏蔽中断(NMI)0C 0F3断点中断(用于DEBUG)10 134溢出中断14 175打印屏幕18 1F6,7保留8259中断向量I/O ADDRINT TYPEFUNCTION20 238定时器 (IRQ0)24 279键盘 (IRQ1)28 2BA彩色/图形 (IRQ2)2C 2FB串行通信COM2 (IRQ3)30 33C串行通信COM1 (IRQ4)34 37DLPT2控制器中断 (IRQ5)38 3BE磁盘控制器中断 (IRQ6)3C 3FFLPT1控制器中断 (IRQ7)BIOS中断向量I/O ADDRINT TYPEFUNCTION40 4310视频显示 I/O44 4711设备检验48 4B12测定存储器容量4C 4F13磁盘 I/O50 5314RS-232 串行口 I/O54 5715系统描述表指针58 5B16键盘 I/O5C 5F17打印机 I/O60 6318ROM BASIC 入口代码64 6719引导装入程序68 6B1A日时钟提供给用户的中断I/O ADDRINT TYPEFUNCTION6C 6F1BCtrl - Break 控制的软中断70 731C定时器控制的软中断参数表指针I/O ADDRINT TYPEFUNCTION74 771D视频参数块78 7B1E软盘参数块7C 7F1F图形字符扩展码DOS中断向量I/O ADDRINT TYPEFUNCTION80 8320DOS 中断返回84 8721DOS 系统功能调用88 8B22程序中止时 DOS 返回地址(用户不能直接调用)8C 8F23Ctrl - Break 处理地址(用户不能直接调用)90 9324严重错误处理(用户不能直接调用)94 9725绝对磁盘读功能98 9B26绝对磁盘写功能9C 9F27终止并驻留程序A0 A328DOS安全使用A4 A729快速写字符A8 AB2AMicrosoft 网络接口B8 BB2E基本 SHELL 程序装入BC BF2F多路服务中断CC CF 33鼠标中断104 10741硬盘参数块118 11B46第二硬盘参数块11C 3FF47 FFBASIC 中断1.4、8259A的中断优先级管理模式: (一)完全嵌套方式: 这是优先权管理中最基本的一种方式,如果在初始化8259A时未规定其他方式,则8259A自动进入这种方式。在此方式下,IR0的优先级最高,并向IR7依次递减。 (二)自动循环方式(等优先权方式) 在这种方式下当某一中断源的中断请求被相应后,该中断源的优先级就自动成为最低级别,其他的中断源的优先级也随之改变,使各中断源被优先响应的机会均等。 (三)特殊循环方式 这种方式允许在程序中改变中断源的优先级别,它通过指定某个中断级为优先权最低,而其他中断源也随之改变的方法来实现。 (四)特殊屏蔽方式 这种方式允许在中断服务程序过程中动态改变系统的中断优先权结构。具体方法是在中断服务程序中向8259A发出适当的操作命令字来实现。2.1、8051的五个中断源编号中断源入口地址 0/INT00x0003 1TIMER00x000b 2/INT10x0013 3TIMER10x001b 4UART0x0023默认优先级按编号已排好序。(0最高,4最低)2.2、8051的中断优先级管理模式:1.中断触发控制寄存器IE (当然,左边是高位)EA-ET2ESET1EX1ET0EX0 EX0:响应外部/INT0的中断 ET0:响应TIMER0的中断 EX1、ET1:对应/INT1与TIMER1 ES:对应UART ET2:响应TIMER2溢出或捕捉的中断(仅对8052) EA:中断使能。EA=1时才允许中断。2.中断优先级控制寄存器IP-PT2PSPT1PX1PT0PX0分别对应各中断的优先级。仅分0(低)、1(高)两级,同级的中断还是看中断源编号进行优先级排序。3.TIMER控制寄存器TCONTF1TR1TF0TR0IE1IT1IE0IT0TF1与TF0分别是硬件去置位的,当Timer1/Counter1溢出时,TF1会被置为1,而当处理器去执行中断服务时,它又被硬件置0。(当然TF0管的就是Timer0/Counter0了) TR1与TR0由软件置位,管的是Timer/Counter的激活。(如在程序里写TR01,就是说Counter0开始计数,当然如果这个Timer/Counter被设置为Counter的工作方式的话)IE1与IE0由硬件置位,与TF1、TF0等同,只是IE1与IE0管的是外部中断。IT1与IT0由软件置位,设为1时,对应的外部中断为负缘触发,设0时为低准位触发。2.3、8051中断响应的过程:(1) 在每条指令结束后, 系统都自动检测中断请求信号, 如果有中断请求,且CPU处于开中断状态下, 则响应中断。 (2) 保护现场, 在保护现场前, 一般要关中断, 以防止现场被破坏。保护现场一般是用堆栈指令将原程序中用到的寄存器推入堆栈。(3) 取中断号,中断服务, 即为相应的中断源服务。 (4) 恢复现场, 用堆栈指令将保护在堆栈中的数据弹出来, 在恢复现场前要关中断, 以防止现场被破坏。在恢复现场后应及时开中断。 (5) 返回, 此时CPU将推入到堆栈的断点地址(PC值)弹回到程序计数器, 从而使CPU继续执行刚才被中断的程序。2.4、8051中断源的矢量位置:中断源 Keil中断编号 矢量地址最高优先级 6 0x0033外部中断0 0 0x0003定时器0溢出 1 0x000B外部中断1 2 0x0013定时器1溢出 3 0x001B串口 4 0x0023定时器2溢出 5 0x002BDMA 7 0x003B硬件断点 8 0x0043JTAG 9 0x004B软件断点 10 0x0053监视定时器 12 0x00633.1、ARM中断源:中断名称 中断向量号 功能描述FAULT_NMI 2 NMI fault (不可屏蔽中断故障)FAULT_HARD 3 Hard fault (硬件故障)FAULT_MPU 4 MPU fault (存储器保护单元故障)FAULT_BUS 5 Bus fault (总线故障)FAULT_USAGE 6 Usage fault (使用故障)FAULT_SVCALL 11 SVCall (软件中断)FAULT_DEBUG 12 Debug monitor (调试监控)FAULT_PENDSV 14 PendSV (系统服务请求)FAULT_SYSTICK 15 System Tick (系统节拍定时器)INT_GPIOA 16 GPIO Port A (GPIO端口A)INT_GPIOB 17 GPIO Port B (GPIO端口B)INT_GPIOC 18 GPIO Port C (GPIO端口C)INT_GPIOD 19 GPIO Port D (GPIO端口D)T_GPIOE 20 GPIO Port E (GPIO端口E)IN_UART0 21 UART0 Rx and Tx (UART0收发)INTUART1 22 UART1 Rx and Tx (UART1收发)INT_ 23 SSI Rx and Tx (SSI收发)INT_SSI0 23 SSI0 Rx and Tx (SSI0收发,与INT_SSI 相同)INT_I2C 24 I2C Master and Slave (I2C主从)INT_I2C0 24 I2C0 Master and Slave (I2C0主从,与INT_I2C相同)INT_PWM_FAULT 25 PWM Fault (PWM故障)INT_PWM0 26 PWM Generator 0 (PWM发生器0)INT_PWM1 27 PWM Generator 1 (PWM发生器1)INT_PWM2 28 PWM Generator 2 (PWM发生器2)INT_QEI 29 Quadrature Encoder (正交编码器)INTQEI0 29 Quadrature Encoder 0 (正交编码器0,与INT_QEI相同)INT_ADC0 30 ADC Sequence 0 (ADC采样序列0)INT_ADC1 31 ADC Sequence 1 (ADC采样序列1)INT_ADC2 32 ADC Sequence 2 (ADC采样序列2)INT_ADC3 33 ADC Sequence 3 (ADC采样序列3)INT_WATCHDOG 34 Watchdog timer (看门狗定时器)INT_TIMER0A 35 Timer 0 subtimer A (定时器0子定时器A)INT_TIMER0B 36 Timer 0 subtimer B (定时器0子定时器B)INT_TIMER1A 37 Timer 1 subtimer A (定时器1子定时器A)INT_TIMER1B 38 Timer 1 subtimer B (定时器1子定时器B)INT_TIMER2A 39 Timer 2 subtimer A (定时器2子定时器A)INT_TIMER2B 40 Timer 2 subtimer B (定时器2子定时器B)INT_COMP0 41 Analog Comparator 0 (模拟比较器0)INT_COMP1 42 Analog Comparator 1 (模拟比较器1)INT_COMP2 43 Analog Comparator 2 (模拟比较器2)INT_SYSCTL 44 System Control (PLL, OSC, BO) (系统控制,PLL、OSCBO)INT_FLASH 45 Flash Control (闪存控制)INT_GPIOF 46 GPIO Port F (GPIO端口F)INT_GPIO 47 GPIO Port G (GPIO端口G)INGPIH 48 GPIO Port H (GPIO端口H)INT_T2 49 UART2 Rx and Tx (UART2收发)INT_SSI1 50 SSI1 Rx and Tx (SSI1收发)INT_TIMER3A 51 Timer 3 subtimer A (定时器3子定时器A)INT_TIMER3B 52 Timer 3 subtimer B (定时器3子定时器B)INT_I2C1 53 I2C1 Master and Slave (I2C1主从)INT_QEI 54 Quadrature Encoder 1 (正交编码器1)INT0 55 CAN0 (CAN总线0)_CAN1 56 CAN1 (CAN总线1)INT_CAN2 57 CAN2 (CAN总线2)INT_ETH 58 Ethernet (以太网)INT_HIBERNATE 59 Hibernation module (冬眠模块)INT_USB0 60 USB 0 Controller (USB0控制器)INT_PWM3 61 PWM Generator 3 (PWM发生器3)INT_UDMA 62 uDMA controller (DMA控制器)INT_UDMAERR 63 uDMA Error (DMA错误)3.2、ARM中断过程:a 如果是不带子中断的内部中断:发生后SRCPND相应位置1,如果没有被INTMSK屏蔽,那么等待进一步处理。b 如果是带子中断的内部中断:发生后SUBSRCPND相应位置1,如果没有被INTSUBMSK屏蔽,那么SRCPND相应位置1,等待进一步处理,几个SUBSRCPND可能对应同一个SRCPND,对应表如下:SRCPND SUBSRCPNDINT_UART0 INT_RXD0,INT_TXD0,INT_ERR0INT_UART1 INT_RXD1,INT_TXD1,INT_ERR1INT_UART2 INT_RXD2,INT_TXD2,INT_ERR2INT_ADC INT_ADC_S, INT_TCINT_CAM INT_CAM_C, INT_CAM_PINT_WDT_AC97 INT_WDT, INT_AC97c 如果是外部中断:EINT0-EINT3发生后SRCPND相应位置1,如果没有被INTMSK屏蔽,那么等待进一步处理。EINT4-EINT23发生后EINTPEND相应位置1,如果没有被EINTMASK屏蔽,那么SRCPND相应位EINT4-7 或EINT8-23置1,如果没有被INTMSK屏蔽,等待进一步处理,几个EINTPEND对应同一个SRCPND,对应表如下:SRCPND EINTPENDEINT0 EINT0EINT1 EINT1EINT2 EINT2EINT3 EINT3EINT4-7 EINT4-EINT4EINT8-23 EINT8-EINT23三种中断都等待进一步处理了。接下来从SRCPND往下看,看INTMSK。如果中断被屏蔽了,就不用说了(注意:快中断也能被屏蔽)。如果没有被屏蔽,那么会进一步到INTMOD。如果是快中断,那么直接出来,进入FIQ(即CPU进入快中断模式处理)。如果是普通中断,那么SRCPND可以有多为置1(FIQ只能有一个),这时就会经过PRIORITY选出一个优先级高的,然后把根据选出的中断把INTPND相应位置1(注意:只能选出一个),进入IRQ,让CPU处理。6.中断的开启。a.如果是不带子中断的内部中断,只需设置INTMSK,让它不屏蔽中断就可以了。b如果是带子中断的内部中断,需设置INTSUBMSK和INTMSK,让它们不屏蔽中断就可以了。c如果是外部中断,对于EINT8-23需要设置EINTMASK和INTMSK。对于EINT0-EINT3只需设置INTMSK。7.中断的清除。a.如果是不带子中断的内部中断,只需清除SRCPND,注意清除需位置1。b如果是带子中断的内部中断,需清除SRCPND和SUBSRCPND,注意先清除SUBSRCPND,再清除SRCPND。因为,如果你先清除SRCPND的话,然后在清除SUBSRCPND的过程中,SRCPND会以为又有中断发生,又会置1。也就是说一次中断会响应两次。所以必须先掐断源头。c如果是外部中断,对于EINT8-23需要清除EINTPEND和SRCPND(同样注意顺序)。对于EINT0-EINT3只需清除SRCPND。3.3、ARM中断优先级:S3C2440A支持60种中断,多个硬件可能同时产生中断请求,由于CPU只能处理一个中断,中断控制器怎么选择出一个最佳的中断,交给ARM内核进行处理呢? 中断控制器采用优先级仲裁比较的方式进行选择,找出优先级最高的中断源。中断控制器将60种中断源分成7组,如下图所示,它类似体育赛事里的比赛方式,所有参赛选手在小组赛PK,选择出小组赛最优秀选手,然后进入决赛阶段和其它小组最优先选择再PK,最后优胜者就是总冠军。其中ARBITER0ARBITER5为“小组赛”阶段,中断源信号在各自小组里进行优先级仲裁,选择

温馨提示

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

评论

0/150

提交评论