嵌入式操作系统EOS(Embedded Operating System)又称实时操作系统RTOSReal Time Operation System)是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器Browser 等。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、调度、控制、协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。

在嵌入式实时操作系统环境下开发实时应用程序使程序的设计和扩展变得容易,不需要大的改动就可以增加新的功能。通过将应用程序分割成若干独立的任务模块,使应用程序的设计过程大为简化;而且对实时性要求苛刻的事件都得到了快速、可靠的处理。通过有效的系统服务,嵌入式实时操作系统使得系统资源得到更好的利用。但是,使用嵌入式实时操作系统还需要额外的ROM/RAM 开销,2~5%CPU 额外负荷。

到目前为止,商业化嵌入式操作系统的发展主要受到用户嵌入式系统的功能需求、硬件资源以及嵌入式操作系统自身灵活性的制约。而随着嵌入式系统的功能越来越复杂,硬件所提供的条件越来越好,选择嵌入式操作系统也就越来越有必要了。到了高端产品的阶段,可以说采用商业化嵌入式操作系统是最经济可行的方案,而这个阶段的应用也为嵌入式操作系统的发展指出了方向。目前市场上流行的嵌入式操作系统的介绍:

1VxWorks

VxWorks 是目前嵌入式系统领域中使用最广泛、市场占有率最高的系统。它支持多种处理器,如x86i960Sun SparcMotorola MC68xxxMIPS RX000POWER PC 等等。大多数的VxWorks API 是专有的。采用GNU Diab 的编译和调试器。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的 F-16FA-18 战斗机、B-2 隐形轰炸机和爱国者×××上,甚至连1997月在火星表面登陆的火星探测器上也使用到了VxWorksVxWorks 的实时性做得非常好,其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,它们造成的延迟很短。VxWorks 提供的多任务机制中对任务的控制采用了优先级抢占(Preemptive Priority Scheduling)和轮转调度(Round-Robin Scheduling)机制,也充分保证了可靠的实时性,使同样的硬件配置能满足更强的实时性要求,为应用的开发留下更大的余地。由于它的高度灵活性,用户可以很容易地对这一操作系统进行定制或作适当开发,来满足自己的实际应用需要。

2) Nucleus

Nucleus 实时操作系统是Accelerater Technology 公司开发的嵌入式RTOS,产品只需一次性购买Licenses 就可以获得操作系统的源码,并且免产品版税。Nucleus 的另一大好处是程序员不用写板级支持软件包BSP, 因为操作系统已经开放给程序员,不同的目标板在操作系统BOOT 时可以通过修改源码进行不同的配置。Nucleus CPU 的支持能力比较强,支持当前流行的大多数RISCCISCDSP 处理器,比如80x86 实时保护模式68xxx PowerPC i960 MIPS SHARMColdFire 等几百种CPU

Nucleus 内核非常小巧,只有4K~20K 之间,稳定性高。Nucleus 内核采用了软件组件的方法,每个组件具有单一而明确的目的,通常由几个及汇编语言模块构成,提供清晰的外部接口,对组件的引用就是通过这些接口完成。除了少数一些特殊情况外,不允许从外部对组件内的全局进行访问。由于采用了软件组件的方法,Nucleus 各个组件非常易于替换和复用。Nucleus 除提供功能强大的内核外,还提供种类丰富的功能模块,例如用于通讯系统的局域和广域网络模块,支持图形应用的实时化Windows 模块,支持Internet 网的WEB 产品模块,工控机实时BIOS 模块,图形化用户接口以及应用软件性能分析模块等,用户可以根据自己的应用来选择不同的应用模块。另外Nucleus 得到许多第三方工具厂商和方案提供商的支持,如ARMLauterbachTIInfineon,高通,IARTasking 等。

目前Nucleus 在国内得到广泛的应用,如终端设备、工控、医疗、汽车电子、导航、通信等领域。特别是在手机制造行业,几乎所有的手机厂商都采用了Nucleus 解决方案。

3OSE

OSE 主要是由ENEA Data AB 下属的ENEA OSE Systems AB 负责开发和技术服务的。它是新生代实时操作系统,中国于2000 年引进。OSE 集中了最先进的RTOS 设计理念,OSE 相对其它传统的操作系统具有显著不同的特点:

             高处理能力

内核中实时性严格的部分都由优化的汇编来实现,特点是使用信号量指针,使数据处理非常迅速、快捷。

             真正适合开发复杂的分布式系统

OSE 支持多种CPU DSP,为开发商开发不同种处理器组成的分布式系统提供了最快捷的方式。

传统的RTOS 是基于单CPU,它虽然可以改进成分布式系统,但用户需要在应用程序中做很多工作。而OSE 不同于传统的RTOS,首先是因为它的结构体系有了很大改变,它以消息传递作为主要手段完成CPU 间的通信,还把传统的RTOS 必须在应用程序中完成的工作,做到了核心系统中。对于复杂的并行系统来说,OSE 提供了一种简单的通信方式,简化了多CPU 的处理。

             强大的容错功能

系统支持不中断实时系统,允许从硬件或软件错误中恢复。OSE 是适用于有容错要求,非间断,以及有安全性要求的分布式系统。例如在实时的情况下完成设备的硬件的安装和软件的配置,系统错误的恢复等等。

             OSE获得了广泛的认证

如:IEC 61508, SIL3 认证;DO-178B (levels A-D) EN60601-4 等。

它的客户深入到电信,数据,工控,航空等领域,尤其在电信方面,被诸如爱立信,诺基亚,西门子等知名公司广泛的采用。

4Windows CE

Microsoft Windows CE 是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计允许它对于从掌上电脑到专用的工业控制器的用户电子设备进行定制。它不是削减的Windows95 版本,而是从整体上为有限资源的平台设计的多线程,完整优先权,多任务的操作系统。Windows CE 的常规函数提供系统设计者以模块化的操作系统,这个操作系统可以为特殊的产品进行定制。

Windows CE 操作系统的基本核心需要至少200K ROM(对系统硬件资源的要求较高),设计成能够在广阔的平台上运行。支持 Win32 API 的字集,同时提供熟悉的开发模式和工具。支持多种的用户界面硬件,包括可以达到32bit 象素颜色深度的彩色显示器支持多种的串行和网络通讯技术。支持COM/OLEOLE 自动操作,和其他的进程间通讯的先进方法。反过来,许多模块被分割成更小的部件,这些部件允许模块自身被定制。定制包括选择一套支持需要设备的模块和部件,并且省略那些不需要的。OEMs 必须也执行OEM Adaptation Layer (OAL),作为在核心和设备硬件及所需的任何内置的设备驱动程序之间的接口。

5)嵌入式Linux

Linux 是一个类似于Unix 的操作系统。嵌入式Linux 由于代码开放性以及强大的网络功能,在中低端的嵌入式网络设备中应用起来。

嵌入式Linux的主要特点:

             Linux是层次结构且内核完全开放的系统。

Linux是由很多体积小且性能高的微内核系统组成。在内核代码完全开放的前提下,不同领域和不同层次的用户可以根据自己的应用需要方便地对内核进行改造,低成本地设计和开发出满足自己需要的嵌入式系统。

             强大的网络支持功能。

Linux诞生于因特网时代并具有Unix的特性,保证了它支持所有标准因特网协议,并且可以利用Linux的网络 协议栈将其开发成为嵌入式的TCP/IP网络协议栈。此外,Linux还支持ext2fat16fat32romfs等文件系统,为开发嵌入式系统应用打下了很好的基础。

             Linux开发环境自成体系

Linux具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,可以跨越嵌入式系统开发中仿真工具的障碍。Linux也符合IEEE POSIX.1标准,使应用程序具有较好的可移植性。

传统的嵌入式开发的程序调试和调试工具是用在线仿真器(ICE)实现的。它通过取代目标板的微处理器,给目标程序提供一个完整的仿真环境,完成监视和调试程序;但一般价格比较昂贵,只适合做非常底层的调试。使用嵌入式Linux,一旦软硬件能够支持正常的串口功能,即使不用仿真器,也可以很好地 进行开发和调试工作,从而节省一笔不小的开发费用。嵌入式Linux为开发者提供了一套完整的工具链(tool chain)。它利用GNUgcc做编译器,用gdbkgdbxgdb做调试工具,能够很方便地实现从操作系统到应用软件各个级别的调试。

             Linux具有广泛的硬件支持特性。

无论是RISC还是CISC32位还是64位等各种处理器,Linux都能运行。Linux通常使用的微处理器是Intel X86芯片家族,但它同样能运行于Motorola公司的68K系列CPUIBMAppleMotorola公司的PowerPC CPU以及Intel公司的StrongARM CPU等处理器。Linux支持各种主流硬件设备和最新硬件技术,甚至可以在没有存储管理单元(MMU)的处理器上运行。这意味着嵌入式Linux未来将具有更广泛的应用前景。

但嵌入式Linux也存在着一些不足:

        Linux的实时性扩充

实时性是嵌入式操作系统的基本要求。由于Linux还不是一个真正的实时操作系统,内核不支持事件优先级和抢占实时特性,所以在开发嵌入式Linux的过程中,首要问题是扩展Linux的实时性能。

        Linux内核体系结构

Linux的内核体系采用的是Monolithic。在这种体系结构中,内核的所有部分都集中在一起,而且所有的部件在一起编译连接。这样虽然能使系统的各部分直接沟通,有效地缩短任务之间的切换时间,提高系统的响应速度和CPU的利用率,且实时性好;但在系统比较大时体积也比较大,与嵌入式系 统容量小、资源有限的特点不符。

Linux是一个需要占用存储器的操作系统。虽然这可以通过减少一些不必要的功能来弥补,但可能会浪费很多时间,而且容易带来很大的麻烦。许多Linux 的应用程序都要用到虚拟内存,这在许多嵌入式系统中是没有价值的。所以,并不是一个没有磁盘的Linux嵌入式系统就可以运行任何Linux应用程序。

        Linux集成开发环境

提供完整的集成开发环境是每一个嵌入式系统开发人员所期待的,Linux在基于图形界面的特定系统定制平台的研究上,与Windows操作系统相比还存在差距。因此,要使嵌入式Linux在嵌入式操作系统领域中的优势更加明显,整体集成开发环境还有待提高和完善。

6QNX

QNX是一个实时的、可扩充的操作系统,它部分遵循POSIX相关标准,如:POSIX.1b实时扩展。它提供了一个很小的微内核以及一些可选的配合进程。其内核仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理,其进程在独立的地址空间运行。所有其它OS服务,都实现为协作的用户进程,因此QNX内核非常小巧(QNX4.x大约为12Kb)而且运行速度极快。这个灵活的结构可以使用户根据实际的需求,将系统配置成微小的嵌入式操作系统或是包括几百个处理器的超级虚拟机操作系统。

7UC/OS-II

UC/OS-II 是一种可移植、可固化、可裁剪及可剥夺的多任务实时内核。完成开发原代码,可免费用于学校用于教学。但如果用于商用,则需要付费。