2022年嵌入式实时系统中断管理技术的分析研究.docx
精品学习资源1. <2639)嵌入式实时系统中断治理技术的讨论P16本文原文具体内容如下:. 嵌入式实时系统中断治理技术的讨论雷红卫 1 桑楠 2 熊光泽 3电子科技高校 运算机科学与工程学院四川成都 610054 >摘要 :嵌入式实时系统中断治理技术直接影响到系统的实时响应性能,本文通过对嵌入式内核中断治理技术的讨论,归结出“中断前后段处理”模型;同时,针对一些处理器中多个外部中断共用一个向量的问题,提出了一种单向量多中断处理映射技术,并在PowerPC mpc860处理器上实现 Delta OS内核时,验证了此技术的有效性;关键词 :实时性;中断;中断治理模式;嵌入式实时系统Research on Interrupt Management Technology ofEmbedded Real-time SystemsLEI Hong-wei SANG nanXIONG Guang-ze<CollegeofcomputerofUniversityofElectronicandScience TechnologyofChina Chengdu, Sichuan 610054 , China )ABSTRACT: The interrupt management technologies of embedded real-time systems have directinfluence on the system response time.Inthis papera mode of the interrupt processing, called fromer-afterinterruptprocessing issummedup, andamap technologyof vector shared interruptprocessing is presented . The effectness of the technology is verified with the experiment of Delta OS kernel porting.Key words: real-time ;interrupt ; interrupt management mode, embedded real-time system1、引言嵌入式实时系统 <real-time System)是一个能够在指定或者确定的时间内对外部大事作出响应的系统,其重要的特性是实时响应性;嵌入式实时系统对外部大事的响应一般都是通过中断来处理的,其对中断的处理方式,直接影响到系统的实时性能;嵌入式实时系统中关于中断的一些核心术语:中断机制:总体来说是系统关于中断处理的手段,嵌入式系统的中断处理机制包括: 硬件的中断触发、响应机制和内核对中断的治理服务;硬件的中断处理机制因处理器不同而有所差异,例如 Intelx86系列一般采纳二层的中断处理机制,而PowerPC体系一般采纳三层的中断处理机制;而不同厂家的嵌入式实时操作系统,其中断治理服务模式也不尽相同;中断处理:指系统对于中断大事的操作过程;衡量此操作过程的一个指标就是中断处理时间;中断推迟:用来描述从中断大事触发到系统对其响应并开头执行中断服务程序的第一条指令此间的一种状态;衡量此状态的属性可用中断推迟时间或者中断响应时间来描述;欢迎下载精品学习资源中断治理:指嵌入式内核治理中断资源的机制;2、嵌入式内核的中断治理模式2. 1 简介实时多任务操作系统是嵌入式应用开发的基础平台,早期的嵌入式实时应用软件直接 在处理器上运行,没有RTOS支持,只需一个主控程序来掌握各个流程,这个主控程序相当于一个监控程序,此时的应用程序,监控程序和硬件平台是绑定在一起的;随着嵌入式应用开发的深化和广泛,这种主控程序掌握的才能越来越显得力不从心,于是现在的大多嵌入式应用开发都需要嵌入式操作系统的支持;实际上,此时的嵌入式操作系统相当于一个通用而复杂的主控程序,为嵌入式应用软件供应更强大的开发平台和运行环境;由于嵌入式系统已经将处理器,中断,定时器,IO等资源包装取来,用一系列的API 供应应用户, 应用程序可以不关注底层硬件,直接借用操作系统供应的功能进行开发,此时的嵌入式操作系统可以视为一个虚拟机,从今意义来说,嵌入式操作系统相当一个资源治理器, 中断已作为一种资源被嵌入式操作系统这种容器来治理;嵌入式内核中断处理的治理模式直接影响到系统的实时性能;在嵌入式实时系统中,系统可以接管中断或者不接管中断;在早期的嵌入式实时系统中,中断部分作为独立的部分,系统不接管中断部分;此时,中断部分作为前台处理,系统主处理部分作为后台处理;这种处理模式中,前台的中断大事是随机发生的,一旦发生中断,掌握权由后台的主控程序转移到前后的中断处理;后台的主控程序无法掌握中断处理,当中断处理完后,掌握权又回到后台的主控程序;后台的主控程序可以是一个单任务或者是多任务,不管是单任务或者多任务,这只是后台的处理机制,并不会影响前台的处理;随着嵌入式实时系统的进展,为了便利对中断的处理,系统内核常接管中断的处理, 比如供应一些系统调用接口来安装用户的中断,供应统一的中断处理接口等;依据系统内核的可抢占或者非抢占性,系统内核接管中断又有两种不同处理模式如图 11:图 11非抢占式内核和抢占式内核的中断处理模式在非抢占式内核的中断处理模式中,当在中断处理过程中有高优先级任务就绪时,不会立刻切换到高优先级的任务,必需等待中断处理完后返回到被中断的任务中,等待被中断的任务执行完后,再切换的高优先级任务;在抢占式内核的中断处理模式中,假如有高优先级任务就绪时,就马上切换到高优先级的任务;抢占式内核的中断处理模式下时序图欢迎下载精品学习资源如图 1 2;任务M中断恳求中断现场爱护中断推迟中断响应中断处理A任务N中断现场复原任务M中断处时理间图1 2抢占内核的中断处理模式时序图在上面的时序图中,符号A 表示有高优先级任务 N就绪;这种处理模式有利于高优先级任务的处理,但相应的延长了被中断的低优先级任务的执行时间;2. 2嵌入式内核接管中断的处理机制嵌入式内核接管中断的处理机制主要包括两个部分:面对应用的编程接口部分和面对底层的处理部分;面对用户的应用的编程接口的任务之一是供支持用户安装中断处理例程,用户可以调用这些接口部分将自己的中断处理程序安装到指定的中断向量处;如Vxwork s内核中通过 intConnectvector,routine,arg> 将中断处理程序 routine与向量号 vector绑定在一起; VRTXsa 内核中通过 sys_load_vrtx_isr 来安装一个中断句柄;DeltaOS内核中通过 delta_interrupt_catchvector,new_isr_handler,vector,old_isr_handler>将用户指定的 n ew_isr_handler 安装到对应的 vector 处,同时保留以前的中断句柄;面对底层处理部分又可以分为两个部分:中断向量表部分和中断处理部分;中断向量表部分主要指中断向量表的定位和向量表中表项内容的形式,一般在嵌入式内核中都供应一个中断向量表,其表项的向量号应与处理器中所描述的向量对应;向量表表项的内容形式一般有两种形式;最常见的形式就是在具体的向量位置储备的是一些转移程序,转到具体的中断处理部分;另一种形式也就是中断向量位置存放具体的中断处理程序,此仅针对向量号之间彼此有肯定的距离,此距离足以存放中断处理程序;面对底层部分中的中断处理部分是整个嵌入式内核中断治理的核心,在后面有具体的分析;欢迎下载精品学习资源在嵌入式内核中断治理中,仍有其他一些部分如关于中断治理的初始化部分,包括对中断掌握器的初始化和中断处理环境的构建等;在面对用户部分中,安装中断的向量号有两种类型:实向量号 <硬件处理器指定的向量)和虚向量号,虚向量号主要便利系统对一些中断的治理,如在一些处理器体系中一些外部设备只有一个中断向量号,就可采纳虚向量号来治理这些外部设备;这些虚向量号统一映射到那个实的中断向量号处;假如采纳实向量号就在安装时,对向量号要进行安全性检查,由于系统中有些核心的向量是不答应安装的,例如,在一些嵌入式系统中,调试代理专用的一些向量,比较常见的int 3,这些向量对应的处理部分是调试代理程序;假如用户在此向量处安装了其它中断处理程序,就使系统无法调试;对于嵌入式内核中断治理模式图中的中断处理部分,现以Delta OS内核为例,具体说明其中断处理部分;DeltaOS内核中断处理部分采纳了“统一接管 ”的思想,即 DeltaOS为全部的外部中断都供应一个统一的入口 _ISR_Handler ;此入口的主要功能有爱护中断现场,执行用户的中断服务程序,判定是否答应可抢占调度,中断现场的复原等; Delta OS内核中断处理的流程图如图 13;开头中断现场的爱护设置中断屏蔽级别是是否中断嵌套否切换到系统专用堆栈执行用户的中断处理句柄复原中断级别否是否答应任务调度是复原中断现场切换到高优先级任务中断返回欢迎下载精品学习资源图1 3 Delta OS 内核中断处理流程图从Delta OS 内核中断处理流程图中,可看出嵌入式内核中一些专用的处理方式;<1)在嵌入式内核中一般有两个堆栈:系统栈和任务栈;系统栈是系统为中断上下文处理而预留的堆栈;任务栈属于任务本身的私有堆栈,用来储备任务执行过程中一些暂时变量等信息;由于中断上下文不隶属于任何任务的上下文中,所以嵌入式内核一般都有一个系统栈特地处理中断上下文的;当产生中断且非中断嵌套时,此时的堆栈由被中断的任务中的任务栈切换到系统栈,当在中断处理中又发生中断,此时堆栈不再切换,仍用系统栈;当退出最外层中断时,堆栈又由系统栈切换到被中断的任务中的任务栈;<2)一般嵌入式内核有两种形式:抢占式和非抢占式;而为了更好的支持系统的实时性,许多嵌入式实时内核都是抢占式内核,如Vxworks,pSOS等;从上面 DeltaOS内核中断处理流程图可知DeltaOS是抢占式内核,由于在中断处理中当检测到有高优先级任务就绪时,就会切换到高优先级任务里,而不是等到退出中断后,再进行任务调度;<3)在嵌入式内核中,中断时机和调度时机直接影响到系统的实时性;关中断的时机一般在执行核心操作之前,核心操作包括对链表的操作,对核心数据项<如指示同步,反应重要信息状态)的修改等场合都需关中断;当执行完相应的核心操作后,就可以开中断;开调度时机主要供应重新调度的机会,一般在执行操作系统核心调用前关调度,当执行完后开调度;系统中开关中断与开关调度的关系大致如下:开关中断的粒度比开关调度要深,要细;开关中断主要为了实时性,供应各种可能的中断时机,答应响应外部中断;中断里也可以执行调度和系统调用,但中断的上下文与任务的上下文是不一样的,因此在中断里只能执行一些特定的系统调用,这些特定系统调用是不会引起调用堵塞的,不要试图在中断里执行猎取信号量,执行IO操作等这些很简单引起调用堵塞的系统调用;上面具体分析了嵌入式内核中断治理模式,特殊着重探讨了嵌入式内核中断处理部分;中断治理模型的提出和实现就是基于本节的分析而得出的;3、中断治理模型3. 1中断前后段处理模型在前面嵌入式内核中断治理模式分析中,嵌入式内核一般采纳中断统一接管思想,在中断统一接管中调用用户的中断服务程序;中断治理模式中的中断处理部分又可以细化,如嵌入式 linux 系统中关于中断治理机制中提出了“前半部 ”和“后半部 ”的处理思想;其实这种中断治理的思想把中断处理部分依据重要性分两部分,将必需要做的中断处理部分归为“ 前半部 ”,即这部分在中断处理部分实施;而将中断处理中可以推迟操作且影响不大的部分归为 “后半部 ”,这部分是在退出中断服务程序后实施;通过这样的中断治理思想削减的中主程序T1外部中断恳求T2中断处理程序中断返回中断前部置标T3中断后部通知5 / 8欢迎下载精品学习资源断的服务时间,为其他的外部大事的中断响应供应更多的时机;在实时内核中仍有其他的中断处理机制,它们的思想都是尽量削减中断处理的时间;如在一些IO处理部分, IO操作所引起的中断处理部分只做标记功能,即只设一个标志或者发一个消息说明外部中断来了,而具体的 IO传输操作放在中断外部实施;依据上面的分析,将前面的中断处理思想归结为:中断 “前后 ”段处理模型,其模型图如图1 4:图1 4 中断前后段处理模型图在上面的 “中断前后段模型图 ”中, “中断前部 ”主要完成外部大事发生中断恳求时系统对其响应所完成的必要功能如中断现场爱护,数据预取和预放等;“置标部分 ”主要通知某个任务或者线程已有一个中断发生,且中断的前部已完成;“中断后部 ”此部分并不是在中断服务程序里执行,它是由接收到标记或者通知的任务或者线程来完成的,主要是完成本应在中断服务里完成的后继工作;举个例子当网络接口卡报告新的数据包到达时,“中断前部”主要将数据包送到协议层;“中断后部 ”完成对数据包的具体处理;在此 “中断前后段处理模型”中,应当留意两个方面:1. 如何划分 “中断前部 ”和“中断后部 ”;基本的划分标准就是应当立刻处理的和必要的功能部分放在 “中断前部 ”完成,可以推迟处理或者可以在中断外处理的功能部分放在“中断后部 ”完成;2. “中断后部 ”何时执行,这取决于用于完成“中断后部 ”功能的任务或者线程的优先级,假如要让中断的后继部分较快的执行,就可以通过提高获得标记的任务或者线程的优先级;从极限角度思维,当获得标记的任务或者优先级很高时,在“中断前部 ”完成退出中断后,立刻就执行获得标记的任务或者线程,这相当于获得标记的任务或者线程执行部分就在中断里执行;假如中断的后继部分并不要求较快的执行,就可以赋给获得标记的任务或者线程为一般的优先级;3. 2单向量多中断处理映射技术<1) 问题的提出在前面的嵌入式内核中断治理模式图中,中断向量表部分也属于模式图的一部分,不同嵌入式处理器体系中断向量的支持也不同;在PowerPC8xx 系列的处理器中,全部外部中断对应的向量都是0x500,为了处理这种多个外部中断共用一 个向量的情形,本节提出了单向量多中断处理技术,在介绍此技术之前,对一些术语说明如下:实向量:外部设备中断触发时,实际对应的硬件中断向量号,也可以称为“硬向量号 ”;虚向量:系统为了便利治理外设中断,为其安排的向量号,也可以称为“软向量号 ”;回调函数:与虚向量配对的服务程序;中断统一接口函数:与实向量配对的中断处理程序;此技术的思想如下:当外设中断触发时,第肯定位到实向量位置,调用中断统一接口函数,中断统一接口函数对外设中断触发的参数进行测试,查找到其对应的虚向量,从而触发虚向量处的回调函数;从而实现多个外部中断通过同一的实向量到多个虚向量的映射,解决了单向量多中断处理的问题;欢迎下载精品学习资源单向量多中断处理映射技术的示意图如图1 5虚向量F1V1实向量F2V2gvnisF3V3tpec中断统一urreitnDve接口函数IFn-1Vn-1FnVn图1 5单向量多中断处理映射图在上面的单向量多中断处理映射图中,V表示多个外设共享的中断恳求向量号,V1,V2, Vn- 1,Vn 表示不同外设对应的虚向量号,Fi表示与 Vi 对应的回调函数 <i=1.n );<2) 实现基于前面的分析,将单向量多中断处理映射技术运用于DeltaOS移植到 PowerPC mpc860平台上; PowerPCmpc860处理器的外部中断向量号为0x500;在单向量多中断处理模型图中,V=0x500 ;设有n个外部设备分别为D1,D2,D3, ,Dn,这些外部设备中断触发时的中断标志分别为PPC_D1, PPC_D2,PPC_D3, ,PPC_Dn; DeltaOS内核为这些外部设备安排的虚向量号分别为V_D1,V_D2,V_D3, ,V_Dn ,在实现中分别取值: 0x2000, 0x2100 , 0x2200等,即每个虚向量号间距256个字节;在 DeltaOS内核中声明白一个全局虚向量表_ISR_VECTOR_TABLE,通过系统调用 delta_interrupt_c atch,将用户的中断服务程序安装到指定的虚向量号处;DeltaOS 用统一的中断接口函数_ISR_Handler来处理外部中断;在模型实现中有两个重要的功能模块:用户中断安装模块和中断处理模块;下面分别用伪代码描述这两个模块的功能;用户中断安装模块delta_interrupt_catch 的伪代码实现如下:delta_interrupt_catchvector, new_isr_handler,old_isr_handler> 1、检查向量号的有效性2、检查新中断服务程序的有效性3、储存旧的中断服务程序指针4、安装用户指定的新中断服务程序_ISR_VECTOR_TALBEvector=new_isr_handler外设中断触发时中断处理模块_ISR_Handler 的伪代码实现如下:_ISR_Handlervoid>1、中断现场的爱护2、中断屏蔽位的设置3、外设中断标志的检测switch 标志> case PPC_D1:欢迎下载精品学习资源case PPC_D2:case PPC_D3:case PPC_D :F1=_ISR_VECTOR_TABLEV_D1 且执行 F1的功能F2=_ISR_VECTOR_TABLEV_D2 且执行 F2的功能F3=_ISR_VECTOR_TABLEV_D3 且执行 F3的功能F=_ISR_VECTOR_TABLEV_D 且执行 F的功能执行系统默认的中断处理程序欢迎下载精品学习资源4、中断屏蔽位的复原5、依据调度标志进行调度6、中断现场的复原此技术已胜利的解决了PowerPCmpc860中单向量多中断处理的问题,而且其实现并不影响嵌入式内核的体系,具有较好的移植性;4、小结本文主要讨论了嵌入式实时系统中断治理技术,从硬件体系和系统治理两方面阐述了影响 中断性能的因素,着重分析了嵌入式内核中断治理模式;在嵌入式内核中断治理中,归结 出“中断前后段处理”模型,并针对一些处理器的多中断共用一个向量的问题,引入了单向量多中断处理的映射技术,并给以实现,对提高嵌入式实时系统的实时性供应了肯定的 参考价值;5、参考文献1 InstallingISRs in Spectra for PowerPC ByMarks Saunders, Technical Marketing Solutions Engineer , 2000.2 MPC860 PowerQUICCTM User Manual , 1998.3 Programming Enviroments Manual for the PowerPC Architecture ,1997.4 Jean J.Labrosse ,UC/OS The Real-time Kernel ,R&D Publications,Inc, 1992.5 Stephen R.Savitzky , Real-time Microprocessor Systems, 1997.6 Beck,Michael .Linux Kerenl Internals . Addison-Wesley, 1997.欢迎下载