2.4 主要的嵌入式操作系統(tǒng)
迄今為止,世界上到底有多少種嵌入式操作系統(tǒng)呢?有人統(tǒng)計是200多種,有人統(tǒng)計是400多種,還有人統(tǒng)計是500多種。實際上這個問題已經(jīng)不重要了。這幾個數(shù)字共同說明了一個問題,那就是嵌入式操作系統(tǒng)的數(shù)目很多,已經(jīng)多到了不太好統(tǒng)計的地步。但是在眾多的嵌入式操作系統(tǒng)中,有一些經(jīng)常使用,而另一些卻很少用到。所以如果有人問常用的嵌入式操作系統(tǒng)有多少種,可以粗略地回答,最常用的嵌入式操作系統(tǒng)不過10余種,比較常用的也不超過100種。當然這個數(shù)字也遠比通用操作系統(tǒng)的種類多很多。本節(jié)中將介紹一些主要的嵌入式操作系統(tǒng)。
2.4.1 一些有典型特色的嵌入式操作系統(tǒng)
不同的嵌入式操作系統(tǒng)在功能和應用領域等方面有比較大的差異,每種系統(tǒng)都有自己的特點。下面從幾個不同的角度出發(fā),介紹一些比較有代表性的嵌入式操作系統(tǒng)。
1. 最早的嵌入式操作系統(tǒng)
VRTX和pSOS是早期嵌入式操作系統(tǒng)的典型代表。VRTX的研發(fā)者是Microtec Research公司,一般認為它是世界上第一個商用嵌入式操作系統(tǒng)。pSOS的開發(fā)者是Integrated Systems公司。它也是最早問世的嵌入式操作系統(tǒng)之一,同時也是最早進入中國市場的嵌入式操作系統(tǒng)。Integrated Systems公司在2000年2月被WindRiver Systems公司兼并,所以pSOS的所有權現(xiàn)在屬于WindRiver公司。
2. 最小的嵌入式操作系統(tǒng)
就代碼的精簡程度而言OSE是一個典型的代表。該操作系統(tǒng)的開發(fā)者是美國ENEA公司。OSE的代碼大約只有5KB,被認為是最小的嵌入式操作系統(tǒng)之一。除此之外,一些專門為無線傳感網(wǎng)開發(fā)的嵌入式操作系統(tǒng)也非常小。
3. 典型微內(nèi)核結構的嵌入式操作系統(tǒng)
QNX是微內(nèi)核結構嵌入式操作系統(tǒng)的一個典型代表。該操作系統(tǒng)的開發(fā)者是加拿大的QNX Software Systems公司。QNX的內(nèi)核非常小巧。例如,QNX4.x的內(nèi)核大約只有1.2KB。
4. 開源的嵌入式操作系統(tǒng)
有相當多的嵌入式操作系統(tǒng)都對外開放源代碼。嵌入式Linux、μC/OS、eCOS、Nucleus、RTEMS是其中的典型代表。
嵌入式Linux是經(jīng)裁減后,可執(zhí)行代碼只有幾十千字節(jié)或幾百千字節(jié)的Linux系統(tǒng)。嵌入式Linux的應用日益廣泛,是一種很有前途的嵌入式操作系統(tǒng)。
μC/OS是一個結構精煉、應用范圍很廣的嵌入式操作系統(tǒng)。它可以在從8位到64位的40多種不同架構上的微處理器上運行。
eCOS(embedded Configuration Operating System)的最初開發(fā)者是美國的Cygnus Solutions公司。它的特點是代碼精煉(內(nèi)核可精簡至約10KB)、結構模塊化、內(nèi)核可配置性強。
Nucleus的開發(fā)者是Accelerated Technology公司。它雖然可以向用戶提供源代碼,但要收取一定的費用。
RTEMS(Real Time Executive for Multiprocessor Systems)是美國軍方開發(fā)的一個實時嵌入式操作系統(tǒng)。該操作系統(tǒng)在航空、航天和軍工領域使用較多。
開源嵌入式操作系統(tǒng)多數(shù)使用GPL許可證對外發(fā)布,但也有使用其他開源軟件許可證的情況。開源軟件的許可證主要有GPL許可證、MPL許可證、Apache許可證和BSD許可證等幾種。這些許可證向開源軟件的使用者賦予了不同的權利。下面簡要介紹。
GPL(General Public License)的意思是GNU通用公共許可證。GNU通用公共許可證與GNU計劃有密切的歷史淵源。GNU計劃又稱革奴計劃,是一項在1983年9月27日開始實施的計劃。該計劃的目標是開發(fā)一個完全自由的操作系統(tǒng),包括可以自由使用、復制和修改。為此,GNU計劃規(guī)定,在計劃范圍內(nèi)開發(fā)的所有軟件都要遵守一項授予所有權利給其他任何人的協(xié)議。由此就產(chǎn)生了GNU通用公共許可證。按照GPL許可證的要求,許可證的被授權者如果如對軟件進行了修訂和擴充,那么修訂和擴充部分也必須同樣以GPL許可證進行發(fā)布,以便其他人自由使用、復制和修改這些內(nèi)容??梢钥闯觯珿PL許可證有著強烈的反版權性質(zhì)。1991年,Linux操作系統(tǒng)問世并采用GPL許可證發(fā)布后取得了巨大的成功,因此以后有很多的開源軟件都采用了GPL許可證進行發(fā)布。
MPL(Mozilla Public License)最初是1998年Netscape公司的Mozilla項目組用于發(fā)布其開源軟件的許可證。同樣作為開源軟件的許可證,GPL和MPL的條款雖然在許多地方很相似,但也有顯著的區(qū)別。最主要的區(qū)別是:如果許可證的被授權者對源代碼進行了修改,MPL雖然也要求對修改部分必須同樣以MPL進行發(fā)布,以保證其他人可以在MPL條款下共享這些修改的內(nèi)容,但MPL允許許可證的被授權者可以把自己開發(fā)的源代碼包裝在源代碼庫之中,并給源代碼庫加一個接口,除了接口程序的源代碼以MPL許可證對外發(fā)布外,源代碼庫中的源代碼就可以不再用MPL許可證對外發(fā)布了。這樣,就為利用開源軟件開發(fā)商用軟件留下了一條途徑。
Apache許可證是Apache軟件基金會發(fā)布自由軟件時使用的一種許可證。此外,許多非Apache基金會發(fā)布的軟件也在使用這種許可證。Apache許可證不是一個完全反版權的許可證。按照它的規(guī)定,許可證的被授權者如果如對軟件進行了修改和擴充,可以對修改和擴充部分做出保留版權的聲明。
BSD(Berkly Software Distribution)許可證最初是美國加州大學伯克利分校在發(fā)布其開源軟件時使用的許可證。BSD許可證的條款很寬松,許可證的被授權者享有很大的自由。
5. 國內(nèi)自主開發(fā)的嵌入式操作系統(tǒng)
國內(nèi)自主開發(fā)的嵌入式操作系統(tǒng)指包括操作系統(tǒng)內(nèi)核在內(nèi)的整個系統(tǒng)都是重新設計和開發(fā)的嵌入式操作系統(tǒng)。不包括在開源軟件基礎上進行定制、修改和擴充而形成的嵌入式操作系統(tǒng)。Hopen、DeltaOS、和欣是這一類嵌入式操作系統(tǒng)的典型代表。
Hopen的開發(fā)者是凱思昊鵬公司。它是一個嵌入式操作系統(tǒng)的大家族,Hopen雙內(nèi)核操作系統(tǒng)、Hopen-RT實時操作系統(tǒng)都是其中的成員。目前Hopen操作系統(tǒng)已經(jīng)在智能手機、數(shù)字電視、網(wǎng)絡計算機等產(chǎn)品上得到了很好的應用。截至2006年,僅在智能手機上就已安裝100余萬套。
DeltaOS的開發(fā)者是科銀京城公司。該嵌入式操作系統(tǒng)已經(jīng)在航空、航天等領域得到了成功應用。
和欣的英文名稱為Zyco。它是科泰世紀公司研發(fā)的一個采用組件技術的32位嵌入式操作系統(tǒng)。它的最大特點是采用了組件化編程模型,包括它本身在內(nèi)的模塊都為組件形態(tài)。
6. 用于智能手機的嵌入式操作系統(tǒng)
Symbian、Windows Mobile、Android、iPhoneOS、PalmOS是在智能手機領域中使用最廣泛的幾個嵌入式操作系統(tǒng)。它們共同占據(jù)了這一領域的大部分市場份額。
Symbian的前身是EPOC,其開發(fā)者是Psion公司。EPOC(Electronic Piece of Cheese)意為“使用電子產(chǎn)品時可以像吃乳酪一樣簡單”,這是該嵌入式操作系統(tǒng)在設計時所堅持的理念。1998年諾基亞、愛立信、摩托羅拉、三菱、Psion等公司聯(lián)手成立了專門研發(fā)智能手機的Symbi-an公司。該公司選用了EPOC作為操作系統(tǒng)平臺,并將其更名為Symbian。
Windows Mobile是微軟公司專門為移動終端設備開發(fā)的一個嵌入式操作系統(tǒng)。除Win-dows Mobile之外,微軟公司還有Windows CE、Windows NT Embedded、Windows XP Embedded等一些嵌入式操作系統(tǒng)產(chǎn)品。
Android是以做搜索引擎著名的Google公司開發(fā)的一個嵌入式操作系統(tǒng)。它的基礎是Linux內(nèi)核,屬于嵌入式Linux中的一種。
iPhoneOS是蘋果公司開發(fā)的一個嵌入式操作系統(tǒng)。它主要使用在蘋果公司的iTouch和iPhone產(chǎn)品上。iTouch是一款集媒體播放器和上網(wǎng)裝置為一體的電子產(chǎn)品。iPhone則在iTouch的基礎上進一步集成了移動電話功能。
PalmOS的開發(fā)者是Palm Computing公司。它主要用在PDA上,并曾經(jīng)在PDA上占有主導地位。
7. 用于汽車電子的嵌入式操作系統(tǒng)
在汽車電子領域,嵌入式系統(tǒng)經(jīng)常用于控制汽車發(fā)動機、ABS和安全氣囊。因此用于這一領域的嵌入式操作系統(tǒng)有很強的實時性,可靠性要求也相對很高。
OSEK/VDX是汽車電子領域的一個重要技術標準(OSEK是德語“用于汽車電子的、帶有接口的開放式系統(tǒng)”的縮寫,VDX是Vehicle Distributed eXecutive的縮寫)。其制定者是歐洲的一些汽車制造商。目前國際標準化組織已經(jīng)將其接納為國際標準(ISO 17356)。OSEK/VDX不僅與操作系統(tǒng)有關,它還涉及通信(COM)、網(wǎng)絡管理(NM)和實現(xiàn)語言(OIL)等方面的內(nèi)容。
在具體產(chǎn)品方面,已經(jīng)出現(xiàn)了一些遵循OSEK/VDX標準的嵌入式操作系統(tǒng)。例如,Metrowerks公司的OSEKturbo、WindRiver公司的OSEKworks、3SOFT公司的proOSEK、西曼自動化技術公司的PowerOSEK等。
8. 用于無線傳感網(wǎng)的嵌入式操作系統(tǒng)
無線傳感網(wǎng)中的網(wǎng)絡結點硬件資源極其有限,相對于其他的嵌入式系統(tǒng),它的存儲器更小,處理器的處理能力更弱。專門用于無線傳感網(wǎng)的嵌入式操作系統(tǒng)必須適應這一特點。如果把一般的嵌入式操作系統(tǒng)用在無線傳感網(wǎng)中是不可行的。
目前已經(jīng)出現(xiàn)了一些適用于微傳感器上的嵌入式操作系統(tǒng)。如TinyOS、Coniki、MANTIS、SOS、SenSpire等。它們的一個共同特點是,可以在資源極其受限的條件下運行。但這些操作系統(tǒng)的功能都比較有限,如多數(shù)都不能支持多線程(除MANTIS之外)。
2.4.2 VxWorks
VxWorks是WindRiver公司開發(fā)的一個實時嵌入式操作系統(tǒng)。它可以在ARM、PowerPC、SPARC、x86、MIPS等多種處理器上運行,是目前控制領域中應用最廣泛的嵌入式操作系統(tǒng)之一。VxWorks的一個顯著特點是它有很好的集成軟件開發(fā)環(huán)境,開發(fā)者可以使用界面友好、功能豐富的開發(fā)工具進行應用軟件的開發(fā)。
如圖2.44所示,VxWorks主要由與硬件無關的實時操作系統(tǒng)內(nèi)核(Wind)、輸入/輸出系統(tǒng)、文件系統(tǒng)、網(wǎng)絡系統(tǒng)、實用庫和與硬件相關的板級支持包等部分組成。
1. 實時操作系統(tǒng)內(nèi)核
VxWorks的內(nèi)核稱為Wind。Wind里面包含任務管理與調(diào)度(采用搶占式最高優(yōu)先級優(yōu)先調(diào)度算法)、任務通信、中斷管理、看門狗和內(nèi)存管理等功能。它提供了一個多任務環(huán)境,任何程序都可以作為單獨的任務運行,擁有自己的上下文和堆棧。任務之間通過任務通信功能進行同步,協(xié)調(diào)相互的行為。通過Wind任務管理功能可以建立任務、刪除任務、阻塞任務、喚醒任務、使任務睡眠或改變?nèi)蝿盏膬?yōu)先級。
Wind主要通過信號量進行任務間的同步和互斥。在Wind中有互斥信號量、二進制信號量、計數(shù)信號量和POSIX信號量等幾種類型的信號量。這些信號量既可以被應用在操作系統(tǒng)內(nèi)部,也可以被應用在VxWorks的應用程序中。除信號量之外,Wind還支持隊列、管道、事件和條件變量等任務通信功能。

圖2.44 VxWorks實時嵌入式操作系統(tǒng)的結構
2. 輸入/輸出系統(tǒng)
輸入/輸出系統(tǒng)的作用是實現(xiàn)對輸入/輸出設備的管理。VxWorks將所有的輸入/輸出設備都看成是文件,采用與文件操作一致的方法對輸入/輸出設備進行操作。管理輸入/輸出設備離不開設備驅動程序,設備驅動程序雖然是硬件相關軟件,但它們與輸入/輸出系統(tǒng)有很密切的關系,甚至可以認為是輸入/輸出系統(tǒng)的一部分。VxWorks提供的設備驅動程序包括:網(wǎng)絡驅動、RAMDISK驅動、SCSI驅動、鍵盤驅動、顯示驅動、磁盤驅動、串/并口驅動等。
3. 文件系統(tǒng)
VxWorks對磁盤、磁帶、閃存、CD-ROM等各種常用的存儲設備都支持一種適用的文件系統(tǒng)。它能夠支持的文件系統(tǒng)包括以下6種。
① DOSFS:一種與MS-DOS操作系統(tǒng)兼容的文件系統(tǒng)。
② RT11FS:一種與RT11操作系統(tǒng)兼容的文件系統(tǒng)。
③ RawFS:一種適用于磁盤設備的文件系統(tǒng)。
④ TapeFS:一種適用于磁帶設備的文件系統(tǒng)。
⑤ TrueFFS:一種適用于閃存的文件系統(tǒng)。
⑥ CDROMFS:一種適用于CD-ROM的文件系統(tǒng)。
4. 網(wǎng)絡系統(tǒng)
VxWorks的網(wǎng)絡系統(tǒng)實現(xiàn)完整的TCP/IP協(xié)議族,支持與BSD Socket兼容的網(wǎng)絡編程接口。除此之外,VxWorks還支持許多其他的網(wǎng)絡協(xié)議和功能。
5. 實用庫
實用庫擴展了VxWorks的系統(tǒng)調(diào)用,它向應用程序開發(fā)者提供中斷處理、看門狗、內(nèi)存分配、緩沖區(qū)管理、鏈表管理等方面的功能。
6. 板級支持包
板級支持包屏蔽了不同硬件的特征,向VxWorks硬件無關軟件提供一個統(tǒng)一的接口。它所包含的功能有硬件初始化、中斷的產(chǎn)生和處理、實時時鐘和定時器/計數(shù)器管理、內(nèi)存地址映射、內(nèi)存分配等。
2.4.3 嵌入式Linux
嵌入式Linux是經(jīng)過裁減后,可以被裝入到幾十千字節(jié)或幾百千字節(jié)的存儲器中的Linux系統(tǒng)。它的特點是不需要硬盤,也不需要鍵盤和鼠標等外部設備,并且可以適應于某種特定的硬件環(huán)境。
1. Linux的嵌入式化
將普通的Linux操作系統(tǒng)改造為嵌入式操作系統(tǒng)的時候需要遵循一個原則,同時有兩個重點工作。一個原則是在建立嵌入式Linux操作系統(tǒng)時,不應刻意去增強Linux操作系統(tǒng)的功能。恰恰相反,考慮到實際應用的單一性,往往要刪繁就簡。兩個重點工作是:一要設法提高Linux的實時處理能力;二要想辦法降低Linux的文件系統(tǒng)所占的存儲空間。
(1)提高實時處理能力的措施
影響Linux的實時處理能力的因素很多,最主要的是任務調(diào)度算法和內(nèi)存管理機制。因此,在采取提高實時處理能力的措施時應把重點放在這兩個方面。
Linux內(nèi)核一般采用“先來先服務”和“輪轉”兩種調(diào)度算法。這兩種算法對實時任務的實時性都沒有給予足夠的考慮。為提高嵌入式Linux的實時處理能力必須采用“先來先服務”和“輪轉”之外的調(diào)度算法,如采取搶占式最高優(yōu)先級優(yōu)先調(diào)度算法,保證總是選取優(yōu)先級最高的任務來運行。
采用虛擬存儲技術之外的內(nèi)存管理技術是提高Linux實時性能的另一個方法。Linux操作系統(tǒng)使用虛擬存儲技術的目的是為了增加可供任務使用的內(nèi)存,使得系統(tǒng)中可以同時運行更多的任務。但是,同時運行的任務越多,每個任務所能分配到的CPU時間片就越短。操作系統(tǒng)的理論證明:CPU控制權的切換越快,資源的使用效率就越低,而且存儲頁面的換入與換出也會使任務的執(zhí)行時間變得難以確定,所以去掉虛擬內(nèi)存管理機制最能改善Linux的實時性能。
(2)降低文件系統(tǒng)所占存儲空間的措施
Linux上的標準文件系統(tǒng)是EXT2。這個文件系統(tǒng)有功能強、性能優(yōu)、易擴充的特點,但結構比較繁瑣,文件系統(tǒng)本身所占用的空間過大。如果去掉EXT2文件系統(tǒng),采用專門為嵌入式系統(tǒng)設計的文件系統(tǒng),如CRAMFS、ROMFS、JFFS,會節(jié)省一定的存儲空間。

圖2.45 嵌入式Linux的結構
2. 嵌入式Linux的結構
嵌入式Linux沒有采用微內(nèi)核結構,它是一個單塊結構的嵌入式操作系統(tǒng)。如圖2.45所示,嵌入式Linux的內(nèi)核中一般有以下幾個部分:任務管理(包括任務通信)、內(nèi)存管理、中斷管理、文件管理。在最簡單的系統(tǒng)中,還可將文件管理部分去掉。
從圖2.45中可以看出,應用程序通過系統(tǒng)調(diào)用或者庫函數(shù)來訪問Linux內(nèi)核資源。內(nèi)核又可通過設備驅動程序來完成必要的工作。
3. 典型的嵌入式Linux
目前可供用戶選擇的嵌入式Linux操作系統(tǒng)已經(jīng)很多。這些系統(tǒng)分為收費型和免費型兩類。雖然嵌入式Linux系統(tǒng)是一種開源的自由軟件,不收取版權費,但用戶在使用某些嵌入式Linux時需要向提供商支付一定的服務費。
收費型的嵌入式Linux系統(tǒng)一般都針對某些嵌入式處理器做了專門的優(yōu)化設計,能支持多種半導體廠家的開發(fā)評估板和豐富的設備驅動程序,并提供技術支持和培訓服務。除了國內(nèi)的一些產(chǎn)品外,收費型嵌入式Linux系統(tǒng)的價格目前還很昂貴。根據(jù)配置和服務的不同,在幾千到幾萬美元之間。但收費型嵌入式Linux的開發(fā)工具相對于Windows CE和VxWork來說,在易用性和豐富性方面還有待提高和改進。
此外,還有一部分嵌入式Linux系統(tǒng)可以免費獲得。使用免費型嵌入式Linux,無法得到服務商的技術支持,所以對用戶有比較高的要求。
BlueCat Linux、Embedix、MontaVista Linux、μClinux、RT-Linux、XLinux、紅旗嵌入式Linux等一些系統(tǒng)是嵌入式Linux操作系統(tǒng)的典型代表。它們有收費型的也有免費型的。
BlueCat Linux的開發(fā)者是LynuxWorks公司。它是一個收費型系統(tǒng)。它的實時性雖然不很強,但它與LynuxWorks公司的實時嵌入式操作系統(tǒng)LynxOS有很好的兼容性,基于BlueCat Linux開發(fā)的應用軟件只需略加修改就可以在LynxOS上運行。
Embedix的開發(fā)者是Lineo公司。它像Lineo公司的其他Linux版本一樣,可以免費獲得。Embedix是根據(jù)嵌入式系統(tǒng)的特點重新設計的一個操作系統(tǒng),有比較強的功能,但整個系統(tǒng)所占的存儲空間較大,最小需要8MB RAM,3MB ROM。
MontaVista Linux開發(fā)者是MontaVista公司。它是一個收費型系統(tǒng),能支持較多種的開發(fā)評估板和設備驅動程序。
μClinux是在GNU計劃的推動下,專門為微型系統(tǒng)(μ表示Micro)開發(fā)的一個Linux操作系統(tǒng)。它可以在沒有內(nèi)存管理單元(MMU)的微控制器上運行。目前μClinux是應用最廣泛的免費型嵌入式操作系統(tǒng)之一。
RT-Linux的開發(fā)者是美國新墨西哥理工學院。它有很強的實時性,可以滿足硬實時要求。它可以免費獲得,并將其用于科研目的。
XLinux的開發(fā)者是美國的網(wǎng)虎公司。它的內(nèi)核只有143KB,是存儲空間最小的嵌入式Linux系統(tǒng)之一。
紅旗嵌入式Linux的開發(fā)者是中科紅旗公司。它是一個收費型嵌入式操作系統(tǒng),是該公司Linux系列產(chǎn)品中的一員。