- 嵌入式Linux系统开发与应用
- 金伟正编著
- 6579字
- 2020-08-27 09:05:52
1.3 嵌入式操作系统
嵌入式操作系统是嵌入式应用和传统操作系统结合的产物,是需求和复杂度增加的必然结果,是产品上市时间和可维护性的时代要求。嵌入式操作系统从一开始便在通信、交通、医疗、安全方面展现出强大的魅力和强劲的发展潜力。
1.3.1 嵌入式操作系统概述
嵌入式操作系统是嵌入式系统的灵魂,它的出现大大提高了嵌入式系统开发的效率。如图1.11所示,按照层次的不同可以将它分为三个部分:最小的基本部分包括一个用作引导的可用设施,一个具备内存管理、进程管理、定时器服务的微内核,一个初始进程;为了具备一定的实用性,还需加上硬件驱动程序,一个或几个进程完成必需的功能;随着对系统要求的增加,一般还包括一个文件系统(放在ROM或RAM中)、TCP/IP协议栈等。
图1.11 嵌入式操作系统的组成
1.3.2 嵌入式操作系统的分类
操作系统的任务是控制和管理计算机系统内部各种硬件和软件资源,合理有效地组织计算机系统有效的工作,为用户提过一个使用方便和便于扩展的工作环境。操作系统的分类标准有很多,而且其中最基本的操作系统类型有三类,即多任务操作系统、分时操作系统和实时操作系统。但一个实际的操作系统中可能同时兼有三者或者两者的功能。
1. 多任务操作系统
多任务操作系统中,用户提交的作业都先放在外存上排成一个队列,再由操作系统中的调度程序按照一定的算法从外存中调入内存,使得调入内存的作业共享CPU和系统中的各种资源,以达到提高资源利用率和系统吞吐量的目的。该操作系统具有以下特征。
(1)并行性
在内存中可同时驻留多个程序,这些程序可同时并发执行,从而有效地提高了资源利用率和吞吐量。
(2)调度性
一个作业由开始提交给操作系统到完成,要经过作业调度和进程调度两个调度过程。前者将作业由外存后备队列中调度到内存,后者从内存中选出该作业,并将处理机分配给它。
(3)无序性
作业完成的先后顺序和它们进入内存的先后顺序无关,先进入的可能最后完成,相反,后进入的可能首先完成。
多任务操作系统也存在缺点:由于作业首先要进行排队,然后再进行处理,导致作业的平均周转时间长;另外就是无交互能力,对修改和调试程序都极不方便。
2. 分时系统
基于共享计算机和人机交互方便性两个因素的考虑,产生了分时系统。分时系统能令用户觉得自己好像独占一台计算机,并可以对它进行直接控制,能够方便地修改错误。用户还能够通过自己的终端把作业提交到主机上运行,能对自己的程序进行控制。分时系统具有以下特征。
(1)并行性
允许在一台主机上同时连接多台终端,系统按分时原则为每个用户服务。宏观上是多个用户同时工作,共享系统资源,实际上是每个用户作业轮流运行一个时间片。
(2)独立性
每个用户各自独占一个终端,相互间是独立的,因此从用户的角度看好像一个人在使用主机。
(3)交互性
用户可以通过终端与系统进行广泛的人机对话,即用户可以请求分时系统提供多方面的服务,如文件编辑、数据处理等。
(4)及时性
分时系统要求用户的请求能在很短时问内获得响应,而这个时间间隔应该是以人们能够忍受范围内的等待时间来决定的。
3. 实时系统
嵌入式实时系统是一种能够进行实时计算的嵌入式计算机系统。“实时”并不等于“快”,实时系统的经典定义是:系统的正确性不仅依赖于计算结果逻辑上的正确,还依赖于此结果产生的时机是否正确。实时系统分为软实时系统和硬实时系统两种。
在软实时操作系统中系统的宗旨是使各个任务运行得越快越好,并不要求限定某个任务在多长的时间内完成。比如播放器,允许在播放的时候在视觉可以忍受的情况下丢帧。如图1.12所示为一款1080P的高清播放器的示意图。
图1.12 高清播放器
硬实时操作系统要求系统能够在确定的时间内执行相应的功能,并对外部的异步事件作出响应。操作系统的正确性不仅指逻辑设计的正确性,同时与这些操作系统执行的时间有密切的关系。“在确定的时间内”是硬实时操作系统的核心因素。也就是说,硬实时操作系统对响应时间有严格的要求。工业控制、航空航天中的应用一般为硬实时操作系统。
实时操作系统具有及时性、交互性和独立性的特征。实时系统对响应时间的要求比分时系统要高,分时系统的响应时间通常为秒级,而实时系统的响应时间是由控制对象接收的延迟时间来确定的,可能是秒级,也可能是毫秒级,甚至是微秒级。实时系统也保留了通用操作系统的交互性,但是它仅允许操作员访问其中有限的专用程序,一般不能写入程序和修改程序,其交互性比通用操作系统差。从独占性来看,每个用户通过自己的终端请求系统服务,互不干扰,好像独占一样。根据IEEE实时UNlX分委会定义,实时操作系统应具备的特征有:
(1)异步事件响应
异步事件是指无一定时序关系而随机发生的事件,如外部设备完成数据传输,实时控制设备出现异常情况等。
(2)切换时间和中断延迟时间确定
不论系统管理多少个任务,系统从一个任务切换到另一个任务的切换时间是确定的。另外,在处理中断时,中断延迟时间也是确定的。这些对任务的调度处理都是很有好处的。
(3)抢占调度
为确保响应时间(任务进入就绪状态到被调度执行的时间),实时操作系统必须允许高优先级的任务一旦准备好运行,马上抢占低优先级任务的执行。
(4)内存锁定
必须具有将程序或部分程序锁定在内存的能力,锁定在内存的程序减少了为获得该程序而访问磁盘的时间,从而保证了快速的响应时间。
(5)优先级中断和调度
必须允许用户定义中断优先级和被调度任务的优先级,并指定如何中断服务。
(6)连续文件
通常要求数据存储在连续文件上,以减少存取数据时的查找时间。
(7)同步
提供同步协调共享数据使用和时间执行的手段。
1.3.3 嵌入式操作系统的特点
嵌入式操作系统具有区别于通用操作系统的一些重要特征,这些特征主要有以下几点。
1. 体积小
设计者不断地在更小空间、更便宜的CPU中注入更强的计算能力,并希望将这些CPU集成于各种各样的项目中。一个小的嵌入式操作系统也经常只使用几千字节的RAM和ROM内存。通用计算机系统一般要求功能强大,而在嵌入式系统中,在满足相应需求的情况下,则要求占用资源尽可能地少。
2. 运行时间长
嵌入式操作系统在没有人工干预的情况下应该能运行几年,这意味着硬件和软件永远都不会出错。因此,系统最好没有机械部分,比如软驱和硬盘。因为机械部分更容易出问题,而且还会占用更多的空间,需要更多的能量,通信时间更长,而且驱动更复杂(比如机械部件的移动控制)。
3. 故障重启
尽管已经将嵌入式系统设计得非常坚固可靠,但开发人员仍然需要预防系统出现故障的可能(比如说内存保护错误)。因为此系统可能运行在一个无人的环境,无法手工进行复位操作,因此,嵌入式系统通常应具有在出现故障时立即启动到一个安全状态的功能,特别在系统控制着一些关键设备时。
4. 低功耗
嵌入式系统一般需要长时间工作,比如手机,在电池功率一定的情况下,就需要系统尽可能小地消耗能量。大的耗电量还直接影响到硬件的费用,需要更大功率的电源。
5. 价格便宜
嵌入式系统应该尽可能便宜。嵌入式系统通常是成千上万地大批量生产,哪怕价格降低一点点,也会使库存产品销量大增。
6. 动态加载
一些嵌入式系统在被启动以后在物理上是没法接触到的(比如发射的卫星),但还是有许多嵌入式系统仍然可以进行远程访问。为了软件的升级,应该可以支持动态链接,在开始启动时不存在的目标代码要能被上传到系统,在不需要停止系统运行的情况下,使得目标码链接到运行的操作系统并能运行。
1.3.4 典型的嵌入式操作系统
由于嵌入式产品的蓬勃发展和个人终端的逐渐显现,嵌入式操作系统也达到空前的阶段,国内外获得成功应用的嵌入式操作系统达上百种。这里仅列举比较流行的系统,并对其中的几种做简单介绍。
国外较有名的嵌入式操作系统有:Windows CE、Windows XP Embedded、VxWorks、Nucleus、Palm OS、Symbian OS、Embedded Linux、eCos、pSOS、uC/OS-II、QNX、RTEM、Java OS、ThreadX、SMX等。
国内较有名的嵌入式操作系统有:Hopen、LEOS、华恒Embedded Linux、DeltaOS等。
1. Windows CE
随着1996年11月Windows CE 1.0的发布,Microsoft正式进入嵌入式市场。微软凭借自己在操作系统上深厚的技术实力和在世界市场上广泛的号召力,很快使Windows CE成为众多嵌入式产品的首选操作系统,比如PDA、SmartPhone等。Windows CE最初的开发是针对原始设备制造商(OEM)的,使得他们能够构建资源受到限制的小型手持式设备及个人信息管理(PIM)设备。随着该操作系统后续版本的发布,Windows CE有了显著的进步,其中包括基于向导程序的简化操作系统配置,软件开发工具包(SDK)的推出实现了应用程序的开发,2.12版中对多媒体的支持,以及Windows CE 3.0中增强的因特网功能及对实时的支持。如今在它最新的第4代产品中,Windows CE.NET提供了时间测试的完善功能集,包括了开发人员创建小内存占用的智能移动设备所需的最新技术。Windows CE.NET作为Windows CE 3.0的后继产品,为嵌入式市场重新设计,为快速建立下一代智能移动和小内存占用的设备提供了一个健壮的实时操作系统。Windows CE.NET具备完整的操作系统特性集和端对端的开发环境,它包括了创建一个基于Windows CE的定制设备所需的一切,如强大的联网能力、强劲的实时性和小内存体积占用,以及丰富的多媒体和Web浏览功能。Windows CE包含提供操作系统最关键功能的4个模块:内核模块、对象存储模块、图形及窗口和事件子系统(GWES)模块、通信模块。Windows CE还包含一些附加的可选择模块,这些模块可支持的任务有管理可安装设备驱动程序、支持COM等。
2. Windows XP Embedded
在Windows CE发布之后,Microsoft很快就发现很多嵌入式开发人员正在开发许多非PC的设备,既不是小型的,也不是资源受限的。这些设备可以受益于基于PC的体系结构、增强的特性集、丰富的功能及更强的伸缩性。而这些都是当时的Windows CE所无法提供的。在1999年,为了完善嵌入式产品的产品线,Microsoft在市场中推出了Windows NT Embedded,从而为嵌入式开发人员提供了更多的选择和灵活性,并使他们能够利用丰富的Windows特性集。例如,客户可以使用Windows NT Embedded来构建制造、通信和多媒体等设备。在2001年,Microsoft发布了Windows NT Embedded的继任者:Windows XP Embedded。Windows XP Embedded是这种领先的桌面操作系统的组件化版本,它能够快速开发出最为可靠的全功能连接设备。Windows XP Embedded采用与Windows XP Professional相同的二进制代码,从而使得嵌入式开发人员能够只选择那些小覆盖范围嵌入式设备所需的丰富定制化特性。Windows XP Embedded构建在已经得到验证的Windows@2000代码库基础之上,提供了业内领先的可靠性、安全性和性能,并且具备最新的多媒体、Web浏览、电源管理及设置支持功能。Windows XP Embedded还集成了最新的嵌入式支持功能,例如无线支持及灵活的启动与存储选项。此外,它还包含一套全新设计的工具集Windows Embedded Studio,这套工具使得开发人员能够更快速配置、构建并部署智能化设计方案。
3. VxWorks
VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统,是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核及友好的用户开发环境,使它在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通信、军事演习、弹道制导、飞机导航等。在美国的F-16、FA-18战斗机、B-2隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用了VxWorks。在我国的交换通信设备上,VxWorks几乎成了嵌入式实时操作系统的标准。图1.13所示是VxWorks组成结构图。
图1.13 VxWorks组成结构图
4. Nucleus
它是由美国ATI(Accelerated Technology Inc.)公司于1990年推出的嵌入式实时多任务操作系统。Nucleus PLUS是为实时嵌入式应用而设计的一个抢先式多任务操作系统内核,其95%的代码是用ANSIC写成的,因此非常便于移植并能够支持大多数类型的处理器。从实现角度来看,Nucleus PLUS是一组C函数库,应用程序代码与核心函数库连接在一起,生成一个目标代码,下载到目标板的RAM中或直接烧录到目标板的ROM中执行。在典型的目标环境中,Nucleus PLUS核心代码区一般不超过20 KB大小。Nucleus PLUS采用了软件组件的方法。每个组件具有单一而明确的目的,通常由几个C及汇编语言模块构成,提供清晰的外部接口,对组件的引用就是通过这些接口完成的。除了少数一些特殊情况外,不允许从外部对组件内的全局进行访问。由于采用了软件组件的方法,Nucleus PLUS各个组件非常易于替换和复用。Nucleus另外一个优点就是提供源代码,非常方便用户的深入理解和使用。正是由于它的这些特点,使之在嵌入式操作系统市场上占有一席之地。
5. Palm OS
自从1996年第一个Palm Pilot诞生起,Palm PoweredTM产品已经成长为全球数百万民众所不可缺少的工具。今天,每三台掌上电脑中几乎就有两台运行Palm OS软件,超过80%的企业把Palm OS作为其掌上电脑标准。Palm OS已经成为全球最受欢迎的掌上电脑和智能电话操作系统之一。
6. Symbian OS
1998年6月,由爱立信、诺基亚、摩托罗拉和Psion共同出资,筹建了Symbian公司。Symbian公司以开发和供应先进、开放、标准的手机操作系统——Symbian OS为目标。Symbian公司同时向那些希望开发基于Symbian OS产品的厂商发放软件许可证。在智能手机上,Symbian占有不可动摇的地位,但是由于各种原因,在市场份额上占绝对优势的Symbian OS,在开发者数量上却并不占优。
7. μC/OS-II
在我国的市场上,处处都能够看到它的影子,同时在我国也拥有广泛的支持者,这些都来源于清华大学邵贝贝教授的大力推动。而由邵贝贝教授主持翻译的《嵌入式实时操作系统μC/OS-II(第2版)》更是成为中国嵌入式操作系统初学者的首选读物。
8. Hopen
Hopen是国产嵌入式操作系统中的佼佼者。它是凯思集团自主研制开发的嵌入式操作系统,由一个体积很小的内核及一些可以根据需要进行定制的系统模块组成。其核心Hopen Kernel一般为10 KB左右大小,占用空间小,并具有实时、多任务、多线程的系统特征。使用者可以很容易地对这一操作系统进行定制或做适当开发。该系统可广泛应用于个人数字助理(PDA)、家庭信息环境(机顶盒,数字电视)、通信计算平台(媒体手机)、车载计算平台(导航器)、工业与商业控制(智能工控设备,POS/ATM机)、电子商务平台(智能卡应用,安全管理)等信息家电上,还可应用于与因特网相连接的一切接入设备。
9. LEOS
LEOS(Legend Embedded OS)是由联想集团设计研发的基于Linux的模块化、可裁减的嵌入式操作系统,具有占用空间小、实时、多任务、多线程等系统特征,提供丰富的中间件支持,并在台式计算机(PC)、网络计算机(NC)、电视机机顶盒等设备上取得成功应用。它支持多种声音、图像、多媒体、无线、B协议等文件格式和应用标准,能够实现多种文件格式的识别和硬件设备的自动检测。联想天骄双模式计算机采用LEOS系统,使得用户不用进入通常意义上的操作系统就可以利用计算机欣赏影碟、听音乐、浏览照片,成为真正的数码家电中心;同时还提供了对用户数据的备份和恢复功能,只需非常简单的操作就可以将用户系统恢复到备份时的状态。同时,LEOS对国产的CPU支持较好,可广泛应用于X86架构CPU、ARM架构CPU、国产方舟CPU、XScale等体系的硬件系统。
10. Delta OS
Delta OS是由科银京城开发的一个实时操作系统。这个实时操作系统可以嵌入到以32位中央处理器为核心的各种电子设备中。作为应用程序运行的支撑环境,Delta OS所提供的各种机制可以使电子设备中的应用程序在多任务环境下运行,同时满足开发人员在开发电子设备时的基本需求,比如实时响应外部事件、存储管理及联网需求等。科银京城同时提供了一套完备的开发工具LamdaTools,使Delta OS上的应用程序开发过程变得简单、高效。Delta OS由内核DeltaCORE、文件系统DeltaFILE和网络协议DeltaNET组成,如图1.14所示。
图1.14 Delta OS组成结构图
11. Linux
Linux是一套以UNIX为基础发展而成的操作系统。自1991年诞生以来,Linux在很多方面赶上甚至超过了很多商用的UNIX系统。它实现了真正的多任务、多用户环境。Linux对硬件要求很低,可支持多种芯片,很多高手愿意在Linux上开发程序,随时对Linux的开放内核进行升级和修补。
目前,市面上有很多商业性嵌入式系统都在努力为自身争取嵌入式市场的份额。但是,这些专用操作系统均属于商业化产品,价格昂贵;而且,由于它们各自的源代码不公开,使得每个系统上的应用软件与其他系统都无法兼容。此外,由于这种封闭性还导致了商业嵌入式系统在对各种设备的支持方面存在很大的问题,使得对它们的软件移植变得很困难。在嵌入式这个IT产业的新的关键领域,Linux操作系统适时地出现在国内外各嵌入式厂商面前,由于Linux自身诸多优势,吸引了许多开发商的目光,成为嵌入式操作系统的新宠,参见图1.15。它的出现无疑为发展嵌入式操作系统事业提供了一个极有吸引力的机会。
图1.15 嵌入式操作系统的市场份额
1.3.5 嵌入式操作系统的选择
由于嵌入式操作系统的空前发展,每个需要嵌入式操作系统的产品都面临操作系统选择的问题,这里给出一些简单的选择原则。
占用内存的大小(footprint)
性能(performance)
软件模块和设备驱动(software components and device drivers)
调试工具(debugging tools):非源码级调试工具
标准的兼容性(standards compatibility),如POSIX
技术支持(technical support)
源码还是目标码(source vs object code)
许可证(licensing)
信誉(reputation)