引言

嵌入式系统以其典型的面向用户、面向产品、面向应用的、微内核、软硬件可剪裁等众多特性及技术的飞速发展,嵌入式系统已经无所不在,像机顶盒、手机、机器人、汽车电子、信息家电、通信电子等等到处闪现嵌入式操作系统的影子。目前市场上主流的操作系统有嵌入式linux、Vxworks、Windows Embedded系列。而嵌入式Linux以其特别和引人注目的优势正极大地吸引电子设计工程师从自己书写的或专用的RTOS转移到Linux。同时,报告还显示嵌入式开发者们还在使用eCos, BSD, FreeRTOS,TinyOS等开源操作系统以及ThreadX(by express logic)、Palm、LynxOS、Psos、uC/os-II等不同的操作系统在各种专门的部门也有应用。本文将逐一对嵌入式操作系统做一介绍。

各类操作系统简介:

1.1  Linux

嵌入式LINUX(Embedded Linux)是指对标准Linux经过小型化裁剪处理之后,能够固化在容量只有几KB或者几MB字节的存储器芯片或者单片机种,是适合于特定嵌入式应用场合的专用Linux操作系统。在目前已经开发成功的嵌入式系统中,大约有一般使用的是Linux。这与它自身的优良特性是分不开的。嵌入式Linux同Linux一样,具有低成本,多种硬件平台支持,优异的性能和良好的网络支持等优点。另外,为了更好的适应嵌入式领域的开发,嵌入式Linux还在Linux的基础上做了部分改进:

    1)改善的内核结构

      Linux内核采用的是整体式结构(Monolithic),整个内核式一个单独的,非常大的程序,这样虽然能够使系统的各个部分直接沟通,提高系统响应速度,但与嵌入式系统存储容量小,资源有限的特点不相符合。因此,在嵌入式系统经常采用的是另一种称为微内核(Microkernel)的体系结构,即内核本身只提供一些最基本的操作系统功能,如任务调度,内存管理,中断处理等,而类似于文件系统和网络协议等附加功能则运行在用户空间中,并且可以根据实际需要进行取舍。这样就大大减小了内核的体积,便于维护和移植。

    2)提高的系统实时性

由于现有的Linux是一个通用的操作系统,虽然它也采用了许多技术来加快系统的运行和响应速度,但从本质上来说并不是一个嵌入式实时操作系统,因此,利用Linux作为底层操作系统,在其上进行实时化改造,从而构建出一个具有实时处理能力的嵌入式系统,如RT-Linux已经成功地应用于航天飞机地空间数据采集,科学仪器测控和电影特级图像处理等各种领域。

Linux有很多的版本,下面介绍BlueCat Linux 和HardHat Linux。

1.BlueCat Linux

BlueCat Linux是LynuxlN'orks公司开发的专用于嵌入式实时领域的应用开发产品,支持以Linux和Windows作为主机的交叉开发环境。BlueCat的开发环境是一个完整的开发、调试及服务体系,为嵌入式实时应用程序的开发提供了品种繁多的开发工具和性能分析工具,例如,交叉编辑器gcc/g++,内核裁剪工具mkimage,调试工具如源代码级系统调试工具Total/gdb,内核调试工具SKdb,支持多种shell环境bash、ash、sash和多种Linux的编辑器。BlueCat Linux提供了丰富的、支持许多种嵌入式处理器的板级支持包BSP,大大减少了产品投入市场的时间,其支持的处理器包括以下几种。

1) Intel xScale Micro architecture。

2) Network Processors and IA-32。

3) MIPS。

4) ARM 系列。

5) PowerPC。

6) x86系列。

2. HardHat Linux   

HardHat Linux是MontaVista公司针对嵌入式设备量身定制的、实时的、专业的嵌入式设备操作系统。它针对嵌入式设备的处理器、存储器资源有限的特点,在不减少新内核对嵌入设备有利的、特性的基础上,对Linux内核进行高度裁减、配置。HardHat Linux所配备的Cross Development Kit (CDK)为从事远程嵌入式设备上的系统开发、应用开发提供了良好的环境。CDK提供了一个可以应用于很大范围的主机——目标机(host-target)结构可普遍支持的开发环境。利用CDK,可以在主机上编辑、编译源程序,而把编译完成的程序放到目标机上运行。同时,在主机上进行跟踪和排错。这样,在编译和调试程序的时候就不再受到设备资源的限制,这将是以后开发的常用方法。MontaVista将其下一代旗舰产品的名称HardHat Linux改为MontaVista Linux。MontaVista Linux 2.1已经可以广泛地支持各类嵌入式处理器体系结构、CPU板卡及软件组件,包括6种业界领先体系结构的20款处理器:x86/IA-32、PowerPC、StrongARM、XScale、 ARM、MIPS及SH等。现在TI公司的OMAP系列、达芬奇系列使用的Linux系统都是由MontaVista公司提供的商用版本。

1.2 VxWorks

VxWorks是目前嵌入式系统领域中使用最广泛、市场占有率最高的系统。它支持多种处理器,如x86、i960、Sun Sparc、Motorola MC68xxx、MIPS RX000、POWER PC等等。大多数的VxWorks API是专有的。采用GNU的编译和调试器。 VxWorks是Wind River System公司开发的具有工业领导地位的高性能实时操作系统内核,具有先进的网络功能。VxWorks的开放式结构和对工业标准的支持,使得开发人员易于设计高效的嵌入式系统,并可以很小的工作量移植到其他不同的处理器上。其主要特点如下。

1) 可裁剪微内核结构。

2) 高效的任务管理能力(多任务——具有256个优先级)。

3) 具有优先级排队和循环调度能力。

4) 支持快速的、确定性的上下文切换。

5) 灵活的任务间通信机制,支持3种信号灯(二进制、计数、有优先级继承特性的互斥信号灯)。

6) 具有消息队列。

7) 具有套接字(Socket)。

8) 具有共享内存技术。

9) 支持信号(Signals)。

10) 微秒级的中断处理能力。

11) 支持POSIX 1003.1b实时扩展标准。

12) 支持多种物理介质及标准和完整的TCP/IP网络协议。

13) 灵活的引导方式(支持从ROM、U盘、本地盘、软盘、硬盘或网络中引导)。

14) 支持多处理器并行处理。

15) 快速灵活的I/O系统管理能力。

16) 支持MS-DOS和RT-11等多种文件系统、支持本地盘、U盘、CD-ROM的使用。

17) 完全符合ANSI C标准。

VxWorks板级支持包(BSP)包含了开发人员需要在特定的目标机上运行VxWorks所需要的一切支持:支持特定目标机的软件接口驱动程序等,以及从主机通过网络引导VxWorks的Boot Rom。WindRiver提供支持不同厂商的200多种商业体系结构和目标板的BSP。另外WindRiver还提供一个BSP移植包,帮助用户移植VxWorks到客户化硬件板上。VxWorks是一个商用操作系统,用户需要购买license。VxWorks操作系统是美国WindRiver公司与1983年设计开发的一种嵌入式实时操作系统(RTOS),它是当前市场占有率最高的嵌入式操作系统。VxWorks的实时性做得非常好,其系统本身的开销很小,进程调度,进程间通信,中断处理等系统公用程序精练而有效,使得它们造成的延迟很短。另外VxWorks提供的多任务机制,对任务的控制采用了优先级抢占(Linux2.6内核也采用了优先级抢占的机制)和轮转调度机制,这充分保证了可靠的实时性,并使同样的硬件配置能满足更强的实时性要求。另外VxWorks具有高度的可靠性,从而保证了用户工作环境的稳定。同时,VxWorks还有很完备强大的集成开发环境,这也大大方便了用户的使用。

但是,由于VxWorks的开发和使用都需要交高额的专利费,因此大大增加了用户的开发成本。同时,由于VxWorks的源码不公开,造成它部分功能的更新滞后。

1.3  Windows CE

Microsoft Windows CE是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计允许它对从PDA到专用的工业控制器用户的电子设备进行定制,操作系统的基本内核至少需要200KB。现在Microsoft又推出了针对移动应用的Windows Mobile操作系统。Windows Mobile是微软进军移动设备领域的重大品牌调整,它包括Pocket PC、Smartphone 及Media Centers三大平台体系,面向个人移动电子消费市场。凭借微软在视窗领域内的垄断地位,Windows Mobile从一诞生起就占据了很多优势,众多的Windows开发者可以在熟悉的环境下进行各种应用的开发。Windows Mobile系列专题,将带你从最基本的工具安装、环境配置开始,进入移动应用开发的世界。

1.4  QNX

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

QNX是由QNX软件系统有限公司开发的一套实时操作系统,它是一个实时的、可扩展的操作系统,部分遵循了POSIX相关标准,可以提供一个很小的微内核及一些可选择的配合进程。其内核仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理。其进程在独立的空间中运行,所有其他操作系统服务都实现为协作的用户进程,因此QNX内核非常小巧,大约几千字节,而且运行速度极快。这个灵活的结构可以使用户根据实际的需求,将系统配置为微小的嵌入式系统或者包括几百个处理器的超级虚拟机系统。

QNX使业界公认的X86平台上最好的嵌入式实时操作系统之一,它具有独一无二的微内核实时平台,是建立在微内核和完全地址空间保护基础之上的,它同样具有实时性强,稳定可靠的优点

POSIX(Portable Operating SystemInterface)表示可移植操作系统接口。不过QNX目前的市场占有量不是很大,而且大家对它的熟悉程度也不够,而且QNX对于GUI系统的支持不是很好。因而如果选用QNX系统的话,需要一个熟悉过程,而且对于GUI显示的驱动或者移植工作量会比较大。

1.5  Palm OS

3Com公司的Palm OS在PDA市场上占有很大的份额,它有开放的操作系统API接口,开发商可以根据需要自行开发所需要的应用程序。目前大约有3 500个应用程序可以在Palm上运行,这使得Palm的功能得以不断增多。这些软件包括计算器、各种游戏、电子宠物、GIS(地理信息)等。

1.6  uClinux

uClinux开始于Linux 2.0的一个分支,它被设计用来应用于微控制领域。uClinux最大的特征是没有MMU(内存管理单元模块)。它很适合那些没有MMU的处理器,如ARM7TDMI等。这种没有MMU的处理器在嵌入式领域中应用得相当普遍。同标准的Linux相比,由于uClinux上运行的绝大多数用户程序并不需要多任务。另外,针对uClinux内核的二进制代码和源代码都经过了重新编写,以紧缩和裁剪基本的代码。这就使得uClinux的内核同标准的Linux内核相比非常小,但是它仍能保持Linux操作系统常用的API,小于512KB的内核和相关的工具。操作系统所有的代码加起来小于900KB。

uClinux有完整的TCP/IP协议栈,同时对其他多种网络协议都提供支持,这些网络协议都在uClinux上得到了很好的实现。uClinux可以称为是一个针对嵌入式系统的优秀网络操作系统。uClinux所支持的文件系统很多,其中包括了最常用的NFS(网络文件系统)、ext2(第二扩展文件系统,它是Linux文件系统的标准)、MS-DOS及FAT16/32、Cramfs、jffs2、ramfs等。

1.7 uC/OS-II

源码开放(C代码)的免费嵌入式系统 uC/OS-II简单易学,提供了嵌入式系统的基本功能,其核心代码短小精悍,如果针对硬件进行优化,还可以获得更高的执行效率。当然,uC/OS-II相对于商用嵌入式系统来说还是过于简单,而且存在开发调试困难的问题。uC/OS-II的特点主要包括:公开源代码、可移植性很强(采用ANSI C编写)、可固化、可裁剪、占先式、多任务、系统服务、中断管理、稳定性与可靠性都很强。

uC/OS-II已经被移植到以下许多CPU上:ARM系列处理器、Intel公司的8051、80×86等系列、摩托罗拉公司的PowerPC、68K、68HC11等系列。uC/OS-II的移植相对于其他操作系统的移植要简单一些,uC/OS-II上通用的图形系统是MicroWindow。

1.8  Nuclues

Nucleus操作系统是由Accelerated Technology Inc开发的。Nucleus PLUS 是为实时嵌入式应用而设计的一个抢先式多任务操作系统内核,其95%的代码是用ANSI C写成的,因此,非常便于移植并能够支持大多数类型的处理器。从实现角度来看,Nucleus PLUS是一组C函数库,应用程序代码与核心函数库连接在一起,生成一个目标代码,下载到目标板的RAM中或直接烧录到目标板的ROM中执行。在典型的目标环境中,Nucleus PLUS 核心代码区一般不超过20KB。Nucleus PLUS 采用了软件组件的方法,每个组件具有单一而明确的目的,通常由几个C及汇编语言模块构成,提供清晰的外部接口,对组件的引用就是通过这些接口完成的。除了少数一些特殊情况外,不允许从外部对组件内的全局进行访问。由于采用了软件组件的方法,Nucleus PLUS的各个组件都非常易于替换和复用。Nucleus PLUS 的组件包括任务控制、内存管理、任务间通信、任务的同步与互斥、中断管理、定时器及I/O驱动等。

1.9 pSOS

ISI公司已经被WinRiver公司兼并,现在pSOS属于WindRiver公司的产品。这个系统是一个模块化、高性能的实时操作系统,专为嵌入式微处理器设计,提供一个完全多任务环境,在定制的或是商业化的硬件上提供高性能和高可靠性。可以让开发者根据操作系统的功能和内存需求定制成每一个应用所需的系统。开发者可以利用它来实现从简单的单个独立设备到复杂的、网络化的多处理器系统。
1.10 OS-9

Microwave的OS-9是为微处理器的关键实时任务而设计的操作系统,广泛应用于高科技产品中,包括消费电子产品、工业自动化、无线通讯产品、医疗仪器、数字电视/多媒体设备。它提供了很好的安全性和容错性。与其他的嵌入式系统相比,它的灵活性和可升级性非常突出。
1.11 LynxOS

Lynx Real-time Systems的LynxOS是一个分布式、嵌入式、可规模扩展的实时操作系统,它遵循POSIX.1a、POSIX.1b和POSIX.1c标准。LynxOS支持线程概念,提供256个全局用户线程优先级;提供一些传统的、非实时系统的服务特征;包括基于调用需求的虚拟内存,一个基于Motif的用户图形界面,与工业标准兼容的网络系统以及应用开发工具。

目前,世面上有很多商业性嵌入式系统都在努力地为自己争取着嵌入式市场的份额。但是,这些专用操作系统均属于商业化产品,价格昂贵;而且,由于它们各自的源代码不公开,使得每个系统上的应用软件与其它系统都无法兼容。并且,由于这种封闭性还导致了商业嵌入式系统在对各种设备的支持方面存在很大的问题,使得对它们的软件移植变得很困难。在嵌入式这个IT产业的新的关键领域,Linux操作系统适时地出现在了国家和国内各嵌入式厂商面前,由于Linux自身诸多优势,吸引了许多开发商的目光,成为嵌入式操作系统的新宠(见图2)。它的出现无疑为国家发展嵌入式操作系统事业提供了一个极有吸引力的机会。 (综合电子论坛)

现在Nuclues也被移植到如x86、ARM系列、MIPS系列、PowerPC系列、ColdFire、TI DSP、StrongARM、H8/300H、SH1/2/3、V8xx、Tricore、Mcore、Panasonic MN10200、Tricore等处理器上,Nuclues对于GUI的支持不像Lnux、uC/OS-II那么方便。所以Nucleus大部分应用在不含图形系统的应用中。除了上述国外知名的嵌入式操作系统外,国内也有不少自主开发的嵌入式操作系统如:Hopen OS、EEOS等。Hopen OS是由凯思集团自主研制的实时操作系统,由一个很小的内核及一些可以根据需要定制的系统模块组成,核心Hopen Kernel一般为10KB左右,占空间小,具有多任务、多线程的系统特性。EEOS是由中科院计算所组织开发的、开放源码的实时操作系统,支持p-Java,一方面小型化,一方面也可以重用Linux的驱动和其他模块。目前已经发展成一个较为完善、稳定、可靠的嵌入式操作系统平台了。