天天看點

嵌入式作業系統介紹及選型原則

<script language=JavaScript> document.write(mypuiblicgg()); </script>    嵌入式系統是以應用為中心,軟硬體可裁減的,适用于對功能、可靠性、成本、體積、功耗等綜合性嚴格要求的專用計算機系統。具有軟體代碼小、高度自動化、響應速度快等特點,特别适合于要求實時和多任務的體系。嵌入式系統主要由嵌入式處理器、相關支撐硬體、嵌入式作業系統及應用軟體系統等組成,它是可獨立工作的“器件”。

    一、嵌入式作業系統的發展     作為嵌入式系統(包括硬、軟體系統)極為重要的組成部分的嵌入式作業系統,通常包括與硬體相關的底層驅動軟體、系統核心、裝置驅動接口、通信協定、圖形界面、标準化浏覽器等。嵌入式作業系統具有通用作業系統的基本特點,如能夠有效管理越來越複雜的系統資源;能夠把硬體虛拟化,使得開發人員從繁忙的驅動程式移植和維護中解脫出來;能夠提供庫函數、驅動程式、工具集以及應用程式。與通用作業系統相比較,嵌入式作業系統在系統實時高效性、硬體的相關依賴性、軟體固态化以及應用的專用性等方面具有較為突出的特點。     嵌入式作業系統伴随着嵌入式系統的發展經曆了四個比較明顯的階段:     第一階段:無作業系統的嵌入算法階段,以單晶片為核心的可程式設計控制器形式的系統,具有與監測、伺服、訓示裝置相配合的功能。應用于一些專業性極強的工業控制系統中,通過彙編語言程式設計對系統進行直接控制,運作結束後清除記憶體。系統結構和功能都相對單一,處理效率較低,存儲容量較小,幾乎沒有使用者接口。     第二階段:以嵌人式 CPU 為基礎、簡單作業系統為核心的嵌入式系統。 CPU 種類繁多,通用性比較差;系統開銷小,效率高;一般配備系統仿真器,作業系統具有一定的相容性和擴充性;應用軟體較專業,使用者界面不夠友好;系統主要用來控制系統負載以及監控應用程式運作。     第三階段:通用的嵌人式實時作業系統階段,以嵌入式作業系統為核心的嵌入式系統。能運作于各種類型的微處理器上,相容性好;核心精小、效率高,具有高度的子產品化和擴充性;具備檔案和目錄管理、裝置支援、多任務、網絡支援、圖形視窗以及使用者界面等功能;具有大量的應用程式接口( APl );嵌入式應用軟體豐富。     第四階段:以基于 Intemet 為标志的嵌入式系統。這是一個正在迅速發展的階段。目前大多數嵌入式系統還孤立于 lnlemet 之外,但随着 Intemet 的發展以及 Intemet 技術與資訊家電、工業控制技術等結合日益密切,嵌入式裝置與 Intemet 的結合将代表着嵌入式技術的真正未來。     二、使用實時作業系統的必要性     嵌入式實時作業系統在目前的嵌入式應用中用得越來越廣泛,尤其在功能複雜、系統龐大的應用中顯得愈來愈重要。     1 .嵌人式實時作業系統提高了系統的可靠性。在控制系統中,出于安全方面的考慮,要求系統起碼不能崩潰,而且還要有自愈能力。不僅要求在硬體設計方面提高系統的可靠性和抗幹擾性,而且也應在軟體設計方面提高系統的抗幹擾性,盡可能地減少安全漏洞和不可靠的隐患。長期以來的前背景系統軟體設計在遇到強幹擾時,使得運作的程式産生異常、出錯、跑飛,甚至死循環,造成了系統的崩潰。而實時作業系統管理的系統,這種幹擾可能隻是引起若幹程序中的一個被破壞,可以通過系統運作的系統監控程序對其進行修複。通常情況下,這個系統監視程序用來監視各程序運作狀況,遇到異常情況時采取一些利于系統穩定可靠的措施,如把有問題的任務清除掉。     2 .提高了開發效率,縮短了開發周期。在嵌入式實時作業系統環境下,開發一個複雜的應用程式,通常可以按照軟體工程中的解耦原則将整個程式分解為多個任務子產品。每個任務子產品的調試、修改幾乎不影響其他子產品。商業軟體一般都提供了良好的多任務調試環境。     3 .嵌入式實時作業系統充分發揮了 32 位 CPU 的多任務潛力。 32 位 CPU 比 8 、 16 位 CPU 快,另外它本來是為運作多使用者、多任務作業系統而設計的,特别适于運作多任務實時系統。 32 位 CPU 采用利于提高系統可靠性和穩定性的設計,使其更容易做到不崩潰。例如, CPU 運作狀态分為系統态和使用者态。将系統堆棧和使用者堆棧分開,以及實時地給出 CPU 的運作狀态等,允許使用者在系統設計中從硬體和軟體兩方面對實時核心的運作實施保護。如果還是采用以前的前背景方式,則無法發揮 32 位 CPU 的優勢。從某種意義上說,沒有作業系統的計算機(裸機)是沒有用的。在嵌入式應用中,隻有把 CPU 嵌入到系統中,同時又把作業系統嵌入進去,才是真正的計算機嵌入式應用。     三、嵌入式作業系統選型     當我們在設計資訊電器、數字醫療裝置等嵌入式産品時,嵌入式作業系統的選擇至關重要。一般而言,在選擇嵌入式作業系統時,可以遵循以下原則。總的來說,就是 “ 做加法還是做減法 ” 的問題。     (一)市場進入時間     制定産品時間表與選擇作業系統有關系,實際産品和一般示範是不同的。目前是 Windows 程式員可能是人力資源最豐富的。現成資源最多的也就可能是 WinCE 。使用 WinCE 能夠很快進入市場。因為 WinCE+X86 做産品實際上是在做減法,去掉你不要的功能,能很快出産品,但伴随的可能是成本高,核心競争力差。而某些高效的作業系統可能由于程式設計人員缺乏,或由于這方面的技術積累不夠,影響開發進度。     (二)可移植性     作業系統相關性。當進行嵌入式軟體開發時,可移植性是要重點考慮的問題。良好的軟體移植性應該比較好,可以在不同平台、不同系統上運作,跟作業系統無關。軟體的通用性和軟體的性能通常是沖突的。即通用以損失某些特定情況下的優化性能為代價。很難設想開發一個嵌入式浏覽器而僅能在某一特定環境下應用。反過來說,當産品與平台和作業系統緊密結合時,往往你的産品的特色就蘊含其中。     (三)可利用資源     産品開發不同于學術課題研究,它是以快速、低成本、高品質的推出适合使用者需求的産品為目的的。集中精力研發出産品的特色,其他功能盡量由作業系統附加或采用第三方産品,是以作業系統的可利用資源對于選型是一個重要參考條件。 Linux 和 WinCE 都有大量的資源可以利用,這是他們被看好的重要原因。其他有些實時作業系統由于比較封閉,開發時可以利用的資源比較少,是以多數功能需要自己獨立開發。進而影響開發進度。近來的市場需求顯示,越來越多的嵌入式系統,均要求提供全功能的 Web 浏覽器。而這要求有一個高性能、高可靠的 GUI 的支援。     (四)系統定制能力     資訊産品不同于傳統 PC 的 Wintel 結構的單純性,使用者的需求是千差萬别的,硬體平台也都不一樣,是以對系統的定制能力提出了要求。要分析産品是否對系統底層有改動的需求,這種改動是否伴随着産品特色 ?Linux 由于其源代碼開放的天生魅力,在定制能力方面具有優勢。随着 WinCE3.0 原碼的開放,以及微軟在嵌入式領域力度的加強,其定制能力會有所提升。    (五)成本     成本是所有産品不得不考慮的問題。作業系統的選擇會對成本有什麼影響呢 ?Linux 免費, WinCE 等商業系統需要支付許可證使用費,但這都不是問題的答案。成本是需要綜合權衡以後進行考慮的 —— 選擇某一系統可能會對其他一系列的因素産生影響,如對硬體裝置的選型、人員投入、以及公司管理和與其他合作夥伴的共同開發之間的溝通等許多方面的影響。     (六)中文核心支援     國内産品需要對中文的支援。由于作業系統多數是采用西文方式,是否支援雙位元組編碼方式,是否遵循 GBK , GBl8030 等各種國家标準,是否支援中文輸入與處理,是否提供第三方中文輸入接口是針對國内使用者的嵌入式産品的必需考慮的重要因素。     上面提到用 WinCE+x86 出産品是減法,這實際上就是所謂 PC 家電化;另外一種做法是加法,利用家電行業的硬體解決方案(絕大部分是非 x86 的)加以改進,加上嵌入式作業系統,再加上應用軟體。這是所謂家電 PC 化的做法,這種加法的優勢是成本低,特色突出,缺點是産品研發周期長,難度大(需要深入了解硬體和作業系統)。如果選擇這種做法, Linux 是一個好選擇,它讓你能夠深入到系統底層,如果你願意并且有能力。

四、幾種代表性嵌入式作業系統比較     (一) VxWorks     VxWorks 作業系統是美國 WindRiver 公司于 1983 年設計開發的一種嵌入式實時作業系統( RTOS ),是 Tornado 嵌入式開發環境的關鍵組成部分。良好的持續發展能力、高性能的核心以及友好的使用者開發環境,在嵌人式實時作業系統領域逐漸占據一席之地。     VxWorks 具有可裁剪微核心結構;高效的任務管理;靈活的任務間通訊;微秒級的中斷處理;支援 POSIX 1003 . 1b 實時擴充标準;支援多種實體媒體及标準的、完整的 TCP/IP 網絡協定等。     然而其價格昂貴。由于作業系統本身以及開發環境都是專有的,價格一般都比較高,通常需花費 10 萬元人民币以上才能建起一個可用的開發環境,對每一個應用一般還要另外收取版稅。一般不通供源代碼,隻提供二進制代碼。由于它們都是專用作業系統,需要專門的技術人員掌握開發技術和維護,是以軟體的開發和維護成本都非常高。支援的硬體數量有限。     (二) Windows CE     Windows CE 與 Windows 系列有較好的相容性,無疑是 Windows CE 推廣的一大優勢。其中 WinCE3.0 是一種針對小容量、移動式、智能化、 32 位、了解裝置的子產品化實時嵌人式作業系統。為建立針對掌上裝置、無線裝置的動态應用程式和服務提供了一種功能豐富的作業系統平台,它能在多種處理器體系結構上運作,并且通常适用于那些對記憶體占用空間具有一定限制的裝置。它是從整體上為有限資源的平台設計的多線程、完整優先權、多任務的作業系統。它的子產品化設計允許它對從掌上電腦到專用的工業控制器的使用者電子裝置進行定制。作業系統的基本核心需要至少 200KB 的 ROM 。由于嵌入式産品的體積、成本等方面有較嚴格的要求,是以處理器部分占用空間應盡可能的小。系統的可用記憶體和外存數量也要受限制,而嵌入式作業系統就運作在有限的記憶體(一般在 ROM 或快閃存儲器)中,是以就對作業系統的規模、效率等提出了較高的要求。從技術角度上講, Windows CE 作為嵌入式作業系統有很多的缺陷:沒有開放源代碼,使應用開發人員很難實作産品的定制;在效率、功耗方面的表現并不出色,而且和 Windows 一樣占用過的系統記憶體,運用程式龐大;版權許可費也是廠商不得不考慮的因素。     (三)嵌入式 Linux     這是嵌入式作業系統的一個新成員,其最大的特點是源代碼公開并且遵循 GPL 協定,在近一年多以來成為研究熱點,據 IDG 預測嵌入式 Linux 将占未來兩年的嵌入式作業系統份額的 50% 。     由于其源代碼公開,人們可以任意修改,以滿足自己的應用,并且查錯也很容易。遵從 GPL ,無須為每例應用交納許可證費。有大量的應用軟體可用。其中大部分都遵從 GPL ,是開放源代碼和免費的。可以稍加修改後應用于使用者自己的系統。 有大量的免費的優秀的開發工具,且都遵從 GPL ,是開放源代碼的。有龐大的開發人員群體。無需專門的人才,隻要懂 Unix/Linux 和 C 語言即可。随着 Linux 在中國的普及,這類人才越來越多。是以軟體的開發和維護成本很低。優秀的網絡功能,這在 Internet 時代尤其重要。穩定 —— 這是 Linux 本身具備的一個很大優點。核心精悍,運作所需資源少,十分适合嵌入式應用。     支援的硬體數量龐大。嵌入式 Linux 和普通 Linux 并無本質差別, PC 上用到的硬體嵌入式 Linux 幾乎都支援。而且各種硬體的驅動程式源代碼都可以得到,為使用者編寫自己專有硬體的驅動程式帶來很大友善。     在嵌入式系統上運作 Linux 的一個缺點是 Linux 體系提供實時性能需要添加實時軟體子產品。而這些子產品運作的核心空間正是作業系統實作排程政策、硬體中斷異常和執行程式的部分。由于這些實時軟體子產品是在核心空間運作的,是以代碼錯誤可能會破壞作業系統進而影響整個系統的可靠性,這對于實時應用将是一個非常嚴重的弱點。     (四) μC/OS 一 Ⅱ     μC/OS 一 Ⅱ 是著名的源代碼公開的實時核心,是專為嵌入式應用設計的,可用于 8 位, 16 位和 32 位單片機或數字信号處理器( DSP )。它是在原版本 μC/OS 的基礎上做了重大改進與更新,并有了近十年的使用實踐,有許多成功應用該實時核心的執行個體。它的主要特點如下:

  • 公開源代碼,容易就能把作業系統移植到各個不同的硬體平台上;
  • 可移植性,絕大部分源代碼是用C語言寫的,便于移植到其他微處理器上;
  • 可固化;
  • 可裁剪性,有選擇的使用需要的系統服務,以減少鬥所需的存儲空間;
  • 占先式,完全是占先式的實時核心,即總是運作就緒條件下優先級最高的任務;
  • 多任務,可管理64個任務,任務的優先級必須是不同的,不支援時間片輪轉排程法;
  • 可确定性,函數調用與服務的執行時間具有其可确定性,不依賴于任務的多少;
  • 實用性和可靠性,成功應用該實時核心的執行個體,是其實用性和可靠性的最好證據。

    由于 μC/OS 一 Ⅱ 僅是一個實時核心,這就意味着它不像其他實時存在系統那樣提供給使用者的隻是一些 API 函數接口,還有很多工作需要使用者自己去完成。     五、結束語     在嵌入式應用中,使用實時作業系統( RTOS )是目前嵌入式應用的一個特點,一種趨勢,也是單片機應用從低水準向高水準的一個進步。在實際的應用中,根據不同的要求和條件選擇合适的作業系統,使開發工作更容易,設計出更完美的嵌入式系統。

繼續閱讀