工控网首页
>

应用设计

>

改进嵌入式Linux系统实时性新方案

改进嵌入式Linux系统实时性新方案

2010/3/17 14:40:00

对嵌入式Linux进行实时性改进是嵌入式操作系统领域的一个研究热点。本文在分析了现有嵌入式操作系统实时性不足的基础上,提出了一种新型的改进方案(将RTAI和uClinux相结合),并给出具体的工控应用实例,进一步对这种系统的功能进行有效验证。

图1:双内核实时系统嵌入式实时Linux架构。嵌入式Linux以代码开放、价格低廉、功能强大又易于移植的特性正在被广泛应用,为嵌入式操作系统提供了一个极具吸引力的选择。但许多实际应用,譬如多媒体通信、生产过程控制、在线事务处理等等都要求对外部事件在限定的时间内做出反应。因而嵌入式系统实时性问题越来越受到关注,对嵌入式Linux进行实时性改进也成为嵌入式操作系统领域的一个研究热点。

本文提出了一种基于uClinux的嵌入式实时操作系统方案。将RTAI和uClinux相结合,既满足了嵌入式应用的需求,同时又保证了系统的硬实时性。此外,还有强大的网络功能、易升级性、易移植性等优点。最后结合基于这一操作系统开发的重大装备远程监控系统的应用案例,进一步从功能和性能上对其进行验证。

现有嵌入式操作系统应用中存在的问题

一个优秀的嵌入式操作系统是嵌入式系统成功的关键。它除了具备一般操作系统最基本的功能,如任务调度、同步机制、中断处理、文件功能等,还需要具有以下特点:1.更好的硬件适应性,也就是良好的移植性;2.占有更少的硬件资源;3. 高可靠性;4.提供强大的网络功能,支持TCP/IP协议及其他协议;5. 有些应用要求具有实时性能。

现有的嵌入式操作系统大致可分为商用型和免费型两类:商用型操作系统由于功能稳定、可靠,有完善的技术支持和售后服务,在嵌入式市场占有一定的份额。但它同时也存在价格昂贵、需要版权、源代码不公开等一系列问题;免费型操作系统(如Linux)源码公开,有价格方面的优势,但在严格满足嵌入式实时应用需求方面还有欠缺。

图2:实时内核实现机理

RTAI对Linux的实时性改进

现有几种针对Linux的实时系统解决方案,实现方法主要包括两种:1)直接修改Linux内核、增加实时性,如:Montavista;2)在普通Linux内核之上增加实时模块、双内核结构,如:RTLinux或RTAI。

Montavista可以满足用户的软实时要求,RTLinux或RTAI着重增强Linux的硬实时特性。软实时系统的时限是柔性灵活的,它可以容忍偶然的超时错误。失败造成的后果并不严重,仅仅是轻微地降低了系统的吞吐量。硬实时系统有一个刚性的、不可改变的时间限制,它不允许任何超出时限的错误。超时错误会带来损害甚至导致系统失败、或者导致系统不能实现它的预期目标。

RTAI采用双内核方法,不直接使用Linux的任何功能,而是把需要高度时间精度的工作写成一个驱动程序的形式,然后直接用PC时序芯片所产生的中断调用这个驱动程序。RTAI与NMTRT-Linux的最大不同之处在于,它在Linux上定义了一组实时硬件抽象层(RTHAL)。RTHAL将RTAI需要在Linux中修改的部分定义成一组程序界面,RTAI只使用这组界面和Linux沟通。这样做的好处在于,用户可以将直接修改的Linux核心程序代码减至最小,这有可能使得将RTHAL移植到新版Linux的工作量减至最低。但是,RTAI虽然满足了硬实时性要求,却没有被裁减为足够小且适用于嵌入式系统。

RTAI+uClinux的实时方案

uClinux是为嵌入式应用设计的,它本身并没有更多地关注实时问题。uClinux经过小型化改造,形成了一个高度优化、代码紧凑的嵌入式Linux,并保留了Linux大多数的优点。它专门针对无MMU的CPU,去除了普通Linux内核中的虚拟内存管理部分。更重要的是,uClinux提供了完整的TCP/IP协议栈,并支持大量其他的网络协议,为嵌入式系统提供了强大的网络支持。

而从前面的分析可以看出,RTAI是基于普通Linux内核,相对于嵌入式应用其内核过于庞大;而uClinux本身并没有更多地关注实时问题。因此,可以将RTAI和uClinux相结合,采用双内核的设计方案,既满足了嵌入式应用的需求,又保证了系统的硬实时性。

1.硬件抽象层

图3:系统中断处理流程图

系统的实现基础是硬件抽象层,通过硬件抽象层进行硬件管理,把基本内核和实时内核结合在一起,其中一个内核的改变,不会影响另一个内核的执行。

硬件抽象层定义了本系统同硬件之间的抽象接口,主要用来截取硬件中断,并且依据实时内核调度器的需求,重定向为基本内核任务或是实时任务。RTHAL包含一个关键的组件:中断描述符表(IDT,InterruptDetorTable),它定义了一套指针用来处理中断例程。RTHAL本身定义了一个结构,使得基本内核中断处理函数能够很容易地被实时处理函数所替代。这样,当实时内核通过RTHAL激活后,新的IDT表为合法。在以上控制下,基本内核作为实时系统的任务提供服务。

2.双内核结构

双内核实时系统的总体结构模型如图1所示,主要包含了基本内核、实时内核、硬件抽象层、硬件部分。

其中基本内核(uClinux)和实时内核(RTAI)分别处理非实时和实时任务的调度和执行,而实时任务和非实时任务之间信息的交换要通过管道(FIFO)或共享内存(MBUFF)来实现。当实时任务运行时,基本内核被硬件抽象层屏蔽。即实时内核将基本内核作为优先级最低的一个任务来运行,只有在没有实时任务运行的时候才予以调度。

3.实时内核动态加载

嵌入式实时Linux的实时内核是动态加载的。实时任务被激活前,实时内核并没有启动,基本内核通过RTHAL透明访问硬件,就像RTHAL不存在一样。当实时任务被激活时,RTHAL结构发生变化,基本内核被实时内核接管,图2表明了实时内核启动前后,系统发生的变化。

4.调度处理

当中断到来时,实时内核判断它是基本内核中断还是属于实时中断,分别进行处理。若是基本内核中断,如果当前有实时任务正在运行,则只是设置一下中断标志位,悬挂此中断,如果没有实时任务运行,则调用基本内核的中断处理程序;如果此中断是实时中断,就直接调用相对应的实时中断处理程序。注意,实时中断可以抢先基本内核任务的执行。系统的中断处理流程如图3所示。

应用案例

工业控制是嵌入式实时操作系统的传统应用领域,需要严格的实时处理功能、高可靠性和良好的开放性,对开发环境、可操作性、成本等也有特别的要求。因此本项研究以重大装备的远程监控系统作为其应用之一。

1.嵌入式远程监控系统结构

应用针对工业生产中使用的大型设备在连续运转状态下的远程监控问题,研究用于重大装备远程监控的嵌入式装置。系统主要包括输入/输出模块(NetIO)和输入/输出上位模块(NetWeb),前者用于实现现场数据的采集(输入),或用于现场装置的控制(输出),后者集成了Web功能,使得用户可以通过互联网对输入/输出模块进行访问。两类模块通过网络相连接,在本系统中为通过串行485总线。嵌入式远程监控系统结构如

投诉建议

提交

查看更多评论
其他资讯

查看更多

助力企业恢复“战斗状态”:MyMRO我的万物集·固安捷升级开工场景方案

车规MOSFET技术确保功率开关管的可靠性和强电流处理能力

未来十年, 化工企业应如何提高资源效率及减少运营中的碳足迹?

2023年制造业“开门红”,抢滩大湾区市场锁定DMP工博会

2023钢铁展洽会4月全新起航 将在日照触发更多商机