嵌入式作業系統橫向解析
(林宗輝∕DigiTimes.com) 2006/08/28
前言:近年來,資訊家電、智慧型手機以及各種掌上型多媒體裝置的產品成為台灣產業最為風行的潮流,似乎若不在電子產品中加入越來越引人的人機介面以及強大的功能,便無法跟其他競爭廠商一較高下。當然,除了以上所提到的大型產品以外,有更多的嵌入式應用隱身在不為人知的角落,從小到電子手錶、電子體溫計、翻譯機等,到大如冷氣機、電冰箱、電視機,甚至是路上紅綠燈的控制器、戰鬥機中的飛控系統、自動導航裝置、汽車中控制燃油、行車雷達、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
微軟目前在手持式裝置中,主要是打多媒體處理能力,以及與自家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版中,在核心部份有更革命性的更新,而且也越來越像桌上型視窗系統。首先,將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產生威脅。
圖說:微軟在Windows CE上的開發時程表。(微軟)
圖說:Windows CE 6.0 Beta主畫面。(微軟)
?Embedded Linux
以開放原始碼為訴求的嵌入式Linux在各種應用中迅速崛起,不論是作為RTOS,或是作為行動裝置的通用嵌入式作業系統,都有著一定的支持族群。先老調重彈一下,由於Embedded Linux免費、原始碼開放,支援軟體也多,應用到嵌入式系統中,也代表著可以進一步降低開發成本以及開發時間。
不過嵌入式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,其發展機會也要比競爭對手大些。
圖說:SONY最新的一款無線多媒體通訊裝置,即是採用嵌入式Linux架構。(sony)