1.1概述
1980年,美国ReadySystem公司推出了实时操作系统VRTX/OS算起,如今已有30年的历史,RTOS产品也是繁花似锦。20世纪80年代,除VRTX外,还有IPI公司的MTOS和ISI公司的PSOS。到了20世纪90年代后,由于现代操作系统的思想运用,诞生了很多如今都在广泛应用的实时操作系统(RTOS),如大家熟知的VxWorks、μC/OS、QNX、Lynx、eCOS等。21世纪,由于商业领域的运作和市场的要求,RTOS产品开始兼并整合,一些产品被兼并淘汰,如PSOS被Windriver收购,主要功能特点合并到VxWorks中;另外一些产品则壮大成熟,如商业上极其成功的VxWorks,和几乎所有MCU都可以使用的μC/OS-II,现在已经发展到了μC/OS-III。当然也出现一些后起之秀,如开源世界的FreeRTOS和中国人自己研发的Delta OS、RT-thread、SylixOS。
RTOS大都是以应用为主的可定制的操作系统。软件模块可被高度的裁剪、定制,以适应各种不同的应用,不同的硬件条件,同时在有限的资源下实现性能的最优化。这是传统的桌面操作系统、服务器操作系统所不及的。嵌入式开发不同于PC平台的开发,它首先面临着软件与硬件同时成熟的风险。同时市场的迫切需求,使得嵌入式产品的开发周期越来越短。虽然新开发方法、新工具的应用提高了开发效率,对开发人员来说,产品成熟的压力和风险依然丝毫未减;再次它面临着硬件资源、系统性能、产品成本的平衡问题,市场的竞争使得嵌入式系统追求最佳的性价比,这更增加了系统设计的难度;最后由于摩尔定律的支配,高性能MCU价格降低并广泛使用,使得前后台系统不再风光一时,系统的可维护性、伸缩性、可移植性等问题越来越突出。要很好地解决这些问题,不得不求助操作系统或一些成熟的中间件。进入20世纪90年代后,RTOS在嵌入式系统设计中的主导地位已经形成。它的发展有以下特点:
1. 新处理器大量运用,要求RTOS易于移植,以便在短时间内支持不同的处理器;消费类电子产品对实时性要求并不高,如掌上电脑、手机、机顶盒等,但对软件的可维护性、扩展性、易用性、交互性有比较高的要求,使得WinCE、Linux等软实时操作系统广泛地被应用到消费类电子产品中;
2. 由于电信设备、控制系统的高可靠性,对RTOS提出了新的要求,如双机热备份、线程迁移、使用MMU、MPU保护RTOS内核等;
3. 芯片制造技术的提升,多核处理器大量运用,要求RTOS支持单芯片多处理器(Chip-Multiprocessor,CMP)、对称多处理器(Symmetric Multiprocessor,SMP)、非对称多处理器(AsymmetricMultiprocessor,ASMP);
4. 系统级别的应用越来越多,要求系统支持各种各样的协议栈、文件系统、Web服务器、数据库、图形界面,甚至支持Java虚拟机和脚本语言;
5. 开放源码已经成为大势所趋,一些商业老牌的RTOS已经向授权客户开发源码,如VxWorks、QNX等;
6. 厂商和客户逐步认识到,RTOS应统一应用程序接口以节省用户的软件投资。RTOS开始在应用程序接口中提供诸如POSIX和ITRON等标准接口;
7. RTOS一般都有一套自己的集成开发环境,便于操作系统在实际应用中的定制和应用开发工作,也有采用GNU工具链或第三方工具链的RTOS产品,但工具链大都也经过整合加工,变得更加易用。
中国正在如火如荼的进行一场空前的系统化工程——物联网(TheInternet of things)。顾名思义,物联网就是“物物相连的互联网”。有两层意思:第一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络;第二,其用户端延伸和扩展到了任何物体与物体之间,进行信息交换和通信。从而实现比传统的互联网本身更广泛的价值。和传统的互联网相比,物联网有鲜明的特征:
1. 它是各种感知技术的广泛应用。物联网上部署了海量的多种类型传感器,每个传感器都是一个信息源,不同类别的传感器所捕获的信息内容和信息格式不同。传感器获得的数据具有实时性,按一定频率周期性地采集环境信息,不断更新数据;
2. 它是一种建立在互联网上的网络。物联网技术的重要基础和核心仍旧是互联网,通过各种有线和无线网络与互联网融合,将物体的信息实时准确地传递出去。在物联网上,传感器定时采集的数据信息需要通过网络传输。由于其数量极其庞大,形成了海量信息。在传输过程中,为了保障数据的正确性、可靠性和实时性,必须适应各种异构网络和协议;
3. 物联网不仅仅提供了传感器的连接,其本身也具有智能处理的能力,能够对物体实施智能控制。物联网将传感器和智能处理相结合,利用云计算、模式识别等各种智能技术,扩充其应用领域。从传感器获得的海量信息中分析、加工和处理出有意义的数据,以适应不同用户的不同需求。
物联网可以分为三层架构:感知层、网络层和应用层。虽然感知层是物联网的核心,但从上面的介绍不难看出,需要嵌入式系统的支撑;需要实现各种各样的系统级应用,并对系统的实时性有一定的要求;感知层所形成的网络是一个比传统互联网更加庞大更加复杂的分布式系统。这些要求被转化为对RTOS的要求,推动促进其发展。
RTOS 的发展方向主要集中在三个方面。首先是RTOS的标准化研究。如今国内外的RTOS开发商数不胜数,提供了上百个RTOS,它们各具特色。这也给应用开发者带来难题,当选择不同的RTOS开发时,代码不能复用,用户的软件投资付之东流。RTOS的标准化研究越来越被重视,如IEEE协会在UNIX的基础上,制定了可移植操作系统接口标准 POSIX 1003.1b,用于规范实时系统接口;日本开发的ITRON标准等。新的应用层出不穷,软件接口仍然需要不断地完善,与时俱进。
其次是多处理器结构RTOS、分布式实时操作系统和实时网络的研究。实时应用的飞速发展,对RTOS的性能提出了更高的要求。单处理器的嵌入式系统已不能很好地满足某些复杂实时应用系统的需要,开发支持多处理器结构的RTOS已成为发展方向。至于分布式RTOS,如QNX、VxWorks、RTEMS、eCos等都提供相关的功能。但分布式实时操作系统的研究还未完全成熟,特别是在网络实时性和多处理器间任务调度算法上还需进一步地研究。
最后是集成化的RTOS开发环境的研究。开发实时应用系统,只有RTOS是不够的,还需要集编辑、编译、调试、模拟和仿真等功能为一体的集成开发环境的支持。开发环境的研究还包括网络上多主机协作开发、分布式RTOS的调试等技术。很多开源RTOS在性能方面是超越商业RTOS,但是在工具链方面与商业RTOS还有着不小的差距。如RTEMS使用GNU的工具链,调试使用GDB;而VxWorks的工具链不仅提供图形化调试界面,还提为用户提供系统运行时的一些状态信息。虽然GNU提供了GDB的图形化前端DDD以及insight,但两者差距还是不小。最终目标就是让嵌入式系统级的开发与PC平台差距越来越小,充分利用新技术降低应用层开发和调试的难度。
1.2 RTEMS
RTEMS诞生于20世纪80年代,最早用于美国国防部的导弹控制系统,在诞生时就以高实时性和高可用性为目标,并且采用了面向对象技术、构件技术等到现在非常先进的设计思想构造而成,在实时性、稳定性、开发速度和多处理器支持上面都是非常优秀的。早期该操作系统的名称为实时导弹系统(Real Time Executive for Missile Systems),后来改名为实时军用系统(Real Time Executive forMilitary Systems), 目前的全称是实时(Real Time Executive for Multiprocessor Systems)。经过了20多年的持续开发,RTEMS拥有较为丰富的开发资源和广泛的客户群体。它是一个纯粹的32位系统(由于充分利用了32位的特性,所以无法像 μC/OS-II 那样用于低端的8位系统)。在本书截稿前,RTEMS最高发行版本是4.10.2,正在开发的版本是4.11。它的特点如下:
1. 支持POSIX 1003.1b API,包含对threads的支持;
2. 基于VMEBus工业协会RTEID/ORKID的经典API(类似pSOS+的API);
3. 支持ITRON 3.0标准的API;
4. 使用GNU工具链,支持ISO/ANSIC、ISO/ANSI C++以及模板库和Ada;
5. 支持多任务和以事件驱动的基于优先级的抢占调度;
6. 支持同构或者异构的多处理器系统;
7. 可选基于单调频率 RMS 调度;
8. 支持多任务间的通行与同步;
9. 支持优先级继承算法;
10. 反应灵敏的中断管理;
11. 高度的可配置性并支持多种目标系统,如x86、ARM、MIPS等;
12. 高性能的FreeBSD TCP/IP协议栈,支持PPPD、DHCP客户端、DNS客户端、TFTP客户端、NFS客户端,支持FTP服务器、Web服务器、Telnet服务器、Sun Remote Procedure Call、Sun eXternal Data Representation、CORBA;
13. 支持内存文件系统IMFS、mini-IMFS、FAT文件系统、设备文件系统、RTEMS文件系统、NFS客户端;
14. 支持GNU Debugger、通过以太网调试、通过串口调试等。
加拿大航空航天局2003年对20款RTOS做了一个评估,如表1.1所示,RTEMS甚至排在了老牌商业操作系统VxWorks之前。评估的标准请参考: A Selection Methodology for the RTOS Market. Philip Melanson, SiamakTafazoli. 目前RTEMS是GPL的开源项目,由OAR公司负责版本的升级与维护。它最核心的License规定RTEMS发行和使用遵守GPL规范,同时允许无论使用了RTEMS的库或是头文件,如果以二进制的方式发布应用程序,用户无需公开自己的代码。这点又不同于GPL。这是由于使用RTEMS的很多项目是需要保密的,如军事、航天领域的项目,是无法公开代码的。RTEMS使用的TCP/IP协议栈遵循的是BSD许可证,它只要求被许可者附上该许可证的原文以及所有开发者的版权资料,不限制在商业领域的应用。RTEMS的Web服务器GoAhead WebServer要求使用时,需要在用户连接GoAhead服务器时,在浏览器中显示GoAhead的商标。RTEMS的RPC/XDR采用SUN RPC,License规定用户可以随意使用该代码,但SUN公司不负有任何责任。总的来说,RTEMS的代码用户可以放心的使用,即使商用也不必担心产生任何的商业风险。从推动开源世界发展的角度来说,最好能把对RTEMS有价值的改进发布出来。
RTEMS从2008年开始参加Google Summer Of Code(GSOC)。该活动要求一名在校学生在一位顾问的指导下,在约三个月的时间内完成某个开源项目中的一个相关子项目。它的主旨在于鼓励学生参与开源项目,一方面为学生提供参与真实软件项目的机会;另一方面有利于开源项目的发展。RTEMS通过SOC一方面推动了自身的发展;另一方面也扩大了自身的影响。一些RTEMS的BSP,以及内部的测试用例都是在GSOC中完成的。
表1.1 2003年加拿大航天局对20款RTOS的评估结果
RTEMS已经在各个领域得到了广泛的应用,这些应用领域包括通信、航空航天、医疗、科学研究、军事、工业、民用消费类电子等。如图1.1所示,PLR航空公司开发的飞行记录器(飞机的黑匣子);科学领域的EPICS,EPICS(Experimental Physics andIndustrial Control System)是物理试验与工业控制系统的简称,为分布式的高能物理学试验提供了一系列的控制软件和应用,有VxWroks和RTEMS两个版本以及基于Windows的终端界面。使用的设备包括原子加速器、射电望远镜等,通常需要上百个子系统协同工作。rtems.com公布了一些使用RTEMS开发的项目,很多都是激动人心的应用。
RTEMS 的网络资源:
1. RTEMS 的官方网站,http://www.rtems.com;
2. RTEMS 国内爱好者网站,http://www.rtems.net;
3. RTEMS google 沙龙;
4. 本书作者的博客,http://blog.csdn.net/coolbacon。