《嵌入式系统原理与接口技术》第1章 绪论1.3 嵌入式操作系统

时间:2022-01-02 19:21:12

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位单片机或数字信号处理器。它的主要特点如下:

a) 公开源代码:方便不同硬件平台的移植;

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

c) 可固化;

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

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

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

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

和其他嵌入式操作系统相比,μ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 Manegement Unit,MMU)功能模块,因此之类的CPU只能运行一些较为简单的操作系统,或者没有操作系统而直接运行应用程序。而μClinux是专门准对没有MMUCPU,并且为嵌入式系统做了很多优化。适用于没有虚拟内存或内存管理单元的处理器,例如ARM7TDMI,它通常可以用于具有很少内存或Flash的嵌入式系统。μClinux为了支持没有MMU的处理器而对标准Linux做了修正,它保留了操作系统的所有特性,为硬件平台更好的运行各种程序提供了保证。运行μClinux的嵌入式系统能够使用哪个几乎所有的Linux API函数,不会因为没有MMU而受到影响。μClinux由于是在标准的Linux的基础之上进行裁剪和优化,因而形成了一个高度优化、代码紧凑的嵌入式Linux,虽然它经过裁剪,但是仍然保留了Linux的大多数优点:稳定、良好的移植性,优秀的网络功能,对各种文件系统完备的支持,以及标准丰富的API等。

(3)Windows CE

Windows CE是微软开发的一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统,它是精简的Windows 95操作系统。Windows CE的图形用户界面相当出色。CE中的C代表袖珍(Compact)、消费(Consumer)、通信能力(Connectivity)和伴侣(Companion);E代表电子产品(Electronics)。与Windows 95/98/NT不同的是,Windows CE所有源代码全部由微软自行开发,但Windows CE是基于Win32API重新开发的新型信息设备平台。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的嵌入系统通常为某个特定用途而设计,并在不联机的情况下工作。它要求所使用的操作系统体积较小,内部兼有对中断的响应功能。它的的特点有:

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

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

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

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

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

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

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

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

说道Windows CE又不得不说Windows MobileWindows Mobile是在Windows CE的基础上,强化其手机通讯功能,从而独立发展起来的系统,Windows Mobile又分为两种,分别是支持触摸屏的PPC和支持键盘的SmartPhone

(4)VxWorks

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

在美国的F-16FA-18战斗机,B-2隐形轰炸机和爱国者导弹上,甚至连19974月在火星表面登陆的火星探测器上也使用了VxWorks。它是目前嵌入式系统领域中使用最广泛、市场占有率最高的系统。它支持多种处理器,如x86i960Sun SparcMotorola MC68xxxMIPS RX000Power PC, ARM , StrongARM等。大多数的VxWorksAPI是专有的。