1.3 嵌入式操作系统

1.3.1 嵌入式操作系统的概述

在计算机技术发展的初期由于计算机完成的功能专一,资源也比较有限,并没有操作系统这个概念,就像我们今天编写的简单单片机程序一样,几个中断加上个死循环就能解决问题。然而随着计算机功能的增强,为了提高计算机资源的利用率,同时为用户提供一个与计算机的接口,便出现了计算机监控程序(Monitor)用来监视计算机的软件和硬件资源。随着计算机技术的飞速发展,计算机的软件和硬件资源越来越丰富,就对传统的监控程序提出了更高的要求,因此在20世纪60年代中期监控程序发展成为了操作系统。

我们使用的Windows就是最流行的操作系统,操作系统是控制其他程序运行,管理系统资源并为用户提供操作接口的系统软件的集合。而嵌入式操作系统则是针对嵌入式应用的专用系统,如今最火的嵌入式操作系统莫过于Android了。

嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议等。嵌入式操作系统通常具备通用操作系统的基本特点,如能够把硬件虚拟化,使得开发人员能够不用关心底层硬件,从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、标准设备驱动程序及工具集等。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性以及应用的专用性等方面具有较为突出的特点。

1.3.2 常见的嵌入式操作系统

1.μC/OS

μC/OS和μC/OS-II是一个源码公开、可移植、可固化、可裁剪及占先式的实时多任务操作系统。需要说明的是μC/OS和μC/OS-II只是一个实时操作系统内核,这也就意味着它并不像其他实时操作那样可以给用户提供一些API函数接口,很多工作需要设计者自己去完成,但是μC/OS和μC/OS-II已经广泛用于8位、16位和32位单片机或数字信号处理器。它的主要特点如下:

(1)公开源代码:方便不同硬件平台的移植。

(2)可移植性:绝大部分源代码使用C语言编写,方便不同平台的移植。

(3)可固化。

(4)可裁剪性:可以根据具体的应用和硬件资源配置有选择地使用需要的系统服务,以减少所需的硬件资源要求。

(5)占先式:完全是占先式的实时内核,系统总是运行就绪条件下优先级最高的任务。

(6)多任务:最多可以管理64个任务,任务的优先级必须不同,不支持时间片轮转调度法。

(7)可确定性:函数调用与服务的执行时间具有可确定性,与任务多少无关。

和其他嵌入式操作系统相比,μC/OS和μC/OS-II是一个轻量级的实时系统,由于它可移植性好的特点,在各种级别的嵌入式处理器上都有所应用。

2.嵌入式Linux

Linux是一个类似于UNIX的操作系统。它起源于芬兰一个名为Linus Torvalds的业余爱好者,但是现在已经是最流行的一款开放源代码操作系统。Linux从1991年问世至今,短短十几年时间内已发展成为一个功能强大、设计完善的操作系统,伴随网络技术进步而发展起来的Linux OS已成为微软公司的Windows的强劲对手。Linux系统不仅运行于PC平台,还在嵌入式系统方面广泛应用。

因为是源代码开放软件,所以不存在黑箱技术,任何人都可以修改它,或者用它开发自己的产品。Linux系统是可以定制的,系统内核目前已经可以做得很小。一个带有中文系统及图形化界面的核心程序也可以做到不足1MB,而且同样稳定。Linux作为一种可裁减的软件平台系统,是发展未来嵌入设备产品的绝佳资源,遍布全球的众多Linux爱好者又能给予Linux开发者强大的技术支持。因此,Linux作为嵌入式系统新选择,有很好的发展前景。

μClinux是从Linux2.0/2.4内核派生而来,因而沿袭了主流Linux的绝大部分特性。为了降低硬件成本及运行功耗,很多嵌入式CPU没有设计内存管理单元(Memory Management Unit,MMU)功能模块,因此这类CPU只能运行一些较为简单的操作系统,或者没有操作系统而直接运行应用程序。而μClinux是专门针对没有MMU的CPU,并且为嵌入式系统做了很多优化。适用于没有虚拟内存或内存管理单元的处理器,例如ARM7TDMI,它通常可以用于具有很少内存或Flash的嵌入式系统。μClinux为了支持没有MMU的处理器而对标准Linux做了修正,它保留了操作系统的所有特性,为硬件平台更好地运行各种程序提供了保证。运行μClinux的嵌入式系统能够使用几乎所有的Linux API函数,不会因为没有MMU而受到影响。μClinux由于是在标准的Linux的基础之上进行裁剪和优化,因而形成了一个高度优化、代码紧凑的嵌入式Linux,虽然它经过裁剪,但是仍然保留了Linux的大多数优点:稳定、良好的移植性,优秀的网络功能,对各种文件系统完备的支持,以及标准丰富的API等。

3.Windows CE、Windows Mobile、Windows Phone

Windows CE是微软开发的一个开放的、可升级的32位嵌入式操作系统,是基于掌上电脑类的电子设备操作系统,它是精简的Windows 95操作系统。Windows CE的图形用户界面相当出色。CE中的C代表袖珍(Compact)、消费(Consumer)、通信能力(Connectivity)和伴侣(Companion),E代表电子产品(Electronics)。与Windows 95/98/NT不同的是,Windows CE所有源代码全部由微软自行开发,但Windows CE是基于Win32 API重新开发的新型信息设备平台。Windows CE具有模块化、结构化和基于Win32应用程序接口以及处理器无关等特点。

Windows CE 1.0最早于1996年推出,是单色的Windows 95简化版本。1997年秋季,Comdex大会上公布的Windows CE 2.0仍是基于Win95的操作系统,效率远高于1.0版。Windows CE 3.0是微软的Windows Compact Edition,已摆脱旧有的Windows 95简化格式,是一套全新的操作系统,支持5种CPU:x86、PowerPC、ARM、MIPS、SH3/4,并且改名为Windows for Pocket PC,简称Pocket PC。2002年1月,微软又推出Windows CE.Net,即Windows CE 4.0。2004年5月,微软推出Windows CE 5.0,开放有250万行源代码。2006年11月,微软推出Windows Embedded CE 6.0。

Windows CE的设计目标是:模块化及可伸缩性、实时性能好、通信能力强大、支持多种CPU。它的设计可以满足多种设备的需要,一个典型的基于Windows CE的嵌入系统通常为某个特定用途而设计,并在不联机的情况下工作。它要求所使用的操作系统体积较小,内部兼有对中断的响应功能。它的特点如下。

(1)具有灵活的电源管理功能,包括睡眠/唤醒模式。

(2)使用了对象存储(Object Store)技术,包括文件系统、注册表及数据库。它具有很多高性能、高效率的操作系统特性,包括按需换页、共享存储、交叉处理同步、支持大容量堆(Heap)等。

(3)拥有良好的通信能力。广泛支持各种通信硬件,也支持直接的局域连接以及拨号连接,并提供与PC、内部网以及互联网的连接,还提供与Windows 9x/NT的最佳集成和通信。

(4)支持嵌套中断,允许更高优先级别的中断首先得到响应,而不是等待低级别的ISR完成。这使得该操作系统具有嵌入式操作系统所要求的实时性。

(5)更好的线程响应能力。对高级别IST(中断服务线程)的响应时间上限的要求更加严格,在线程响应能力方面的改进,帮助开发人员掌握线程转换的具体时间,并通过增强的监控能力和对硬件的控制能力,帮助他们创建新的嵌入式应用程序。

(6)256个优先级别,可以使开发人员在控制嵌入式系统的时序安排方面有更大的灵活性。

(7)Windows CE的API是Win32API的一个子集,支持近1500个Win32 API。有了这些API,足可以编写任何复杂的应用程序。当然,在Windows CE系统中,所提供的API也可以随具体应用的需求而定。

Windows CE在生活中有着广泛的应用,包括当前市场上绝大多数的GPS导航仪,以及一些车用计算机、电视机顶盒、生产在线的控制设备、公共场所的信息站(Kiosk)、电子辞典等,有些设备甚至没有任何人机界面。名噪一时的国产手机魅族M8使用的也是Windows CE系统。

Windows Mobile(WM)是在Windows CE的基础上,强化其手机通信功能,从而独立发展起来的系统。Windows Mobile又分为两种:支持触摸屏的PPC和支持键盘的SmartPhone。Windows Mobile是微软针对移动设备而开发的操作系统。该操作系统的设计初衷是尽量接近于桌面版本的Windows,微软按照计算机操作系统的模式来设计WM,以便能使得WM与计算机操作系统一模一样,这也是Windows Mobile在移动领域败给iOS和Android的主要原因。WM的应用软件以Microsoft Win32 API为基础。新继任者Windows Phone操作系统出现后,Windows Mobile系列正式退出手机系统市场。2010年10月,微软宣布终止对WM的所有技术支持。

Windows Phone 7/7.5/7.8使用的仍然是Windows CE内核,而2012年6月21日发布的Windows Phone 8则采用和Windows 8相同的针对移动平台精简优化NT内核,这标志着移动版Windows Phone将提前与Windows系统同步,部分Windows 8(同样使用ARM架构的RT版)应用可以更方便地移植到手机上。同时,这也标志着微软在移动互联网领域的多终端融合新模式。

Windows Phone 8系统也是第一个支持双核CPU的版本,宣布Windows Phone进入双核时代,同时宣告着Windows Phone 7退出历史舞台。Windows Phone 8兼容所有Windows Phone 7.5的应用程序,但Windows Phone 8的所有原生程序无法在Windows Phone 7.5上运行,属于单向兼容。

虽然微软终止对Windows Mobile的技术支持,同时最新的Windows Phone 8也已经抛弃了Windows CE的内核,但是由于其特点突出,Windows CE在工业领域中仍然占有非常重要的地位。

4.VxWorks

VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种实时操作系统。VxWorks拥有良好的持续发展能力、高性能的内核以及良好的用户开发环境,在实时操作系统领域内占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通信、军事演习、导弹制导、飞机导航等。

在美国的F-16、FA-18战斗机、B-2隐形轰炸机和爱国者导弹上,甚至1997年4月在火星表面登陆的火星探测器上也使用了VxWorks。VxWorks是目前嵌入式系统领域中使用最广泛、市场占有率最高的系统。VxWorks支持多种处理器,如x86、i960、Sun Sparc、Motorola MC68xxx、MIPS RX000、PowerPC、ARM、StrongARM等。大多数VxWorks API是专有的。