1.3 嵌入式軟件的組成
在嵌入式系統發展的早期,其軟件十分簡單,常常是應用軟件直接建立在硬件之上。在一些嵌入式系統中雖然有操作系統,但操作系統和應用軟件之間的界線比較模糊,兩者往往是一體的。隨著嵌入式技術的發展,特別是進入后PC時代后,嵌入式系統上的軟件得到了極大的豐富,形成了一個完整的軟件體系。如圖1.2所示,在這個體系中,嵌入式軟件自底向上可分為操作系統、支撐軟件、應用軟件3個部分。

圖1.2 嵌入式軟件的組成
1. 操作系統
嵌入式操作系統由操作系統內核、核外服務、應用程序接口(API)、硬件抽象層等幾部分組成。嵌入式操作系統一般采用微內核結構,操作系統內核只負責完成任務調度、任務通訊、內存管理、中斷管理等一些最基本的功能,而將其他的功能都放在了內核之外。
2. 支撐軟件
嵌入式軟件上的支撐軟件由窗口系統、網絡系統、數據庫管理系統、Java虛擬機等幾個部分組成。另外,對于嵌入式系統來說,軟件開發環境雖然大部分運行在臺式機上,但從邏輯上講它仍然應當被認為是支撐軟件的一部分。由于嵌入式系統的硬件配置一般都比較低,在它上面開發應用軟件是幾乎不可能的。為解決這一問題,很多的廠商都陸續推出了自己的軟件開發環境,這對應用軟件的推廣起到了極為重要的作用,它使更多的人加入到了嵌入式應用軟件開發者的行列中,提高了開發工作的效率,降低了成本。
嵌入式系統的支撐軟件近年來發展非常快,通用計算機上的功能越來越多地在嵌入式系統上實現。例如,目前支持窗口系統、Internet協議和Java虛擬機的嵌入式系統已經很常見。但是由于嵌入式系統的多樣化,對支撐軟件也提出了差異極大的需求,使某些支撐軟件在某些嵌入式系統中變成了過于“奢侈”的物品。例如,對汽車ABS控制系統、汽車發動機控制系統這類深度嵌入的嵌入式系統來說,支持窗口系統完全沒有必要。但對于智能手機、個人數字助理(PDA)等一些淺度嵌入的嵌入式系統來說,支持窗口系統則是很必要的。
3. 應用軟件
嵌入式應用軟件所覆蓋的范圍非常廣,涉及工業控制、家電、商業、金融、交通運輸、通信、建筑、環境監測、醫療、軍事、安全防御、辦公等相當多的領域。它是整個系統功能的體現,系統的功能需要通過應用軟件才能實現。在一個嵌入式系統中可以沒有支撐軟件,甚至沒有操作系統,但卻不能沒有應用軟件,否則它就不能成為一個系統。