官术网_书友最值得收藏!

1.3 嵌入式操作系統

嵌入式系統的軟件大致可以分為三個部分:第一部分是負責系統硬件初始化、系統自檢以及操作系統引導的軟件,稱為Boot Loader,類似于PC中的BIOS;第二部分是操作系統,是軟件系統的管理者和靈魂;第三部分是應用軟件。從開發者的角度來看,這幾部分與通用計算機系統的軟件相比都有著許多不同的地方。其中最主要的不同點是,應用開發者必須更多地提升對操作系統的關注度。在通用計算機系統的應用開發過程中,由于硬件、軟件平臺的規范化和標準化,因此而呈現的各種開發環境和可共享的函數庫使得開發者無須了解操作系統及硬件的更多知識,就可以在規范的編程模板指引下照貓畫虎般地編寫出自己的應用程序。但是嵌入式系統是一種量體裁衣式的訂制開發過程,不允許出現更多的系統無用碎片及應用冗余代碼,所以需要應用程序與操作系統緊密配合。這就要求應用開發者對操作系統有較深入的了解而且掌握具體的開發過程。

1.3.1 嵌入式系統應用軟件的特點

  • 軟件要求固態化存儲;
  • 軟件代碼短小精悍;
  • 具體應用程序與操作系統的一體化整合;
  • 多數嵌入式應用需要操作系統具有或強或弱的的實時性;
  • 高端應用需要多任務操作系統支持;
  • 軟件開發需要開發工具的支持。

由嵌入式系統應用軟件的特點可以看出,一個合格的嵌入式軟件開發人員,不僅需要掌握相關的程序設計方法,還需要較好地掌握硬件以及操作系統方面的知識。

1.3.2 嵌入式操作系統

1.嵌入式操作系統的特點

與通用平臺上運行的操作系統相比,嵌入式操作系統具有以下一些特點:

  • 短小精悍的內核以及高度模塊化結構,以利于不同應用要求的選擇和剪裁;
  • 或強或若的實時性,大多數嵌入式系統都有實時性要求,且多是強實時多任務并發操作,所以要求相應的嵌入式操作系統也必須是實時操作系統(Real-Time Operation System,RTOS);
  • 控制類應用往往不需要虛擬文件系統的支持,文件系統主要用于支持驅動程序;
  • 高端應用需要多任務操作系統支持以及文件系統及顯示驅動支持;
  • 目前的嵌入式操作系統按照應用的范圍有適用于低端還是適用于高端之分,從當前應用現狀來看,所謂的低端應用是指那些無法支持圖形模式編程應用以及虛擬文件系統的應用,而高端應用則可以支持。

2.主流的嵌入式操作系統

1)VxWorks

在眾多的實時操作系統和嵌入式操作系統產品中,WindRiver公司的VxWorks(2009年6月被Intel以8.84億美元收購)是較為有特色的一種實時操作系統。VxWorks支持各種工業標準,包括POSIX、ANSI C和TCP/IP網絡協議。VxWorks運行系統的核心是一個高效率的微內核,該微內核支持各種實時功能,包括快速多任務處理、中斷支持、搶占式和輪轉式調度。微內核設計減輕了系統負載并可快速響應外部事件。在美國宇航局的“極地登陸者號”、“深空二號”和火星氣候軌道器等登陸火星探測器上,就采用了VxWorks,負責火星探測器全部飛行控制,包括飛行糾正、載體自旋和降落時的高度控制等,而且還負責數據收集和與地球的通信工作。目前在全世界裝有VxWorks系統的智能設備數以百萬計,其應用范圍遍及互聯網、電信和數據通信、數字影像、網絡、醫學、計算機外設、汽車、火控、導航與制導、航空、指揮、控制、通信和情報、聲納與雷達、空間與導彈系統、模擬和測試等眾多領域。

2)Linux

Linux操作系統原本主要的市場定位是UNIX的應用領域,諸如桌面系統及服務器系統。但由于其模塊化的內核構造機制及靈活的內核剪裁功能非常適合嵌入式系統的訂制,再加上穩固的系統性能和眾多的開源資源,使其不僅適合而且允許廣大的開發者免費利用其進行各種類型的應用開發。這些因素共同造成了Linux在嵌入式系統領域快速而廣泛的應用。根據國際上相關專業市場調查機構的調查,目前在所有的嵌入式應用中,以Linux作為操作系統的占了近乎一半,而采用其他操作系統的應用加起來才分享市場的另一半。網上的有些嵌入式開發人員甚至將當今的嵌入式系統開發技術歸納為ARM處理器+Linux操作系統。盡管此言尚存片面,但也從一個方面反映出Linux在嵌入式系統應用領域的認可度。

Linux在嵌入式系統應用的主要優勢有:

  • 免費獲得內核源代碼;
  • 免許可費用,大多數的商業操作系統,例如VxWorks、Windows CE不僅要收取軟件的使用費,另外對基于該系統開發并銷售出的產品還要收取一定的許可證費用,即所謂的License費用;而Linux是一個免費軟件,并且公開源代碼,只要不違反GPL協議(承諾利用Linux開發的程序也開源),就可以自由使用Linux資源和發布Linux應用;
  • 有很高的穩定性;
  • 模塊化結構(方便剪裁);
  • 支持多種文件系統,具有強大的網絡功能以及眾多的驅動程序和應用API;
  • 豐富的開發工具,Linux提供C、C++、Java以及其他很多的開發工具,更重要的是,愛好者可以免費獲得,并且這些開發工具設計時已經考慮到支持各種不同的微處理器結構和調試環境,Linux基于GNU的工具包提供了完整與無縫交叉平臺開發工具,從編輯器到底層調試,其C編譯器可產生更有效率的執行代碼;
  • 大量的文檔和學習資料。

Linux由于并不是為嵌入式應用而生,因此也存在一些缺憾:

  • 實時性不夠強;
  • 系統版本間差異大;
  • 用于商業軟件開發時無法得到技術支持且產權不易保護。
3)基于Linux的衍生系統

由前面內容知道,Linux并不是為嵌入式應用定制的,所以必然存在一些需要改進的地方。目前主要有針對特定處理器硬件條件的衍生系統、針對實時性進行改造的衍生系統以及針對手機特殊應用支持的衍生系統。

①μCLinux。μCLinux是在Linux 2.0內核基礎上去除了與MMU(Memory Management Unit,內存管理單元)硬件邏輯有關功能的減縮版Linux系統,以適應許多內部沒有MMU功能的嵌入式處理器的運行。其主要優點是繼承了Linux內核的可裁減性、系統的穩定性、源代碼的開源性、廣泛的設備支持性以及強大的網絡功能,但是不支持虛擬內存管理等需要MMU支持的系統服務,而且一樣不具有實時性。

②RTLinux(或RTAI、Xenomai)。RTLinux(Real Time Linux)是較早在Linux基礎上衍生的實時性改造補丁,并以外加的可搶占實時內核方式使得Linux具有了強實時性。當系統中具有實時性任務請求時,實時內核(補丁)將行使系統控制權處理實時任務,而將標準的Linux作為其優先級最低的一個進程來管理,應用中的非實時任務則由Linux提供服務。RTLinux符合POSIX 1003.13/PSE51兼容的標準,并遵循GPL v2開放軟件協議,可運行在x86、PowerPC、Alpha及部分ARM處理器上。RTLinux有開源的RTLinux和商業的RTLinux/PRO兩個版本,早期由FSMLabs公司維護,但該公司在2007年被風河(WindRiver)公司并購,其最后一個商業化產品為RT-BSD,最后的開源版本為構建在Linux-2.4.32內核上的RTLinux/GPL-3.2版。目前該開源版由西班牙Politécnica de Valencia大學的Alfons Crespo研究小組接手維護,已推出RTLinux/GPL-4.0,但主要是配合他們自己開發的多系統虛擬環境xtratum運行。

1999年正當RTLinux將其2.2版本向Linux2.4內核升級遇到了麻煩并無法支持對稱多處理SMP功能時,意大利米蘭理工學院航天工程系(DIAPM)又推出了一款與RTLinux實現機制類似的實時Linux系統RTAI(Real-Time Application Interface),并且從2001年到2002年RTAI先后采用RTHAL(Real-Time Hardware Abstraction Layer,實時硬件抽象層)及Adeos(Adaptive Domain Environment for Operating Systems,操作系統自適應域環境)技術進行改造,從而擺脫了與RTLinux在技術上的專利紛爭而成為一款自主實時操作系統。目前RTAI最新版本為3.8.1版,可以支持X86、ARM、PowerPC等處理器。

Xenomai是2003年并入RTAI進行合作項目開發的一個團隊產品,但2005年又從RTAI分離了出來。Xenomai采用的技術路線與RTAI基本相同,性能稍遜RTAI,但所支持的處理器及API接口種類較RTAI多,目前的版本為2.5.0。

③Android(面向智能手機及手持設備的Linux增值系統)。Android一詞指科幻小說中的機器人,并被一家專門開發手機操作系統的公司作為公司名,該公司2005年7月被Google公司收購。2007年11月Android被作為Google公司聯合33家手機芯片廠、手機生產廠及電信運營商共同發布的新一代智能手機操作系統的名稱。該系統以Linux為底層操作系統,并通過嵌入Java虛擬機以支持基于Java實現的多種網絡及圖形化應用。2010年的最新版本為2.3版。作為一個開放的平臺,Android在2009年10月開放了所有源碼。Android的主要優勢在于:開放性、不受運營商束縛、豐富的硬件選擇、開發商不受任何限制、無縫結合的Google應用。目前的典型產品有,摩托羅拉A1680、XT702、三星A5700、HTC G7、華為Ideos等手機。

④Meego(面向車載等移動設備及智能手機的Linux增值系統)。在2010年巴塞羅那世界移動大會上,英特爾的Moblin與諾基亞的Maemo這兩款嵌入式Linux智能操作系統宣布合并,啟用新名稱MeeGo,并交由Linux基金會管理。MeeGo將結合諾基亞Maemo中基于Qt的用戶界面及英特爾Moblin的核心軟件平臺,同時支持ARM和x86的處理器。其目標是促使家庭、車載、辦公室和便攜式等多種設備之間進行無縫通信,廣泛應用于便攜式筆記本電腦、上網本、平板電腦、多媒體電話、聯網電視機和車載信息娛樂系統等,目前推出的產品是諾基亞N900智能手機。相比Android,MeeGo由Linux基金會管理,因此具有完全的開放性。

4)Windows CE(微軟產品)

Windows CE簡稱為WinCE,是微軟開發的面向智能家電及手持設備的操作系統。在1996年最早推出的WinCE1.0主要應用目標是交互式數字電視,但由于互聯網向家庭娛樂領域的快速擴張,微軟適時地調整WinCE的應用方向,并推出了基于互聯網的稱為WebTV的家庭數字電視方案:服務器端使用NT,機頂盒端使用WinCE。但由于在和美國有線公司爭奪用戶市場不斷失利,微軟逐漸放棄了WinCE在美國機頂盒市場的競爭,于是將應用目標轉向其他方向。微軟看到了中國在電子制造業的巨大潛力,于1999年3月10日,在中國發布了“維納斯計劃”,力圖將WinCE推介到掌上電腦、智能家電、醫療電子等各類應用的嵌入式裝置中去,希望在整個電子消費領域再現其Windows平臺在個人電腦領域所創造的神話,但由于市場的接受狀況不佳而隱匿于人們的視野中。

WinCE的主要特點是與Windows兼容,支持C、C++、匯編、Java等編程語言,內核較小并具有一定的實時性,能作為一種嵌入式操作系統應用到工業控制等領域。其優點在于便攜性、提供對微處理器的選擇以及非強行的電源管理功能。內置的標準通信能力使Windows CE能夠訪問Internet并收發E-mail或瀏覽Web。除此之外,Windows CE特有的與Windows類似的用戶界面使最終用戶易于使用,例如,桌面、任務欄、窗口、圖標和控件等。Windows CE的缺點是速度慢、效率低、價格偏高、開發應用程序相對較難。

近幾年WinCE經過有針對性的開發改造封裝,推出了一些適合不同應用的解決方案,在我國應用較多的是針對手持設備,PDA(掌上電腦)和高端手機的幾款嵌入式系統。

  • PocketPC 2002:是基于WinCE 3.0內核,并針對掌上設備的應用經過優化后的操作系統,主要應用于PDA及同類的其他手持設備中。
  • Windows Mobile:是基于WinCE.NET 4.2內核,并針對手機應用經過優化后的操作系統。另外還根據高端智能手機的應用需要,集成了大量手機的應用模塊,如辦公軟件,媒體播放器,網絡瀏覽器,對無線寬帶設備支持的各種網絡協議等。

PocketPC 2002和Windows Mobile由于應用定位于低功耗手持設備,所以目前暫時都只能支持ARM處理器。而通用的WinCE還能夠支持X86、MIPS、SH等其他系列的處理器。

5)Palm OS(3Com公司產品)

Palm OS在國際上早期的掌上電腦和PDA市場上占有霸主地位,具有針對專用的硬件進行優化的程序模塊,不需要太多的內存空間(小于12MB),并提供了開放的操作系統應用程序接口(API),以利于開發商根據需要進行二次開發,但它仍然是一個準多任務操作系統,而且硬件的互換性較差。

6)QNX(加拿大QSSL公司產品)

一種商業分布式實時操作系統,它由微內核和一組共操作的進程組成,具有高度的伸縮性,可靈活地剪裁,最小配置只占用幾十KB的內存,因此可以廣泛地嵌入到智能機器、智能儀器儀表、機頂盒、通信設備、PDA等應用中去。

7)Nucleus(美國ATI公司產品)

Nucleus是一個商業的可搶占式實時多任務操作系統,采用了軟件組件方法設計,95%的代碼是用ANSI C寫成的,非常便于移植并能夠支持大多數類型的處理器,提供了從局域網到廣域網完整的服務組件及支持圖形應用的實時化Windows模塊,便利的集成開發環境和完備的動態鏈接庫以及各類底層驅動軟件。多用于網絡設備、機頂盒、智能辦公設備、PDA等手持設備、通信設備、汽車電子、醫療儀器、工業控制等。

8)μC/OS-II

μC/OS-II最早是一個運行于X86 CPU平臺下DOS環境的實時嵌入式操作系統,目前已廣泛移植于多種CPU的環境下,具有開源、短小精悍、高效、實時性好等優點。其最關鍵部分是實時多任務內核,內核的基本功能包括:任務管理、定時器管理、存儲器管理、事件管理、系統管理、消息(隊列)管理、信號量管理等,這些管理功能都是通過應用程序接口函數API由用戶調用的。μC/OS-II采用占先式實時內核的任務管理機制,可以管理64個任務,其中,系統保留8個任務,應用程序最多可以使用56個任務。μC/OS-II不支持時間片輪轉調度法,所以賦予每個任務的優先級必須是不同的。優先級號越低,任務的優先級越高。它的基本代碼大小不到5KB,對存儲器容量要求低,可滿足嵌入式系統對體積的苛刻要求。但由于系統所實現的多任務并非“并發多道程序”方式,所以系統的可靠性有待考證。另外由于其系統規模小,對圖形應用的支持較弱,故主要用于控制類等低端應用中,如照相機行業、醫療檢測儀器、音響設施等。

主站蜘蛛池模板: 微山县| 青岛市| 甘泉县| 天台县| 东海县| 福泉市| 五原县| 龙泉市| 台南市| 石渠县| 阿拉善盟| 隆子县| 旬邑县| 永福县| 高平市| 天台县| 本溪市| 寻乌县| 尼勒克县| 察隅县| 三原县| 青岛市| 谢通门县| 柘荣县| 台湾省| 香河县| 河东区| 四子王旗| 亳州市| 色达县| 盈江县| 开化县| 盐亭县| 久治县| 二连浩特市| 宜章县| 敦煌市| 武穴市| 柯坪县| 财经| 襄垣县|