嵌入式作业系统横向解析
近年来,资讯家电、智慧型手机以及各种掌上型多媒体装置的产品成为台湾产业最为风行的潮流,似乎若不在电子产品中加入越来越引人的人机介面以及强大的功能,便无法跟其他竞争厂商一较高下。当然,除了以上所提到的大型产品以外,有更多的嵌入式应用隐身在不为人知的角落,从小到电子手錶、电子体温计、翻译机等,到大如冷气机、电冰箱、电视机,甚至是路上红绿灯的控制器、战斗机中的飞控系统、自动导航装置、汽车中控制燃油、行车雷达、ABS等的微电脑系统,到医院中的医疗器材、工厂中的自动机械等,可以说就算我们没有特地去注意,但是嵌入式系统已经环绕在我们的身边,进而成为我们日常生活中的一部分,已然与我们形成生命的共同体。
■嵌入式作业系统概论
有硬体就必定要有软体来搭配,在嵌入式系统方面,软体又往往主宰著硬体的功能,甚至是市场销售成败。以目前来说,由于嵌入式系统在开发方案上已经非常成熟,相较于过去,从无到有开发出一套强大的硬体方案,只需要付出相当合宜的成本,便可有现成的硬体方案可以套用,不过在软体方面,不同的硬体架构与适用范围考量,就必须谨慎评估采用何种软体解决方案。
就搭配嵌入式硬体的作业系统来看,在针对低阶或功能侷限性较大的硬体产品方面,有最被广泛使用的的RTOS(Real Time Operating System),到架构逐渐向PC类通用型作业系统看齐,或是直接从桌上型作业系统精简而来的嵌入式作业系统两大类,如果以产品种类区分的话,则可分为固定功能产品、可扩充功能式产品,以及使用者可自行扩充功能的类pc产品。而在嵌入式系统核心架构部份,基本上皆可分为Boot Loader、Kernel、Root File System以及Application应用程式部份,由于嵌入式作业系统多半应用在资源有限的系统上,因此核心部份会格外精简,除保留关键的三大部份以外,在应用程式部份则是让开发厂商自行搭配。
要如何在有限的资源下以良好的效能表现达到产品所设定的应用目标,就必须针对产品本身的特性去选择所要搭配的作业系统,以及决定最终功能的应用软体,因此我们这次就从各种不同特性的嵌入式作业系统去作统整性的介绍。
■针对特定功能产品的嵌入式RTOS作业系统
这类产品的由来已久,早从1980年代就已经蓬勃发展,从现实生活中可以广泛看到的电子产品,甚至到探索火星的智慧型机器人,都有这些嵌入式作业系统的影子存在。这类型嵌入式作业系统的开路先锋,大多被称为RTOS(Real Time Operating System),它是依照排序执行、管理系统资源,以及为应用程式提供统一的基础开发介面。这类作业系统基本上是由不同的的模组所构成,从档案系统、网路协定堆叠以及应用各层、装置驱动程式等针对不同需求所搭配而成,在针对不同的嵌入式平台开发上,可以视需求采用或捨弃某些模组,而达到节省储存空间,或是达到特定功能的表现。在最精简的应用上,甚至可以达到10K左右的小容量表现。
由于这类嵌入式作业系统要求必须在一定时间内回应应用程式的呼叫,不只对于时序的控制,在稳定性的考量上,也是十分严格。不过这并不是故意找麻烦,而是这类嵌入式作业系统的应用范围通常都是集中在具有关键性应用的产品中,比如说国防、医疗、航太以及工控等等,都是不容有半分差错的。这类嵌入式作业系统较出名的有WindRiver的VxWorks、QNX Software的QNX作业系统以及Acclerated Technology的Nucleus Plus等,而目前最火热的Linux免费作业系统也在这方面著墨不少,不过由于其定位较特殊,稍候会针对Linux的嵌入式应用来作介绍。
■VxWorks
这是一套类似UNIX的即时作业系统,采用先佔式多工的排程设计,以及可快速反应的中断控制,并可处理大规模多重交叠的通讯应用以及同步处理。至于在档案系统方面,由于WindRiver将原先被广泛应用在采用摩托罗拉68000家族处理器的嵌入式系统的pSOS作业系统併购,因此VxWork也可以支援pSOS的系统呼叫。
VxWorks内建具有符合POSIX规范的记忆体管理,以及多处理器控制程序,并且具有简明易懂的使用者介面,在核心方面,甚至可以微缩到8KB的大小。在应用开发上,也具备了原始码等级的除错能力以及效能评估方式,因此对于程式开发者来说,算是非常实用的功能。
VxWorks目前在市场上仍佔有一席之地,过去也有许多国际大厂采用其作业系统来开发专属的产品,举例来说,诸如柯达公司与卡西欧公司的数位相机,过去大多采用此作业系统的特製化版本,而建兴公司的DVD录影机也有采用过VxWorks,除此之外,NEC、Linksys、西门子等公司,也都有采用过VxWorks。虽然目前Linux盛行,抢去了VxWorks不少锋头,不过在许多关键应用方面,仍是VxWorks一枝独秀,比如说,美国波音公司就在最新的787客机中采用此作业系统,在外太空探索方面,VxWorks也是美国太空总署NASA的最爱,从上世纪末以及两年前的两次火星探险中,四具机器人都采用此作业系统,而2005年的彗星撞击计画,更是少不了VxWorks的鼎力相助。
不过WindRiver公司并没有死守在VxWorks这块领域中,相对的,近年来也积极朝向整合式开发套件、ICE除错工具、Run-Time环境、处理器间的通讯协定、中介软体等领域发展,而作业系统也不限定于VxWorks,而是可以选择嵌入式Linus替代,事实上,WindRiver除了进行大量原始码的开放以外,也推出了包含自有技术的商用Linux,透过自有技术进行多项功能的整合与最佳化,提供包含消费性电子以及网路通讯领域等应用设备开发商选择,协助厂商缩短开发流程以及开发成本。

▲VxWorks的系统架构图。(资料来源:WindRiver)
■QNX
由QNX软体公司所开发的QNX作业系统,也是一套类UNIX的嵌入式作业系统,跟VxWorks同样的,QNX也是一套符合POSIX规范的作业系统。
与VxWorks同样发跡于1980年代的QNX,其特殊之处,在于其并非采用传统的高阶硬体虚拟层方式设计,而是以非常细碎的tasks形式来执行,由许多的微核心为基础组成完整的OS服务,因此QNX的硬体设计者可以自由的选择载入执行或不载入某些特定的服务,而不用去变更QNX的核心程式部份。因此基于QNX的嵌入式作业系统可以做到非常小的程度,而且依然可以具有相当高的效率与完整的功能表现。
QNX作业系统核心仅包含了CPU任务排程、进程间通讯、中断重导向以及定时器等部份,而除此之外包含驱动程式、档案系统堆叠协议以及使用者应用程式的所有程式都是属于在使用者阶段执行。QNX作业系统有个相当特殊的Proc阶段,专门负责程式process的建立,以及记忆体管理等交集在系统微核心中的组件。基本上,QNX所有的组件都能透过消息传递这个函式来进行沟通,而具有良好定义的通讯机制,也能保障所有的组件都有完全独立且被保护的储存及执行空间。因此有问题的应用程式不会影响到其他组件的稳定性,发生问题的程式将会被自动终止并重新啟动。
与传统的作业系统架构相较起来,微核心架构可以让嵌入式系统获得更为快速的平均回覆时间(MTTR),当硬体驱动程式失效,QNX可以在数毫秒之内,就对该驱动程式进行终止、回收资源并重新啟动的步骤,让嵌入式设备可接近无停摆时间表现。
不过微核心RTOS的架构除了优点以外,由于其process间的讯息传递功能将会佔用记忆体频宽,影响到校能表现,因此在实际应用上,就必须采用特殊的最佳化手段,以避免掉讯息传递功能所带来的性能耗损。
虽然QNX整间公司在2004年出售给Haman International Industries,但QNX作业系统的发展脚步依旧没有停止,在国外,除了与各家国际汽车大厂合作,成为车用电子的主力作业系统以外,也获得相当多的航空公司与重要军事单位采用。而在2005年底,QNX也与国内几家包含联电、Zinwell等公司进行了合作,研华、控创等工业电脑厂商也都有针对这方面在发展。

▲基于AMD硬体的QNX平台架构图。 (资料来源:AMD)
■Nucleus Plus
这款嵌入式作业系统主要特徵就是轻薄短小,其架构上的延展性,可以让Nucleus RTOS所佔的储存空间压缩到仅有13K左右,而且Nucleus Plus是一款不需授权费的作业系统,并且提供了原始码。
Nucleus Plus本身只是Acclerated Technology公司完整解决方案里面的其中一环,这个RTOS本身架构属于先佔式多工设计,有超过95%的原始码是用标准的ANSI C语言所编写,因此可以非常有效率的移植到各种不同的平台。Nucleus Plus在CISC架构处理器中,核心部份大约佔去20KB左右的储存空间,而在RISC处理器上则是40KB左右,核心资料结构仅佔约1.5KB,由于其即时回应、先佔式多工、以及多process并行,并且开放原始码等特性,在国防、工控、航太工业、铁路、网路、POS、自动化控制以及资讯家电等领域广泛受到应用。
就如同QNX一般,Nucleus Plus也可以根据目标产品的需求,来自行剪裁所需要的系统功能,达到精简体积的目的。而配合相对应的编译器(Borland c/c++、Microsoft c/c++)以及动态连结程式库和各种底层驱动程式,在开发上拥有非常相当大的便利性。诸如飞思卡尔(Freescale)、罗技(Logitech)公司、美国NEC、SK Telecom等公司,都有采用Nucleus Plus嵌入式作业系统作为开发产品使用。
而在针对各种不同的嵌入式应用,Nucleus Plus也提供了相当多的模组可供运用,此外,在针对开发方面的需求,也推出EDGE工具套件。EDGE套件是以Eclipse平台为基础的一个整合外掛程式、整合开发环境、编译器、除错器以及系统执行统计工具等,从产品概念构思,到整个最终设计布署的工作都能一气呵成。整个Nucleus Plus的套件就称为Nucleus RTOS,虽然不需要版税,不过初始授权价为12500美金,而开发套件EDGE则是每个seat(基座)3000美金。
■通用型嵌入式作业系统
这个分类相信大家都耳熟能详,从各家手机的广泛采用的Symbian、种类繁多的嵌入式Linux以及逐渐没落的Palm,和气势逐渐壮大的Windows CE家族,都是属于这个分类。
由于此类嵌入式作业系统在执行效率以及回应速度并没有如RTOS嵌入式作业系统要求那般高,应用程式开发的严谨度也就没有那么严格,因此在此类嵌入式产品上,往往可以看到以硬体架构来补足作业系统本身不足的状况,也就是说,采用此类嵌入式系统的产品,往往必须以更高级的架构来弥补因为OS本身的复杂度所带来的效能减损。
这要归咎于几点原因,首先,就是因为多媒体应用开始盛行,为了能够即时处理复杂的影音编解码,在架构上不是采用高时脉的处理器,便是内建DSP,甚至内建硬体解码电路。而日渐复杂的应用,从单纯记事与行程管理,到地图导航、语音处理以及IP通讯功能的加入,应用层越来越庞大,软体体积也如同PC平台般迅速的飞涨,连带造成储存空间的吃紧,另一个造成储存空间吃紧的原因,就是为了使用者储存更多的多媒体档案的需求而来。
幸运的是,目前的储存媒体容量也不断的往上提昇,价格则是不断往下探,刚好也助长了此类行动装置的发展,使用者对效能的需求转而刺激半导体厂商研发出更强的晶片,研发商也乐得加快这类产品的世代更新频率。以下介绍的是目前流行的几款通用型嵌入式作业系统:

▲智慧型行动装置嵌入式系统架构图。(资料来源:微软)
■Symbian
这款作业系统的起源也可以回溯到1980年代,由David Potter所成立的Psion公司,其所开发的EPOC作业系统可以说是Symbian作业系统的原型,而到了1998年,由Ericsson、NOKIA、Motorola和Psion合组了Symbian公司,也因此开始了Symbian作业系统称霸行动通讯的征途。
Symbian作业系统最大的优点,就是其记忆体保护功能,在Symbian C++开发中的惯用语法,在描述语言以及堆叠清除功能这两方面,能够十分有效的减少记忆体的使用量以及记忆体漏出,相似的技术也能有助于增加储存媒体的空间使用效率。这些应用在Symbian程式开发中的惯用语法,被称为主动式物件(active objects),善用这些程式设计方式,除了有助于改善执行与储存效率以外,也能增长手持式装置的续航时间。
由于Symbian规范了相当严谨的程式语法与开发规则,因此对于程式开发者而言,是个相当大的学习障壁,此一特点就有如双刃剑般,用的好,可以大大增进程式执行与设备的效率,若是开发者无法习惯,那反而会拖慢了产品开发的流程。
不过由于Symbian也支援Java、OPL、VB、Perl等程式开发工具,配合JavaME以及各种自订Java函式来使用,虽然效能不若原生Symbian C++程式语言般突出,但也算是在开发简易度与开发时程掌控中可以达到的平衡点。
Symbian被广泛应用在NOKIA、Fujitsu、Mitsubishi、Sony Ericccon、Panasonic、Sharp以及日本NTT DoCoMo的行动通讯装置中,以目前来说,算是市场能见度最高的嵌入式作业系统,不过其应用集中在行动通讯装置,PDA功能算是近两年来才逐渐发展成熟。在2006年的发展上,除了加入Bluetooth 2.0的支援以外,可远端操控行动装置的OMADM规范让行动通讯装置的应用更为广泛。而甫于7月12日发表的Symbian 9.3版,则是加入了ARM架构处理器的支援及WiFi的原生支援,以及号称3.5G的HSDPA高速传输。
Symbian拥有非常大的架构弹性,每家厂商都可以利用自行设计的Symbian模组来设计出与眾不同的行动装置,对于厂商来说,这样的作法可以让不同厂商的风格更为凸显,避免了因为可变动部份太小,使得产品的同质性太高,丧失了对消费者的吸引力,虽然在开发上得难度较高,但是尊重厂商独特个性这点,让Symbian成为了目前最为盛行的手持行动装置作业系统。
▲采用Symbian S60 3.0作业系统的NOKIA N93。(资料来源:NOKIA)
■Windows CE

▲微软在Windows CE上的开发时程表。(资料来源:微软)
微软目前在手持式装置中,主要是打多媒体处理能力,以及与自家Office套件的连动相容功能,并可以与自己的桌上型视窗作业系统达到非常完整的资料同步功能。Windows CE算是针对个人电脑以外的产品所开发的作业系统家族统称,使用在PDA或智慧型手机上的就称为Windows Mobile,要使用这个名称必须要通过微软认证,而应用在其他用途,如机上盒、VoIP电话等则维持Windows CE的名称,不需通过认证,在授权费用方面也有所不同。基本上,不同名称只是在于啟用元件的不同而已,基本核心都完全一样。
Windows CE目前最新版本是2005年所发表的5.0版,在设计架构上,基本上也是一款RTOS,而根据其预设的中断延迟,Windows CE可以决定出256个优先权等级,并且使用优先权继承来处理优先权倒转的问题。在核心佔用储存空间方面,依照核心元件的选用,最小约可达315KB的程度。
相较起前一版的Windows CE 4.2版,Windows CE 5.0在程式模组方面分的更细,也更加强了原本共用元件的管理问题,让OEM厂商在开发上更为简易。除此之外,在硬体支援的强化、安全性的加强以及自动测试工具的内建,也都是针对开发功能上的强化。
5.0版的多媒体功能是一大特点,除了沿用旧版的DirectX技术以外,也加入了以元件物件模型(COM)为程式开发模型的Direct3D Mobile,让软体开发商可以开发在Windows CE上的3D应用程式。除此之外,网路元件的大翻新也是重点之一,在5.0版中加入了诸如VoIP等应用协定,让装置的开发与应用更为完整。
另一个更新重点则是IMGFS档案系统,该功能可以将作业系统切割成核心与作业系统本体部份,核心在一开机就会载入到SDRAM中,而硬体驱动程式或应用程式模组则只会再有需要的时候才会载入到SDRAM,作业系统则是将映像档建立在FLASH记忆体中,并且在有储存需求时,也可直接写入到FLASH,直接将FLASH当作储存装置使用,SDRAM则专心进行程式执行工作,因此5.0版对SDRAM容量的需求也大为降低。

▲Windows CE 6.0 Beta主画面。(资料来源:微软)
至于在微软已经发布的新版Windows CE 6.0 BETA版中,在核心部份有更革命性的更新,而且也越来越像桌上型视窗系统。首先,将32个process共用4GB的空间,更改为每个process独自定址2GB的空间,而且最高同时可有32,000个process,除了在多工性能有所加强以外,也可以避免单一应用程式不稳定而导致整个作业系统垮掉。
其次是将系统装置以及驱动程式核心收编到核心模式,这么一来,系统在处理时,即可避免掉大部分的后台转换工作,并且进一步加强系统的安全性。而为了解除5.0版时代唯读记忆体内部DLL佔用掉太多虚拟空间的状况,让使用者可存取空间加大到2GB,不过由于可静态映射的记忆体依然限制在512MB,除非这个设计到正式版又有变更,不然届时基于Windows CE 6.0 的装置的SDRAM容量应该不会突破512MB。
相较起竞争对手,Windows CE 6.0的进展幅度相当大,不过在推出一年多之后才有的改版,基本上有这样的进步幅度也算是合理。如果能依照规划,改进目前Windows CE 5.0仍有的不够稳定,以及效率不彰的问题,那么Windows CE便很有可能大幅扩充在手持式装置作业系统的版图,并进而对目前的龙头Symbian产生威胁。
■Embedded Linux
以开放原始码为诉求的嵌入式Linux在各种应用中迅速崛起,不论是作为RTOS,或是作为行动装置的通用嵌入式作业系统,都有著一定的支持族群。先老调重弹一下,由于Embedded Linux免费、原始码开放,支援软体也多,应用到嵌入式系统中,也代表著可以进一步降低开发成本以及开发时间。
SONY最新的一款无线多媒体通讯装置,即是采用嵌入式Linux架构。(资料来源:sony)
不过嵌入式Linux有一个弱点,那就是其核心架构并没有重新设计过,而是直接从桌上型Linux精简而来,相对于其他已经特化为嵌入式专用的微核心作业系统,虽然同样具有先佔式多工的能力,但是在即时反应性能上会有较弱的缺点。不过在开发上的特性,却足以弥补这项弱点。针对Linux应用在进行程式开发的时候,我们可以很容易的从开放原始码社群取得各种资讯与技术,不仅可以有效缩短盲目摸索的时间,也能够加快产品从概念到开发再到上市的时程。
虽然即时反应能力较弱,但是嵌入式Linux有几个非常大的优势,首先,由于Linux内建的绘图函式非常完整,从视窗图形加速、多媒体应用到3D加速处理,都有现成的完整函式库可供参考使用,而且完全免费,对于需要视觉处理与呈现的嵌入式应用而言,是非常方便且有效率的解决方案。其次,Intel、HP、Intel、IBM 和 NEC等20餘家公司成立的Open Source Development Labs、消费者电子Linux论坛(Consumer Electronics Linux Forum),以及由法国电信公司主导的Linux电话软体论坛(Linux Phone Software Forum)等国际组织的成立,有助于制定标准化的嵌入式Linux规格,解决版本纷杂以及不同软硬体之间相容性的问题。
以目前的市场动态来看,Linux的嵌入式应用,将会著重在电信、数据通讯以及消费性电子等三方面。而以产品面来看,市面上已经有相当多的嵌入式Linux成品与应用,比如说日本Sharp公司便持续的推出新款的Linux PDA装置,台湾Mitac也有推出过Linux PDA,而在城市里随处可见的电子资讯导览,也有很大一部份采用了嵌入式Linux的系统,在这方面的提供厂商则有Gateway、LG等,除此之外,诸如Set top box之类的产品,以及路由器、NAS等网通/储存产品,都已经大量采用嵌入式Linux。
目前提供嵌入式Linux解决方案的厂商,以MontaVista为首,佔据了市场上大部分的Linux嵌入式应用,剩下的才是由Sysgo AG、Red Hat以及LynuxWorks等诸多厂商瓜分。而从竞争厂商数量也可以看出,嵌入式Linux产业活跃的程度。
根据VDC组织预估,嵌入式Linux将可望在2007年突破美金2亿元的市场规模。不过市场规模的成长都是相对的,在市场饱满之前,还有同步成长的空间,等到市场开始饱和之后,便会开始出现此消彼长的现象,由此看来,应用范畴相对较大的嵌入式Linux,其发展机会也要比竞争对手大些。
本文来源:DigiTimes 作者:林宗辉
关于嵌入式 的资讯
热点资讯(一周点击率)
最受工程师关注文章
热评博文
快乐大本营
无线时代来临,移动产业生态系统将发生一些根本变化。今日头条推荐“芯片是嵌入式4G技术的关键 产业生态系统将发生变化”。
想了解嵌入式开发工具的市场情况吗?先来体验下我们的在线调查吧!填写调查问卷。

