结合国内实情,当前国家大力支持对自主操作系统的研究开发,特别是嵌入式系统需要的高度简练、界面友善、质量可靠、应用广泛、易开发、多任务并且价格低廉的操作系统。下面介绍几种常用的嵌入式操作系统。
1. μC/OS-Ⅱ嵌入式操作系统内核
μC/OS-Ⅱ是一个可裁剪、源码开放、结构小巧、抢先式的实时多任务内核,主要面向中小型嵌入式系统,具有执行效率高、占用空间小、可移植性强、实时性能优良和可扩张性强等特点。μC/OS-Ⅱ中最多可支持64个任务,分别对应优先级0~63,其中0为最高优先级。实时内核在任何时候都是运行就绪了的最高优先级的任务,是真正的实时操作系统。μC/OS-Ⅱ最大程度的使用ANSI C语言开发,现已成功移植到近40多种处理器体系上。
μC/OS-Ⅱ结构小巧,最小内核可编译至2 KB(这样的内核没有太大的实用性),即使包含全部功能如信号量、消息邮箱、消息队列以及相关函数等,编译后的μC/OS-Ⅱ内核也仅有6~10 KB,所以它比较适用于小型控制系统。μC/OS-Ⅱ具有良好的扩展性能,不如系统本身不支持文件系统,但是如果需要,也可自行加入文件系统的内容。
2. VxWorks嵌入式实时操作系统
VxWorks是WindRiver Systems公司推出的一个实时操作系统,是目前嵌入式系统领域中使用最广泛、市场占有率最高的系统。它支持多种处理器,如x86、i960、Sun Sparc、Motorola MC68xxx、MIPS RX000、PowerPC等。VxWorks实时操作系统基于微内核结构,由400多个相对独立、短小精悍的目标模块组成,用户可根据需要增加或删减适当模块来裁剪和配置系统。VxWorks的链接器可按应用的需要来动态链接目标模块。
VxWorks因其良好的可靠性和卓越的实时性,已广泛应用在通信、军事、航空、航天等高端技术及实时要求极高的领域中。
3. WinCE操作系统
Microsoft Windows CE是针对有限资源的平台而设计的多线程、完整优先权、多任务的操作系统,但它不是一个硬实时操作系统。高度模块化是WinCE的一个鲜为人知的特性,这一特性有利于它对从掌上电脑到专用的工业控制器的用户电子设备进行定制。WinCE操作系统的基本内核至少需要200 KB的ROM。它支持Win32 API子集、多种用户界面硬件、多种串行和网络通信技术、COM/OLE和其他进程间通信的先进方法。Microsoft公司为Windows CE提供了Platform Builder和 Embedded Visual Studio开发工具。
Windows CE有5个主要的模块。
● 内核模块:支持进程和线程处理以及内存管理等基本服务。
● 内核系统调用接口模块:允许应用软件访问操作系统提供的服务。
● 文件系统模块:支持DOS等格式的文件系统。
● 图形窗口和事件子系统模块:控制图形显示,并提供 Windows GUI界面。
● 通信模块:允许与其他设备进行信息交换。
Windows CE嵌入式操作系统最大的特点是能提供与PC机类似的图形界面和主要的应用程序。Windows CE嵌入式操作系统的界面显示大多是在Windows里出现的标准部件,包括桌面、任务栏、窗口、图标和控件等。这样,只要是对PC机上的Windows比较熟悉的用户,就可很快的使用基于Windows CE嵌入式操作系统的嵌入式设备。
4. Linux操作系统
Linux类似于UNIX,是一种免费的、源代码完全开放的、符合POSIX标准规范的操作系统。Linux的系统界面和编程接口与UNIX很相似,所以UNIX程序员可以很容易地从UNIX环境下转移到Linux环境中来。Linux拥有现代操作系统所具有的内容:真正的抢先式多任务管理,支持多用户、内存保护、虚拟内存,支持对称多处理机SMP(Symmetric Multi-Processing),符合POSIX标准,支持TCP/IP,支持绝大多数的32位和64位CPU。嵌入式Linux版本众多,如支持硬实时的Linux——RT-Linux/RTAI、Embedix、Blue Cat Linux和Hard Hat Linux等。现在仅简要介绍应用广泛的μCLinux。
μCLinux是针对无MMU微处理器开发的,已被广泛使用在ColdFire、ARM、MIPS、SPARC、SuperH等没有MMU的微处理器上。虽然μCLinux的内核比原Linux2.0内核小得多,但它保留了Linux操作系统稳定性好、网络能力优异以及对文件系统的支持等主要优点。
μCLinux与标准Linux的最大区别在于内存管理。标准Linux是针对有MMU的处理器设计的。在这种处理器上,虚拟地址被送到MMU,把虚拟地址映射为物理地址,通过赋予每个任务不同的虚拟-物理地址转换映射,支持不同任务之间的保护。
对于μCLinux来说,其设计针对没有MMU的处理器,不能使用虚拟内存管理技术。μCLinux对内存的访问是直接的,即它对地址的访问不需要经过MMU,而是直接送到地址线上输出;所有程序中访问的地址都是实际的物理地址;μCLinux对内存空间不提供保护,各个进程实际上共享一个运行空间。在实现上,μCLinux仍采用存储器的分页管理,系统启动时把实际存储器进行分页,在加载应用程序时,程序分页加载。但是由于没有MMU管理,所以μCLinux采用实存储器管理策略(Real Memeory Management)。