宋 然
◆ 概述
嵌入式實時操作系統(Real Time Embedded Operating System)是一種實時的、支持嵌入式系統應用的操作系統軟件,它是嵌入式系統(包括硬、軟件系統)極為重要的組成部分,通常包括與硬件相關的底層驅動軟件、系統內核、設備驅動接口、通信協議、圖形界面、標準化瀏覽器Browser等。目前,嵌入式操作系統的品種較多,其中較為流行的有:VxWorks、Windows CE、Palm OS、Real Time Linux、pSOS、PowerTV以及Microware公司的
OS-9。與通用操作系統相比較,它在系統實時高效性、硬件的相關依賴性、軟件固態化以及應用的專用性等方面具有較為突出的特點。
◆ 嵌入式操作系統的發展
(1) 無操作系統的嵌入算法階段:這一階段的嵌入式系統是以可編程控制器的形式、以單芯片為核心的系統,同時具有與一些監測、伺服、指示設備相配合的功能。這種系統大部分應用于一些專業性極強的工業控制系統中,通過匯編語言編程對系統進行直接控制,運行結束后清除內存。這一階段系統的主要特點是系統結構和功能都相對單一,針對性強,但無操作系統支持,幾乎沒有用戶接口。
(2) 簡單監控式的實時操作系統階段:這一階段的嵌入式系統主要以嵌入式處理器為基礎,以簡單監控式操作系統為核心。系統的特點是處理器種類繁多,通用性比較弱;系統開銷小,效率高;一般配備系統仿真器,具有一定的兼容性和擴展性;操作系統的用戶界面不夠友好,其主要用來控制系統負載以及監控應用程序運行。
(3) 通用的嵌入式實時操作系統階段:以通用型嵌入式實時操作系統為標志的嵌入式系統。如VxWorks、pSOS、OS-9、Windows CE就是這一階段的典型代表。這一階段系統的特點是能運行在各種不同類型強大的微處理器上;具有強大的通用型操作系統的功能,如具備了文件和目錄管理、多任務、設備支持、網絡支持、圖形窗口以及用戶界面等功能;具有豐富的應用程序接口(API)和嵌入式應用軟件。
◆ 實時多任務操作系統與分時多任務操作系統
實時多任務操作系統是根據操作系統的工作特性而言的。實時是指物理進程的真實時間,實時操作系統是指具有實時性能支持實時控制系統工作的操作系統。對于分時操作系統,軟件的執行在時間上的要求并不嚴格,時間上的錯誤一般不會造成災難性的后果。而對于實時操作系統,主要任務是對事件進行實時的處理,雖然事件可能在無法預知的時刻到達,但是軟件上必須在事件發生時能夠在嚴格的時限內作出響應。實時操作系統具有如下功能:① 任務管理多任務和基于優先級的任務調度;② 任務間同步和通信信號量信郵箱等;③ 存儲器優化管理含ROM的管理;④ 實時時鐘服務;⑤ 中斷管理服務。
◆ VxWorks及其開發工具Tornado
(1) VxWorks操作系統概述
VxWorks由美國WindRiver系統公司出品,在嵌入式操作系統領域中頗具優勢。目前該操作系統的版本為VxWorks 5.4,其核心功能主要有微內核wind,任務間的通信機制,高級的網絡支持,功能強大的文件系統(VxWorks支持4種文件系統:dosFs、rt11Fs、rawFs、tapeFs)和I/O管理,POSIX標準實時擴展,C++和其他標準支持等核心功能。這些核心功能可以與WindRiver系統的其他附件和超過400個Tornado合作伙伴的產品很好的結合在一起。它是專門為嵌入式微處理器設計的高模塊化、高性能的實時操作系統,廣泛應用于高科技產品中,包括消費電子設備、工業自動化、無線通信產品、醫療儀器、數字電視與多媒體設備等,具有很好的安全性、容錯性以及系統靈活性。VxWorks操作系統的在國外的主要商業用戶有Cisco Systems、Bay Networks、3Com、 Fore Systems、HP、Lucent、NASA、Qualcomm,主要應用有火星探測車,愛國者導彈等。
(2) VxWorks系統結構
VxWorks是現在所有獨立于處理器的實時系統中最具特色的操作系統。主要表現在:① VxWork系統運行環境支持的CPU包括PowerPC、68K、SPARC、i960、x86等,同時支持RISC、DSP技術。② 它的微內核Wind是一個具有較高性能的標準的嵌入式實時操作系統內核,其主要特點包括快速多任務切換、搶占式任務調度、任務間通信手段多樣化等。③ 該系統具有較好的可剪裁能力,可剪裁的組件超過80個。用戶可以根據自己系統的目標功能,通過交叉開發環境方便地進行配置。④ 支持應用程序的動態連接和動態下載。⑤ 具有較好的兼容性。
VxWorks是帶有一個相當小的、真正微內核的層次結構。內核僅提供多任務環境進程間通信和同步功能這些功能模塊,足夠支持VxWorks在較高層次所提供的豐富的性能要求。多任務內核的基本功能是提供一個多任務環境,使許多程序在表面上表現為并發執行,而事實上內核是根據基本的調度算法使他們分段執行每個明顯獨立的程序。每個任務擁有自己的上下文,使該任務執行的時候能看到CPU環境和系統資源。內核維護系統中的每個任務的當前狀態遷移發生在應用程序調用內核功能服務的時候。
wind內核狀態:就緒態 一個任務當前除了CPU不等待任何資源;阻塞態 一個任務由于某些資源不可獲得而被阻塞;延遲態 一個任務睡眠一段時間;掛起態 主要用于調試的一個輔助狀態,掛起禁止任務的執行。任務被創建以后進入掛起態,需要通過特定的操作使被創建的任務進入就緒態,這一操作執行速度很快,從而使應用程序能夠提前創建任務并以一種快捷的方式激活該任務。
調度控制:多任務需要一個調度算法分配CPU給就緒的任務。VxWorks 中默認的調度算法是基于優先級的搶占調度,調度采用搶占的方式就是指當一個優先級高于當前任務的任務變為就緒態時,內核將立即保存當前任務的上下文并切換到高優先級任務的上下文。外部中斷被指定優先于任何任務的優先級,就能夠在任何時候搶占一個任務。
任務間通信:wind內核提供了一套豐富的任務間通信與同步的機制,這些通信功能使一個應用中各個獨立的任務能夠相互地協調各自的行動。① 共享地址空間 wind內核的任務間通信機制的基礎是通過共享地址空間,任務能夠使用共享數據結構的指針自由地通信,管道不需要映射一塊內存區到兩個互相通信任務的尋址空間。② 互斥操作 實現互斥的方法包括禁止中斷、禁止任務搶占和通過信號量進行資源鎖定。最強的互斥方法是屏蔽中斷,這樣的鎖定保證了對CPU的互斥訪問,但是這種方法對于實時是不恰當的,因為它在鎖定期間阻止系統響應外部事件,長的中斷延時對于要求有確定響應時間的應用是不可接受的;禁止搶占提供了強制性較弱的互斥方式;互斥信號量,信號量是用于鎖定共享資源訪問的基本方式,信號量限制了互斥操作僅作用于相關的資源,一個信號量被創建來保護資源。
(3) VxWorks的開發平臺TornadoII
TornadoII具有友好的開發調試環境,便于操作配置和應用程序的開發調試。它在1995年獲得了EDN雜志頒發的年度產品創新獎。它是一個集成的軟件開發環境,提供了一種非常有效的方法來開發實時的嵌入式應用。它由3個部分構成:① VxWorks―高性能的實時操作系統;② 應用的構建工具;③ 一個集成的開發環境(IDE)―管理和構造工程,建立和管理主機與目標機通信,運行、調試和監視VxWorks的應用程序。IDE主要包括源碼編輯器、工程管理工具、C和C++的編譯器、資源瀏覽器、圖形增強的調試器、C語言命令外殼、VxWorks的目標模擬器等,這些都為實時嵌入式應用程序的編制提供了豐富的手段。它的開發環境能夠提供上述所有特色,而與目標系統是否資源有限無關,它主要運行于主機系統之上,同時共享有基于主機的動態鏈接和遠程目標系統的符號表。Tornado開發工具和目標機的通信要經由目標服務器和目標代理。使用Tornado能夠使嵌入式應用的時間大為縮短。
◆ 結語
本文以WindRiver公司的VxWorks及其開發工具Tornado為例,介紹了嵌入式實時操作系統及其開發工具在嵌入式系統中占據的重要地位,國內在這方面所做的工作取得了一定的成果,如凱思集團自主研制開發的嵌入式操作系統Hopen OS,但總體水平與國外相比仍然比較落后,隨著嵌入式應用的迅速發展,對這方面的需求必將進一步加大,我們應該借鑒國外的先進經驗來開發完善我們自己的產品,力爭早日趕上世界先進水平。