显然,嵌入式系统的应用环境与其它类型的计算机系统有着明显的不同,随之也带来了对相应操作系统的不同要求,从而构成了现代操作系统的一个新的类别:嵌入式操作系统。嵌入式操作系统是与应用环境密切相关的。
从应用范围划分,嵌入式操作系统大致可以分为通用型的嵌入式操作系统和专用型的嵌入式操作系统。比较典型的通用型商业嵌入式操作系统有WindowsCE、VxWorks和从Linux发展出来的嵌入式Linux;专用型嵌入式操作系统有专门用于掌上计算机的PalmOS、主要用于行动电话的Symbian等等。
根据操作系统的实时性能特性划分,嵌入式操作系统还可以分为实时嵌入式操作系统和一般嵌入式操作系统。实际上,由于嵌入式环境的需要,即使一般的嵌入式操作系统,也具有一定的实时功能。对于应用在军事武器、航空航天、交通运输以及工业控制等等特殊领域的嵌入式操作系统,要求其具有硬实时(HardRealTime)功能。而一般应用在移动电话、掌上计算机和日常娱乐的嵌入式操作系统,至少也应具有处理语音、视讯影像等流媒体的软实时(SoftRealTime)功能。
从原理上看,嵌入式操作系统仍旧是一种操作系统,因此,它具有操作系统的基本功能,包括程序管理与处理器排程、储存管理、设备管理和中断处理等等。但是,由于嵌入式操作系统的硬件平台和应用环境与一般操作系统有很大的不同,所以嵌入式操作系统又有不同于一般操作系统的特点。一般而言,嵌入式系统的硬件平台有如下特点:
1、系统资源有限:微处理器(微控制器)指令较短,多数微处理器(微控制器)为8位、16位指令,目前在向32位发展;嵌入式系统储存空间有限,很多系统的储存空间在1兆位之内,有的没有外部内存;电能供应有限,一些嵌入式系统由于环境的原因只能采用电池供电。
2、外接设备多变:系统的输入输出设备以及被控设备千变万化,其种类和复杂性超过一般操作系统的外接设备;比如输入设备可能是键盘鼠标、触控板、笔式设备,也可能是速度检测信号或雷达信号等等。
从应用面看,嵌入式操作系统有如下特点:
1、占用系统资源要少:不少嵌入式系统本身资源有限。CPU运算速度不快、储存空间不大,不可能允许操作系统占据一大部分的资源。
2、实时响应要求严格:特别是在关键领域应用的嵌入式操作系统,比如从事飞机碰撞检测处理的系统,起着避免机毁人亡的关键作用,必须达到系统规定的硬实时规格。
3、对操作系统可靠性要求高:在关键领域应用的嵌入式操作系统不允许发生任何影响系统可靠性的故障,重新启动系统就可能意味着重大事故。
4、具有可配置性:由于嵌入式操作系统必须能够应用在多种多样的硬件环境,因此嵌入式操作系统要能够针对硬件系统的变化进行配置,从而满
足不同应用的要求。
从原理上看,嵌入式操作系统的内部结构与其它操作系统的差别不大,但是实际结构和功能与其它操作系统有着较大的不同。
以下列出几项嵌入式操作系统的特色:
1、小型化:在保证其应用功能的前提下,尽可能减小系统对资源的占用,由此作为出发点设计嵌入式操作系统的kernel结构和kernel的基本功能,如QNX的kernel仅提供程序排程、程序间通信、底层网络通信和中断处理等最基本的功能。
2、可定制性:嵌入式操作系统必须在能够提供可配置或可自订的kernel功能和其它功能。比如,在处理器排程或者任务排程方面,能够提供除round-robin(RR)排程之外的first-come-first-served(FCFS)排程等多种排程策略的选择。在储存管理方面,有的嵌入式操作系统不仅提供对ROM的管理,还提供对RAM内存和闪存的管理。在嵌入式操作系统中,根据应用需求的不同,有的系统提供各种档案系统供使用者选择,有的系统不提供档案系统,以减少系统的负荷。
3、实时性:实时的含义,不仅表现在系统完成了正确的任务,而且必须在既定的时间区间内完成该任务。针对不同应用的要求,嵌入式操作系统应有硬实时、软实时、非实时等不同实时级别的功能。对于有硬实时要求的嵌入式操作系统,其处理器排程、中断响应等等有关机制必须符合严格的时间要求,保证在规定时限之内完成对关键任务的处理。
4、高可靠性:嵌入式操作系统的结构,内部的系统组件或模块必须达到应用程序所必须的可靠性。对于关键应用程序,嵌入式操作系统还应提供容错和防故障等提高系统可靠性的功能措施。
5、可移植性:考虑到嵌入式应用产品具有产品更新快的特点,嵌入式操作系统必须能够支持多种国际主流微处理器等硬件平台。为了提高系统的可移植性,嵌入式操作系统通常采用HAL(Hardwareabstractionlayer)和BSP(BoardSupportPackage)的底层结构设计。HAL提供了与设备无关的特性,它遮盖了不同平台硬件的差异,向操作系统的上层提供了一套统一的接口。HAL隐藏各种与硬件有关的细节,保证了整个系统的可移植性。而一般由硬件厂家提供的,按照既定的程序规范完成BSP,保证了嵌入式操作系统可以在新推出的微处理器硬件平台上运行。微软的WindowsCE系列嵌入式操作系统,WindRiver的VxWorks系列嵌入式操作系统,都是采用HAL和BSP底层结构设计的例子。目前国际主要的嵌入式操作系统可以支持的微处理器已经超过数十种,如VxWorks至少支持x86,68xxx,68HCxx,ColdFire,DragenBall,MIPS,SPARClite,ARM,StrongARM,PowerPC,NECV25,i960,TIDSP等微处理器。为了适合各种应用的需要,嵌入式操作系统在kernel之上提供了多种应用功能,如图形接口,网络通信与TCP/IP协议功能,多媒体处理功能以及其它各种功能。这些功能一般也采用可配置模块的形式,由系统开发者根据需要在系统生成阶段选定。
现代嵌入式操作系统与嵌入式操作系统的定制或配置工具联系密切,构成了嵌入式操作系统整合开发环境。在整合开发环境通常提供有程序代码编辑器、编译器和连结器、kernel功能配置与系统侦错器以及系统仿真器等等。程序代码编辑器提供在主机上对系统程序代码的程序编辑功能;编译器和连结器通常提供AnsiC、C++和其它程序设计语言编译和连结功能;kernel功能配置与系统侦错器提供程序开发者对kernel功能配置的功能以及各种侦错功能,如图形和命令行的侦错方式,各种断点设置、单步执行、异常处理,内存、寄存器、变量修改和反组译功能等等;系统仿真器则提供程序开发者一个仿真侦错的工具,以便使系统能够在接近真实硬件的环境下侦错和检验。