东南大学集成电路学院国家ASIC系统工程技术研究中心嵌入式操作系统第四章中断管理戚隆宁longn_qi@seu.edu.cn13813839703国家ASIC系统工程技术研究中心主要内容1.中断管理2.时间管理国家ASIC系统工程技术研究中心1.中断管理1.1中断的缘由1.2中断的概念1.3中断的分类1.4中断的处理1.5uC/OSII的中断管理国家ASIC系统工程技术研究中心1.1中断的缘由缘起:CPU高速的处理能力与慢速的I/O设备的矛盾早期CPU采用轮询方式(polling)与I/O设备交互。CPU必须不停的查询I/O设备的状态,直到状态有效才进行通信。–串行处理,只能按照固定顺序逐个查询和依次处理,无法做到并发;–等待状态有效的过程中,CPU不能去做其他复杂耗时的事情,否则会延误处理。解决方案:允许打断正常执行流程,转而处理其他事务国家ASIC系统工程技术研究中心1.2中断的概念定义(广义)–(动词)打断正常执行流程,转而处理其他事务的过程–(名词)导致正常执行流程被打断的事件或信号国家ASIC系统工程技术研究中心1.3中断的分类根据中断来源划分–外部中断/异步中断•(外部硬件)中断–可屏蔽中断–不可屏蔽中断(non-maskableinterrupt,NMI)–内部中断/同步中断•软陷(trap)/软中断(softwareinterrupt,SWI)•异常(exception)/内部硬件中断国家ASIC系统工程技术研究中心外部中断特征–中断信号由外部硬件产生–可以在任何时间内发生,包括指令执行期间,具有不确定性,是一个异步过程例如–键盘、鼠标–串口、并口、网口–实时时钟国家ASIC系统工程技术研究中心外部中断的可屏蔽性当程序的正常执行流程不允许被打断的情况下,需要屏蔽外部中断的干扰,即需要有可屏蔽的中断。–外部设备的中断请求信号一般需要先通过CPU外部的中断控制器,再与CPU的中断引脚相连;–需要通过软件进行中断的识别;–中断控制器可以通过软件进行控制,以禁止或是允许中断。有一些中断十分重要(如:掉电),必须立即处理,任何时候都不允许屏蔽,即需要非屏蔽的中断–连接CPU另一个中断引脚,与可屏蔽中断信号区分开;–无需软件识别;–硬件决定,无软件控制。国家ASIC系统工程技术研究中心内部中断特征–由CPU控制单元产生–只能在指令执行完毕后产生,因此是一个同步过程包括–软陷–异常国家ASIC系统工程技术研究中心软陷概念:通过处理器的软件指令、可预期地使处理器正在执行的程序的执行流程发生变化,以执行特定的程序。•Intel80x86中的INT指令•ARM中的SWI指令•Motorola68000系列中的Trap指令特征–需要调用处理器指令,是显式的事件–需要无条件地执行用途–系统调用国家ASIC系统工程技术研究中心异常概念:由处理器内部硬件自动产生的信号,使处理器正在执行的程序的执行流程发生变化,执行特定的处理程序。•被0除•执行非法指令•内存保护故障特征–无需处理器指令–需要无条件执行用途–故障恢复–内存保护国家ASIC系统工程技术研究中心1.4中断处理中断检测中断响应中断处理国家ASIC系统工程技术研究中心中断检测中断检测在每条指令结束时进行,检测是否有中断请求或是否满足异常条件。–为满足中断处理的需要,在指令周期中使用了中断周期。–在中断周期中,处理器检查是否有中断发生,即是否出现中断信号。•没有中断信号:处理器继续运行,并通过取指周期取当前程序的下一条指令;•有中断信号:将进入中断响应,对中断进行处理。国家ASIC系统工程技术研究中心中断和指令周期取指令执行指令检查中断处理中断开始停止取周期执行周期中断周期不允许中断允许中断国家ASIC系统工程技术研究中心中断检测中断的触法方式–边沿触发–电平触发国家ASIC系统工程技术研究中心中断响应概念:从中断发生到程序开始处理中断的过程中断响应过程(处理器自动完成)–保护断点(保存寄存器、设置标志位)•x86:EFLAGS、CS、EIPStack•ARM:PC+4LR、CPSRSPSR–获得中断类型号–采用直接中断方式或向量中断方式转入中断服务程序国家ASIC系统工程技术研究中心直接中断中断服务程序首址固定,直接根据中断类型号跳转到对应的中断服务程序特点–可快速识别中断源,但灵活性差–每个中断源拥有独立的中断服务程序,适合中断源较少的系统国家ASIC系统工程技术研究中心向量中断中断硬件设备的硬件中断线(也称为中断请求IRQ)被中断控制器汇集成中断向量(interruptvector),每个中断向量对应一个中断服务程序中断向量表(interruptvectortable):由对应不同中断类型号的中断服务程序首址或第一条指令构成–一般存放在内存地址0x00000000或是0xFFFF0000处–X86:256个入口,每个中断向量四个字节(中断服务程序首址)。–ARM7/9:7个入口,Reset、UndefinedInstruction、SWI、PrefetchAbort、DataAbort、Reserved、IRQ、FIQ–ARM11/Cortex:64个入口,VIC中断服务程序首址可由软件设置,需要根据中断类型号查找中断向量表获得对应的中断服务程序首址或第一条指令,然后自动跳转到对应的中断服务程序国家ASIC系统工程技术研究中心中断响应影响中断响应的主要因素–最长指令执行时间–在一条指令执行完成后,处理其他更紧急的任务所用时间–第一次“关CPU中断”到第一次“开CPU中断”所经历的时间–多个中断源同时请求中断服务时,通过软件找到相关中断源的中断服务程序入口所经历的时间国家ASIC系统工程技术研究中心中断响应中断延迟:因指令执行或中断屏蔽造成的中断响应的延长。中断延迟时间和响应时间的计算中断延迟时间=MAX(最长指令执行时间,最长关中断时间)+中断服务开始执行的时间中断响应时间=中断延迟时间+保存CPU内部寄存器的时间国家ASIC系统工程技术研究中心中断处理中断服务程序(ISR)中断嵌套中断优先级中断屏蔽中断重入国家ASIC系统工程技术研究中心中断服务程序中断服务程序(InterruptServiceRoutine)–用于处理(广义)中断的程序代码主要工作(1)保存上下文:保存中断服务程序将要使用的所有寄存器的内容,以便于在退出中断服务程序之前进行恢复;(2)中断源识别:如果中断向量被多个设备所共享,为了确定产生该中断信号的设备,需要轮询这些设备的中断状态寄存器;(3)获取中断相关的其他信息;(4)中断处理:对中断进行具体的处理;(5)恢复保存的上下文;(6)返回被中断的程序:执行中断返回指令,使CPU的控制返回到被中断的程序继续执行。国家ASIC系统工程技术研究中心中断嵌套产生条件:对一个中断的处理还没有完成时,又发生了另外一个中断,即系统中发生了多个中断时处理方法–非嵌套的中断处理方式:•在处理一个中断的时候,禁止再发生中断。–嵌套的中断处理方式:•定义中断优先级,允许高优先级的中断打断低优先级中断的处理过程。•允许屏蔽中断国家ASIC系统工程技术研究中心中断的非嵌套处理程序中断服务程序A中断服务程序B国家ASIC系统工程技术研究中心中断的嵌套处理程序中断服务程序A高优先级中断服务程序B国家ASIC系统工程技术研究中心中断屏蔽对于可屏蔽中断,通过禁止CPU响应中断请求的方法,改变中断源的中断服务顺序实现机制–开关中断–屏蔽码:每个中断源对应一个屏蔽位,通过设置屏蔽位控制对中断源的响应–改变中断优先级国家ASIC系统工程技术研究中心用户中断服务程序中断服务程序通常都对中断进行了屏蔽,以保证其他中断和系统中的任务能够得到及时处理。–中断服务程序通常都只处理一些必要的操作,其他操作则通过任务的方式来进行。–中断服务程序只是进行与外围设备相关的数据的读写操作,并在需要的情况下向外围设备发送确认信息,然后唤醒另外的任务进行进一步的处理。用来配合中断服务程序的另外的任务通常被称为DSR(deferredserviceroutine)或IST(interruptservicethread),即用户中断服务程序。国家ASIC系统工程技术研究中心用户中断服务程序优点–可以使用实时内核提供的应用编程接口–可同系统中的任务进行更多方式的通信–允许更长时间和更复杂的执行缺点–实时性差一些国家ASIC系统工程技术研究中心中断处理国家ASIC系统工程技术研究中心中断的栈独立的中断栈共享任务的栈用户栈堆静态数据代码中断栈中断向量表中断向量表用户栈堆静态数据代码中断栈(A)(B)内存高端内存低端国家ASIC系统工程技术研究中心中断重入具有相同中断服务程序(函数)的中断嵌套发生可重入条件–保护共享资源–避免寄存器冲突示例(ARM)国家ASIC系统工程技术研究中心与中断相关的任务管理如果中断处理导致系统中出现比被中断任务具有更高优先级的就绪任务出现:–需要把高优先级任务放入就绪队列;–把被中断的任务从执行状态转变为就绪状态;–完成用户中断服务程序后,在中断接管程序的中断后续处理中激活重调度程序,使高优先级任务能在中断处理工作完成后得到调度执行。国家ASIC系统工程技术研究中心1.5uC/OSII的中断管理中断服务程序–(1)保存全部CPU寄存器的值;–(2)调用OSIntEnter(),或直接把全局变量OSIntNesting(中断嵌套层次)加1;–(3)执行用户代码做中断服务;–(4)调用OSIntExit();–(5)恢复所有CPU寄存器;–(6)执行中断返回指令。国家ASIC系统工程技术研究中心1.5uC/OSII的中断管理关键函数–OSIntEnter(C代码分析)–OSIntCtxSw(汇编代码分析)–OSIntExit(C代码分析)国家ASIC系统工程技术研究中心1.5uC/OSII的中断管理中断服务过程国家ASIC系统工程技术研究中心1.5uC/OSII的中断管理中断服务过程国家ASIC系统工程技术研究中心1.5uC/OSII的中断管理中断服务过程国家ASIC系统工程技术研究中心1.5uC/OSII的中断管理中断服务过程国家ASIC系统工程技术研究中心1.5uC/OSII的中断管理中断服务过程国家ASIC系统工程技术研究中心1.5uC/OSII的中断管理中断服务过程国家ASIC系统工程技术研究中心1.5uC/OSII的中断管理中断服务过程国家ASIC系统工程技术研究中心1.5uC/OSII的中断管理中断服务过程国家ASIC系统工程技术研究中心1.5uC/OSII的中断管理中断服务过程国家ASIC系统工程技术研究中心1.5uC/OSII的中断管理中断服务过程国家ASIC系统工程技术研究中心1.5uC/OSII的中断管理中断服务过程国家ASIC系统工程技术研究中心1.5uC/OSII的中断管理中断服务过程国家ASIC系统工程技术研究中心1.5uC/OSII的中断管理中断服务过程国家ASIC系统工程技术研究中心1.5uC/OSII的中断管理中断服务过程国家ASIC系统工程技术研究中心1.5uC/OSII的中断管理中断服务过程国家ASIC系统工程技术研究中心1.5uC/OSII的中断管理中断服务过程国家ASIC系统工程技术研究中心国家ASIC系统工程技术研究中心1.5uC/OSII的中断管理中断切换(OSIntCtxSw)与任务切换(OS_TASK_SW)的区别–无需保存寄存器(进入中断时已保存)–需要保证所有被挂起的任务的栈结构一致(调整栈指针)中断退出(OSIntExit)与任务调度(OSSched)的区别–中断嵌套层数的判断–就绪表检索值的保存–切换方式国家ASIC系统工程技术研究中心2.时间管理2.1时间管理的功能2.2时间管理的硬件基础2.3uC/OSII的时间管理国家ASIC系统工程技术研究中心2.1时间管理