您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 电子科技大学嵌入式软件工程中心
电子科技大学嵌入式软件工程中心嵌入式系统及应用电子科技大学嵌入式软件工程中心第七章中断管理电子科技大学嵌入式软件工程中心主要内容•中断的分类•中断处理的过程•实时内核的中断管理•用户中断服务程序•中断时序*电子科技大学嵌入式软件工程中心•从发展过程来看:–中断(interrupt)最初被用来替换I/O操作的轮询处理方式,以提高I/O处理的效率。–随后,中断又包含了自陷(trap,也称为内部中断或是软件中断)的功能。–后来,中断的概念得到进一步扩大,被定义为导致程序正常执行流程发生改变的事件(不包括程序的分支情况)。可把概念被扩大的中断称为广义中断。概述电子科技大学嵌入式软件工程中心•在实际应用中,广义的中断通常被分为中断、自陷和异常(exception)等类别。–中断是由于CPU外部的原因而改变程序执行流程的过程,属于异步事件,又称为硬件中断。自陷和异常则为同步事件;–自陷表示通过处理器所拥有的软件指令、可预期地使处理器正在执行的程序的执行流程发生变化,以执行特定的程序。自陷是显式的事件,需要无条件地执行;•Motorola68000系列中的Trap指令•ARM中的SWI指令•Intel80x86中的INT指令概述电子科技大学嵌入式软件工程中心–异常为CPU自动产生的自陷,以处理异常事件。•如被0除、执行非法指令和内存保护故障等。•异常没有对应的处理器指令,当异常事件发生时,处理器也需要无条件地挂起当前运行的程序,执行特定的处理程序。概述电子科技大学嵌入式软件工程中心中断的分类•分类方式–硬件中断是否可以被屏蔽:•可屏蔽中断和不可屏蔽中断–中断源:•硬件中断和软件中断–中断信号的产生:•边缘触发中断和电平触发中断–中断服务程序的调用方式:•向量中断、直接中断和间接中断电子科技大学嵌入式软件工程中心可屏蔽中断和不可屏蔽中断•由于中断的发生是异步的,程序的正常执行流程随时有可能被中断服务程序打断。如果程序正在进行某些重要运算,中断服务程序的插入将有可能改变某些寄存器的数据,造成程序的运行发生错误。•可屏蔽中断:能够被屏蔽掉的中断。–外部设备的中断请求信号一般需要先通过CPU外部的中断控制器,再与CPU相应的引脚相连。–可编程中断控制器可以通过软件进行控制,以禁止或是允许中断。•不可屏蔽中断:在任何时候都不可屏蔽的。–一个比较典型的例子是掉电中断,当发生掉电时,无论程序正在进行什么样的运算,它都肯定无法正常运行下去。这种情况下,急需进行的是一些掉电保护的操作。对这类中断,应随时进行响应。电子科技大学嵌入式软件工程中心硬件中断和软件中断•硬件中断:由于CPU外部的设备所产生的中断。–异步事件:可能在程序执行的任何位置发生,发生中断的时间通常是不确定的。•软件中断:同步中断或是自陷,通过处理器的软件指令来实现。–产生中断的时机是预知的,可根据需要在程序中进行设定。–软件中断的处理程序以同步的方式进行执行。–其处理方式同硬件中断处理程序类似。电子科技大学嵌入式软件工程中心硬件中断和软件中断•软件中断是一种非常重要的机制:–系统可通过该机制在用户模式执行特权模式下的操作。–是软件调试的一个重要手段,如Intel80x86中的INT3,使指令进行单步执行,调试器可以用它来形成观察点,并查看随程序执行而动态变化的事件情况。电子科技大学嵌入式软件工程中心边缘触发中断和电平触发中断•边缘触发中断:中断线从低变到高或是从高变到低时,中断信号就被发送出去,并只有在下一次的从低变到高或是从高变到低时才会再度触发中断。–事件发生的时间非常短,有可能出现中断控制器丢失中断的情况。–如果多个设备连接到同一个中断线,即使只有一个设备产生了中断信号,也必须调用中断线对应的所有中断服务程序来进行匹配,否则会出现中断的软件丢失情况。电子科技大学嵌入式软件工程中心边缘触发中断和电平触发中断•电平触发中断:在硬件中断线的电平发生变化时产生中断信号,并且中断信号的有效性将持续保持下去,直到中断信号被清除。–能够降低中断信号传送丢失的情况–能通过更有效的方式来服务中断,每个为该中断服务后的ISR都要向外围设备进行确认,然后取消该设备对中断线的操作。–当中断线的最后一个设备得到中断服务后,中断线的电平就会发生变化,不用对连接到同一个硬件中断线的所有中断服务程序进行尝试。电子科技大学嵌入式软件工程中心向量中断、直接中断和间接中断•向量中断:通过中断向量来调用中断服务程序。•直接中断:中断对应的中断服务程序的入口地址是一个固定值,当中断发生的时候,程序执行流程将直接跳转到中断服务程序的入口地址,执行中断服务程序。•间接中断:中断服务程序的入口地址由寄存器提供。电子科技大学嵌入式软件工程中心向量中断•中断硬件设备的硬件中断线(也称为中断请求IRQ)被中断控制器汇集成中断向量(interruptvector);•每个中断向量对应一个中断服务程序(interruptserviceroutine,ISR),用来存放中断服务程序的入口地址或是中断服务程序的第一条指令。•系统中通常包含多个中断向量,存放这些中断向量对应中断服务程序入口地址的内存区域被称为中断向量表。电子科技大学嵌入式软件工程中心向量中断•在Intel80x86处理器中,中断向量表包含256个入口,每个中断向量需要四个字节(存放中断服务程序的首址)。•ARM的中断向量表开始于内存地址0x00000000或是0xFFFF0000处。电子科技大学嵌入式软件工程中心中断控制器•对多个可屏蔽中断源进行管理,使CPU核心能和更多的中断资源相联系。•能够对中断进行排队:–避免中断信号的丢失–对不同的中断进行优先级配置,使高优先级中断能够中断低优先级中断,满足系统中具有更高时间约束特性功能的需要电子科技大学嵌入式软件工程中心中断控制器IR3IR4IR0实时钟IR1IR2保留IR5协处理器IR6硬盘IR7保留80X86IR3COM2IR0定时器IR1键盘IR2INTIR4COM1IR5并口2IR6软盘IR7并口1主8259+5V从8259INTRINT/INTA/INTANMI在基于x86的架构中,8259是一个非常通用的中断控制器芯片(称为PIC,programmableinterruptcontroller)。每个PIC只能够处理8个中断,为支持更多数量的中断,需要组织成菊花链(daisychain)的方式,把一个PIC的输出连接到另一个PIC的输入上。电子科技大学嵌入式软件工程中心中断处理的过程•中断处理的过程分为:–中断检测–中断响应–中断处理电子科技大学嵌入式软件工程中心中断检测•中断检测在每条指令结束时进行,检测是否有中断请求或是否满足异常条件。–为满足中断处理的需要,在指令周期中使用了中断周期。–在中断周期中,处理器检查是否有中断发生,即是否出现中断信号。•没有中断信号:处理器继续运行,并通过取指周期取当前程序的下一条指令;•有中断信号:将进入中断响应,对中断进行处理。电子科技大学嵌入式软件工程中心取指令执行指令检查中断处理中断开始停止取周期执行周期中断周期允许中断中断和指令周期不允许中断电子科技大学嵌入式软件工程中心中断响应•中断响应是由处理器内部硬件完成的中断序列,而不是由程序执行的。•在Intel80x86中,中断响应过程的操作如下:–对可屏蔽中断,从8259中断控制器芯片读取中断向量号;–将标志寄存器EFLAG、CS和IP压栈;–对于硬件中断,复位标志寄存器中的IF和TF位,禁止可屏蔽外部中断和单步异常;–根据中断向量号,查找中断向量表,根据中断服务程序的首址转移到中断服务程序执行。电子科技大学嵌入式软件工程中心中断处理•中断处理:执行中断服务程序。–中断服务程序用来处理自陷、异常或是中断。–尽管导致自陷、异常和中断的事件不同,但大都具有相同的中断服务程序结构。电子科技大学嵌入式软件工程中心中断处理•中断服务程序的主要内容:–保存上下文:保存中断服务程序将要使用的所有寄存器的内容,以便于在退出中断服务程序之前进行恢复;–如果中断向量被多个设备所共享,为了确定产生该中断信号的设备,需要轮询这些设备的中断状态寄存器;–获取中断相关的其他信息;–对中断进行具体的处理;–恢复保存的上下文;–执行中断返回指令,使CPU的控制返回到被中断的程序继续执行。电子科技大学嵌入式软件工程中心中断处理•如果对一个中断的处理还没有完成,又发生了另外一个中断,则称系统中发生了多个中断。–非嵌套的中断处理方式:在处理一个中断的时候,禁止再发生中断。–嵌套的中断处理方式:定义中断优先级,允许高优先级的中断打断低优先级中断的处理过程。电子科技大学嵌入式软件工程中心非嵌套的中断处理方式•处理中断的时候,将屏蔽所有其他的中断请求。–新的中断将被挂起,当处理器再次允许中断时,再由处理器进行检查。–如果程序执行过程中发生了中断,在执行中断服务程序的时候将禁止中断;–中断服务程序执行完成后,恢复正常执行流程被中断的程序之前再使能中断,并由处理器检查是否还有中断。•非嵌套中断处理方式使中断能够按发生顺序进行处理。•没有考虑优先级,使高优先级中断不能得到及时的处理,甚至导致中断丢失。电子科技大学嵌入式软件工程中心程序中断服务程序A中断服务程序B中断的非嵌套顺序处理电子科技大学嵌入式软件工程中心嵌套的中断处理方式•中断被划分为多个优先级,中断服务程序只屏蔽那些比当前中断优先级低或是与当前中断优先级相同的中断,在完成必要的上下文保存后即使能中断。•高优先级中断请求到达的时候,需要对当前中断服务程序的状态进行保存,然后调用高优先级中断的服务程序。•当高优先级中断的服务程序执行完成后,再恢复先前的中断服务程序继续执行。电子科技大学嵌入式软件工程中心程序高优先级中断服务程序B中断服务程序A中断的嵌套处理电子科技大学嵌入式软件工程中心实时内核的中断管理•中断服务程序通常包括三个方面的内容:–中断前导:•保存中断现场,进入中断处理。–用户中断服务程序:•完成对中断的具体处理。–中断后续:•恢复中断现场,退出中断处理。电子科技大学嵌入式软件工程中心实时内核的中断管理•中断前导和中断后续通常由内核的中断接管程序来实现。–硬件中断发生后,中断接管程序获得控制权,先由中断接管程序进行处理,然后才将控制权交给相应的用户中断服务程序。–用户中断服务程序执行完成后,又回到中断接管程序。中断向量号0物理中断向量表中断向量号1中断向量号2中断向量号3……中断向量号n中断接管程序中断向量号0虚拟中断向量表中断向量号1中断向量号2中断向量号3……中断向量号m用户中断服务程序0用户中断服务程序1用户中断服务程序2用户中断服务程序3用户中断服务程序m用户中断服务程序电子科技大学嵌入式软件工程中心实时内核的中断管理•中断接管程序负责中断处理的前导和后续部分的内容。–中断处理前导:保存必要的寄存器,并根据情况在中断栈或是任务栈中设置堆栈的起始位置,然后调用用户中断服务程序。–中断处理后续:实现中断返回前需要处理的工作,主要包括恢复寄存器和堆栈,并从中断服务程序返回到被中断的程序。•用户中断服务程序被组织为一个表,称为虚拟中断向量表。•如果需要在用户中断服务程序中使用关于浮点运算的操作,中断前导和中断后续中还需要分别对浮点上下文进行保存和恢复。电子科技大学嵌入式软件工程中心实时内核的中断管理•如果中断处理导致系统中出现比被中断任务具有更高优先级的就绪任务出现:–需要把高优先级任务放入就绪队列;–把被中断的任务从执行状态转变为就绪状态;–完成用户中断服务程序后,在中断接管程序的中断后续处理中激活重调度程序,使高优先级任务能在中断处理工作完成后得到调度执行。电子科技大学嵌入式软件工程中心实时内核的中断管理•在允许中断嵌套的情况下,在执行中断服务程序的过程中,如果出现高优先级的中断:–当前中断服务程序的执行将被打断,以执行高优先级中断的中断服务程序;–当高优先级中断的处理完成后,被打断的中断服务程序才又得到继续执行;–发生中断嵌套时,如果需要进行任务调度,任务的调度将延迟到最外层中断处理结束时才能发生
本文标题:电子科技大学嵌入式软件工程中心
链接地址:https://www.777doc.com/doc-76368 .html