已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.(2639)嵌入式实时系统中断管理技术的研究P16本文原文详细内容如下:. 嵌入式实时系统中断管理技术的研究 雷红卫 桑楠2 熊光泽3 ( 电子科技大学 计算机科学与工程学院 四川成都 610054 )摘要: 嵌入式实时系统中断管理技术直接影响到系统的实时响应性能,本文通过对嵌入式内核中断管理技术的研究,归结出“中断前后段处理”模型;同时,针对一些处理器中多个外部中断共用一个向量的问题,提出了一种单向量多中断处理映射技术,并在PowerPC mpc860处理器上实现Delta OS内核时,验证了此技术的有效性。 关键词:实时性;中断;中断管理模式;嵌入式实时系统 Research on Interrupt Management Technology of Embedded Real-time Systems LEI Hong-wei SANG nan XIONG Guang-ze (College of computer of University of Electronic and Science Technology of China Chengdu,Sichuan 610054 , China)ABSTRACT: The interrupt management technologies of embedded real-time systems have direct influence on the system response time. In this paper a mode of the interrupt processing,called former-after interrupt processing is summed up,and a map technology of vector shared interrupt processing 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 system 1、引言嵌入式实时系统(real-time System)是一个能够在指定或者确定的时间内对外部事件作出响应的系统,其重要的特性是实时响应性。 嵌入式实时系统对外部事件的响应一般都是通过中断来处理的,其对中断的处理方式,直接影响到系统的实时性能。嵌入式实时系统中关于中断的一些核心术语: 中断机制:总体来说是系统关于中断处理的手段, 嵌入式系统的中断处理机制包括 :硬件的中断触发、响应机制和内核对中断的管理服务。硬件的中断处理机制因处理器不同而有所差异 ,例如Intel x86系列一般采用二层的中断处理机制,而PowerPC体系一般采用三层的中断处理机制;而不同厂家的嵌入式实时操作系统,其中断管理服务模式也不尽相同。 中断处理:指系统对于中断事件的操作过程。衡量此操作过程的一个指标就是中断处理时间。 中断延迟:用来描述从中断事件触发到系统对其响应并开始执行中断服务程序的第一条指令此间的一种状态。衡量此状态的属性可用中断延迟时间或者中断响应时间来描述。 中断管理:指嵌入式内核管理中断资源的机制。2、嵌入式内核的中断管理模式21 简介实时多任务操作系统是嵌入式应用开发的基础平台,早期的嵌入式实时应用软件直接在处理器上运行,没有RTOS支持,只需一个主控程序来控制各个流程,这个主控程序相当于一个监控程序,此时的应用程序,监控程序和硬件平台是绑定在一起的。随着嵌入式应用开发的深入和广泛,这种主控程序控制的能力越来越显得力不从心,于是现在的大多嵌入式应用开发都需要嵌入式操作系统的支持。实际上,此时的嵌入式操作系统相当于一个通用而复杂的主控程序,为嵌入式应用软件提供更强大的开发平台和运行环境。因为嵌入式系统已经将处理器,中断,定时器,IO等资源包装取来,用一系列的API提供给用户,应用程序可以不关注底层硬件,直接借用操作系统提供的功能进行开发,此时的嵌入式操作系统可以视为一个虚拟机 ,从此意义来说,嵌入式操作系统相当一个资源管理器, 中断已作为一种资源被嵌入式操作系统这种容器来管理 。嵌入式内核中断处理的管理模式直接影响到系统的实时性能。 在嵌入式实时系统中,系统可以接管中断或者不接管中断。在早期的嵌入式实时系统中,中断部分作为独立的部分,系统不接管中断部分。此时,中断部分作为前台处理,系统主处理部分作为后台处理。这种处理模式中,前台的中断事件是随机发生的,一旦发生中断,控制权由后台的主控程序转移到前后的中断处理。后台的主控程序无法控制中断处理,当中断处理完后,控制权又回到后台的主控程序。后台的主控程序可以是一个单任务或者是多任务,不管是单任务或者多任务,这只是后台的处理机制,并不会影响前台的处理。随着嵌入式实时系统的发展,为了方便对中断的处理,系统内核常接管中断的处理,比如提供一些系统调用接口来安装用户的中断,提供统一的中断处理接口等。根据系统内核的可抢占或者非抢占性,系统内核接管中断又有两种不同处理模式如图11: 图11非抢占式内核和抢占式内核的中断处理模式在非抢占式内核的中断处理模式中,当在中断处理过程中有高优先级任务就绪时,不会立即切换到高优先级的任务,必须等待中断处理完后返回到被中断的任务中,等待被中断的任务执行完后,再切换的高优先级任务。在抢占式内核的中断处理模式中,如果有高优先级任务就绪时,则立刻切换到高优先级的任务。抢占式内核的中断处理模式下时序图如图12。图12抢占内核的中断处理模式时序图 在上面的时序图中,符号A表示有高优先级任务N就绪。这种处理模式有利于高优先级任务的处理,但相应的延长了被中断的低优先级任务的执行时间。22嵌入式内核接管中断的处理机制嵌入式内核接管中断的处理机制主要包括两个部分:面向应用的编程接口部分和面向底层的处理部分。面向用户的应用的编程接口的任务之一是供支持用户安装中断处理例程 ,用户可以调用这些接口部分将自己的中断处理程序安装到指定的中断向量处。如Vxworks 内核中通过intConnect(vector,routine,arg)将中断处理程序routine 与向量号vector绑定在一起;VRTXsa内核中通过sys_load_vrtx_isr来安装一个中断句柄;Delta OS 内核中通过delta_interrupt_catch(vector,new_isr_handler,vector,old_isr_handler)将用户指定的new_isr_handler安装到对应的vector处,同时保留以前的中断句柄。面向底层处理部分又可以分为两个部分:中断向量表部分和中断处理部分。中断向量表部分主要指中断向量表的定位和向量表中表项内容的形式,一般在嵌入式内核中都提供一个中断向量表, 其表项的向量号应与处理器中所描述的向量对应;向量表表项的内容形式一般有两种形式。最常见的形式就是在具体的向量位置存储的是一些转移程序,转到具体的中断处理部分;另一种形式也就是中断向量位置存放具体的中断处理程序,此仅针对向量号之间彼此有一定的距离,此距离足以存放中断处理程序。面向底层部分中的中断处理部分是整个嵌入式内核中断管理的核心,在后面有详细的分析。在嵌入式内核中断管理中,还有其他一些部分如关于中断管理的初始化部分,包括对中断控制器的初始化和中断处理环境的构建等。在面向用户部分中,安装中断的向量号有两种类型:实向量号(硬件处理器指定的向量)和虚向量号,虚向量号主要方便系统对一些中断的管理,如在一些处理器体系中一些外部设备只有一个中断向量号,则可采用虚向量号来管理这些外部设备。这些虚向量号统一映射到那个实的中断向量号处。如果采用实向量号则在安装时,对向量号要进行安全性检查,因为系统中有些核心的向量是不允许安装的,例如,在一些嵌入式系统中, 调试代理专用的一些向量,比较常见的int 3,这些向量对应的处理部分是调试代理程序。如果用户在此向量处安装了其它中断处理程序,则使系统无法调试。对于嵌入式内核中断管理模式图中的中断处理部分,现以Delta OS内核为例,详细说明其中断处理部分。Delta OS内核中断处理部分采用了“统一接管”的思想,即Delta OS 为所有的外部中断都提供一个统一的入口_ISR_Handler。此入口的主要功能有保护中断现场,执行用户的中断服务程序,判断是否允许可抢占调度,中断现场的恢复等。Delta OS内核中断处理的流程图如图13。图13 Delta OS 内核中断处理流程图从Delta OS 内核中断处理流程图中,可看出嵌入式内核中一些专用的处理方式。(1) 在嵌入式内核中一般有两个堆栈:系统栈和任务栈。系统栈是系统为中断上下文处理而预留的堆栈;任务栈属于任务本身的私有堆栈,用来存储任务执行过程中一些临时变量等信息。因为中断上下文不隶属于任何任务的上下文中,所以嵌入式内核一般都有一个系统栈专门处理中断上下文的。当产生中断且非中断嵌套时,此时的堆栈由被中断的任务中的任务栈切换到系统栈,当在中断处理中又发生中断,此时堆栈不再切换,仍用系统栈;当退出最外层中断时,堆栈又由系统栈切换到被中断的任务中的任务栈。(2) 一般嵌入式内核有两种形式:抢占式和非抢占式。而为了更好的支持系统的实时性,很多嵌入式实时内核都是抢占式内核,如Vxworks ,pSOS 等。从上面Delta OS 内核中断处理流程图可知Delta OS是抢占式内核,因为在中断处理中当检测到有高优先级任务就绪时,就会切换到高优先级任务里,而不是等到退出中断后,再进行任务调度。(3)在嵌入式内核中,中断时机和调度时机直接影响到系统的实时性。关中断的时机一般在执行核心操作之前,核心操作包括对链表的操作,对核心数据项(如指示同步,反应重要信息状态)的修改等场合都需关中断;当执行完相应的核心操作后,就可以开中断。开调度时机主要提供重新调度的机会,一般在执行操作系统核心调用前关调度,当执行完后开调度。系统中开关中断与开关调度的关系大致如下:开关中断的粒度比开关调度要深,要细。开关中断主要为了实时性,提供各种可能的中断时机,允许响应外部中断;中断里也可以执行调度和系统调用,但中断的上下文与任务的上下文是不一样的,因此在中断里只能执行一些特定的系统调用,这些特定系统调用是不会引起调用阻塞的,不要试图在中断里执行获取信号量,执行IO操作等这些很容易引起调用阻塞的系统调用。 上面详细分析了嵌入式内核中断管理模式,特别着重探讨了嵌入式内核中断处理部分。中断管理模型的提出和实现就是基于本节的分析而得出的。3、中断管理模型31中断前后段处理模型在前面嵌入式内核中断管理模式分析中,嵌入式内核一般采用中断统一接管思想,在中断统一接管中调用用户的中断服务程序。中断管理模式中的中断处理部分又可以细化,如嵌入式linux系统中关于中断管理机制中提出了“前半部”和“后半部”的处理思想。其实这种中断管理的思想把中断处理部分按照重要性分两部分,将必须要做的中断处理部分归为“前半部”,即这部分在中断处理部分实施;而将中断处理中可以延迟操作且影响不大的部分归为“后半部”,这部分是在退出中断服务程序后实施。通过这样的中断管理思想减少的中断的服务时间,为其他的外部事件的中断响应提供更多的时机。在实时内核中还有其他的中断处理机制,它们的思想都是尽量减少中断处理的时间。如在一些IO处理部分,IO操作所引起的中断处理部分只做标记功能,即只设一个标志或者发一个消息说明外部中断来了,而具体的IO传输操作放在中断外部实施。根据上面的分析,将前面的中断处理思想归结为:中断“前后”段处理模型,其模型图如图14:图14 中断前后段处理模型图在上面的“中断前后段模型图”中,“中断前部”主要完成外部事件发生中断请求时系统对其响应所完成的必要功能如中断现场保护,数据预取和预放等;“置标部分”主要通知某个任务或者线程已有一个中断发生,且中断的前部已完成;“中断后部”此部分并不是在中断服务程序里执行,它是由接收到标记或者通知的任务或者线程来完成的,主要是完成本应在中断服务里完成的后继工作。举个例子当网络接口卡报告新的数据包到达时,“中断前部”主要将数据包送到协议层;“中断后部”完成对数据包的具体处理。 在此“中断前后段处理模型”中,应该注意两个方面:1 如何划分“中断前部”和“中断后部”。基本的划分标准就是应该立即处理的和必要的功能部分放在“中断前部”完成,可以推迟处理或者可以在中断外处理的功能部分放在“中断后部”完成。2 “中断后部”何时执行,这取决于用于完成“中断后部”功能的任务或者线程的优先级,如果要让中断的后继部分较快的执行,则可以通过提高获得标记的任务或者线程的优先级。从极限角度思维,当获得标记的任务或者优先级很高时,在“中断前部”完成退出中断后,立即就执行获得标记的任务或者线程,这相当于获得标记的任务或者线程执行部分就在中断里执行。如果中断的后继部分并不要求较快的执行,则可以赋给获得标记的任务或者线程为普通的优先级。32单向量多中断处理映射技术(1)问题的提出在前面的嵌入式内核中断管理模式图中,中断向量表部分也属于模式图的一部分,不同嵌入式处理器体系中断向量的支持也不同。在PowerPC 8xx 系列的处理器中,所有外部中断对应的向量都是0x500,为了处理这种多个外部中断共用一个向量的情况,本节提出了单向量多中断处理技术,在介绍此技术之前,对一些术语解释如下: 实向量:外部设备中断触发时,实际对应的硬件中断向量号,也可以称为“硬向量号”。 虚向量:系统为了方便管理外设中断,为其分配的向量号,也可以称为“软向量号”。 回调函数:与虚向量配对的服务程序。 中断统一接口函数:与实向量配对的中断处理程序。此技术的思想如下:当外设中断触发时,首先定位到实向量位置,调用中断统一接口函数,中断统一接口函数对外设中断触发的参数进行测试,寻找到其对应的虚向量,从而触发虚向量处的回调函数。从而实现多个外部中断通过同一的实向量到多个虚向量的映射,解决了单向量多中断处理的问题。单向量多中断处理映射技术的示意图如图15图15单向量多中断处理映射图在上面的单向量多中断处理映射图中,V 表示多个外设共享的中断请求向量号,V1,V2, Vn-1,Vn表示不同外设对应的虚向量号,Fi表示与Vi对应的回调函数(i=1.n)。(2)实现基于前面的分析,将单向量多中断处理映射技术运用于Delta OS 移植到PowerPC mpc860平台上。PowerPC mpc860处理器的外部中断向量号为0x500。在单向量多中断处理模型图中,V=0x500。设有n个外部设备分别为D1,D2,D3, ,Dn,这些外部设备中断触发时的中断标志分别为PPC_D1,PPC_D2,PPC_D3,PPC_Dn;Delta OS 内核为这些外部设备分配的虚向量号分别为V_D1,V_D2,V_D3,V_Dn,在实现中分别取值:0x2000,0x2100,0x2200等,即每个虚向量号间距256个字节。在Delta OS内核中声明了一个全局虚向量表_ISR_VECTOR_TABLE,通过系统调用delta_interrupt_catch,将用户的中断服务程序安装到指定的虚向量号处。Delta OS 用统一的中断接口函数_ISR_Handler 来处理外部中断。在模型实现中有两个重要的功能模块:用户中断安装模块和中断处理模块。下面分别用伪代码描述这两个模块的功能。用户中断安装模块delta_interrupt_catch 的伪代码实现如下:delta_interrupt_catch(vector, new_isr_handler,old_isr_handler) 1、检查向量号的有效性2、检查新中断服务程序的有效性3、保存旧的中断服务程序指针4、安装用户指定的新中断服务程序 _ISR_VECTOR_TALBEvector=new_isr_handler外设中断触发时中断处理模块_ISR_Handler的伪代码实现如下:_ISR_Handler(void)1、中断现场的保护2、中断屏蔽位的设置3、外设中断标志的检测switch ( 标志) case PPC_D1: F1=_ISR_VECTOR_TABLEV_D1且执行F1的功能case PPC_D2: F2=_ISR_VECTOR_TABLEV_D2且执行F2的功能 case PPC_D3: F3=_ISR_VECT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 枣庄市重点中学2025年化学高二上期末联考试题含解析
- 天津大学《舆论研究》2024-2025学年第一学期期末试卷
- 垃圾分类推动的环保产业分析
- 复合土工膜顶破强力试验记录
- 核心考点03 诗歌语言-2026年高考《语文》一轮复习高效培优系列讲义
- 毕业生论文老师评语-图文
- 小米手机竞争战略分析(BCG分析 )
- 会计学专业毕业生论文选题参考
- 学士学位论文导师评语
- 课程设计评审表评语模板
- 2025年数字金融行业数字金融与金融科技研究报告及未来发展趋势
- 中国马克思主义与当代2024版教材课后思考题答案
- 老年人的养老规划方案
- 2025河南郑州巩义市金桥融资担保有限公司招聘3人考试笔试备考题库及答案解析
- 物联网应用技术大学生职业生涯规划书
- 光伏储能可行性研究报告
- 2025中国(教育部)留学服务中心下半年招聘11人(非事业编制)笔试考试参考题库附答案解析
- GB/T 615-2006化学试剂沸程测定通用方法
- 土的孔隙率试验检测报告
- 全科病例汇报 重度低钠血症
- 飞利浦DFM100除颤仪
评论
0/150
提交评论