引言
嵌入式Linux以代码开放、价格低廉、功能强大又易于移植的特性正在被广泛应用,为嵌入式操作系统提供了一个极具吸引力的选择。但许多实际应用,譬如多媒体通信、生产过程控制、在线事务处理等等都要求对外部事件在限定的时间内做出反应。因而嵌入式系统实时性问题越来越受到关注,对嵌入式Linux进行实时性改进也成为嵌入式操作系统领域的一个研究热点。
本文提出了一种基于uClinux的嵌入式实时操作系统方案。将RTAI和uClinux相结合,既满足了嵌入式应用的需求,同时又保证了系统的硬实时性。此外,还有强大的网络功能、易升级性、易移植性等优点。最后结合基于这一操作系统开发的重大装备远程监控系统的应用案例控制工程网版权所有,进一步从功能和性能上对其进行验证。
一、现有嵌入式操作系统应用中存在的问题
一个优秀的嵌入式操作系统是嵌入式系统成功的关键。它除了具备一般操作系统最基本的功能,如任务调度、同步机制、中断处理、文件功能等控制工程网版权所有,还需要具有以下特点:
 
2. 占有更少的硬件资源;
3. 高可靠性;
4. 提供强大的网络功能,支持TCP/IP协议及其他协议;
5. 有些应用要求具有实时性能。
现有的嵌入式操作系统大致可分为商用型和免费型两类:商用型操作系统由于功能稳定、可靠控制工程网版权所有,有完善的技术支持和售后服务,在嵌入式市场占有一定的份额。但它同时也存在价格昂贵、需要版权、源代码不公开等一系列问题;免费型操作系统(如Linux)源码公开控制工程网版权所有,有价格方面的优势,但在严格满足嵌入式实时应用需求方面还有欠缺。
二、RTAI对Linux的实时性改进
现有几种针对Linux的实时系统解决方案,实现方法主要包括两种:
1)直接修改Linux内核、增加实时性,如:Montavista;
2)在普通Linux内核之上增加实时模块、双内核结构,如:RTLinux或RTAI。
Montavista可以满足用户的软实时要求,RTLinux或RTAI着重增强Linux的硬实时特性。软实时系统的时限是柔性灵活的,它可以容忍偶然的超时错误。失败造成的后果并不严重,仅仅是轻微地降低了系统的吞吐量。硬实时系统有一个刚性的、不可改变的时间限制,它不允许任何超出时限的错误。超时错误会带来损害甚至导致系统失败、或者导致系统不能实现它的预期目标。
RTAI采用双内核方法,不直接使用Linux的任何功能,而是把需要高度时间精度的工作写成一个驱动程序的形式,然后直接用PC时序芯片所产生的中断调用这个驱动程序。RTAI与NMT RT-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.硬件抽象层
系统的实现基础是硬件抽象层控制工程网版权所有,通过硬件抽