謝克明
1 引言 嵌入式系統在生活中隨處可見,一臺通用計算機的外部設備中就包含了5-10個嵌入式處理器,打印機、掃描儀、數字相機、USB集線器等均是由嵌入式處理器控制的。制造工業、過程控制、通訊、儀器儀表、汽車、船舶、航空航天、軍事裝備、消費類產品等方面均是嵌入式系統的應用領域。嵌入式系統廣為接受定義是:以應用為中心,以計算機技術為基礎,軟件硬件可裁剪、適應應用系統,對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。美國著名未來學家Nicholas Negroponte在1999年訪華時預言,若干年后嵌入式智能工具將是繼PC 和Internet 之后最偉大的發明。 2 嵌入式系統的結構 圖1 嵌入式系統結構圖 嵌入式系統作為一類特殊的計算機系統,自底向上包含有3個部分:嵌入式硬件平臺、嵌入式操作系統、嵌入式應用軟件,如圖1中虛線框所示。隨著嵌入式越來越復雜的應用,如何簡潔有效地使嵌入式系統應用于各種不同的應用環境是嵌入式系統發展中所必須解決的關鍵問題。經過不斷的發展,原先嵌入式系統的3層結構逐步演化成為一種4層結構。如圖1中實線框所示,這個新增加的中間層次叫硬件抽象層,有時也叫板級支持包,是一個介于硬件與軟件之間的中間層次。硬件抽象層通過特定的上層接口與操作系統進行交互,實現操作系統對硬件的直接操作。硬件抽象層的引入大大推動了嵌入式操作系統的通用化。 3 嵌入式操作系統 通用計算機具有完善的操作系統和應用程序接口(API),是計算機基本組成不可分離的一部分,應用程序的開發以及完成后的軟件都在OS平臺上面運行,但一般不是實時的。嵌入式系統應用軟件可以沒有操作系統直接在芯片上運行,但是為了合理地調度多任務,利用系統資源、系統函數以及和專家庫函數接口,用戶必須自行選配RTOS開發平臺,這樣才能保證程序執行的實時性、可靠性,并減少開發時間,保障軟件質量。嵌入式操作系統完成嵌入式應用的任務調度和控制等核心功能,具有內核較精簡、可配置、與高層應用緊密關聯等特點。 嵌入式操作系統的高實時性是基本要求,在多任務嵌入式系統中,對重要性各不相同的任務進行統籌兼顧的合理調度是保證每個任務及時執行的關鍵,單純通過提高處理器速度是無法完成和沒有效率的,這種任務調度只能由優化編寫的系統軟件來完成,因此操作系統的高實時性是基本要求。多任務操作系統是知識集成的平臺和走向工業標準化道路的基礎。 表1 為了滿足嵌入式電子設備功能的不斷升級和日趨復雜的電氣結構,全世界EOS多達數百種,而且新的EOS不斷涌現,很多IT組織、大公司都有自己的RTOS。EOS不但支持8/16位處理器,而且能支持TriCore、ATmega 128、PA-RISC、Power PC、ARM、Strong ARM、SE3208、NIOS、ARC、AVR、HMS39C7092、LH7A404、TMS320C6711、68XXX、CPU32等32/64位RISC芯片或信號處理器DSP。 新一代EOS 還具備TCP/IP、IEEE1394、USB、CAN、Bluetooth和IrDA通信接口組網協議軟件和物理層驅動軟件,采用實時多任務編程技術和交叉開發工具技術來控制功能復雜性,簡化應用程序設計、提供精巧的多媒體人機界面、保障軟件質量和縮短開發周期。就每種特定的EOS而言,其更新速度日新月異,為了及時了解EOS新的特征,筆者列舉了20世紀80-90年代一些著名的EOS,其主要特征如表1所述。 下面對1999年至2004年五年期間使用率較高的RTOS,做一詳細介紹。 (1) RTLinux是比較受歡迎而又比較成功的實時Linux實現方案之一,它既有專有版本,又有源碼開放的版本,兩種版本均可從FSMLabs公司買到。RTLinux把Linux看作是在小型RTOS下的一個低優先權任務執行軟件。只有在沒有實時任務可執行時,Linux才會運行。這種技術使RTLinux能在35μs預定時間內,在一個典型的PC兼容系統上執行周期性的任務,而標準的Linux則需要超過20ms的預定時間。這種混合方法的優點在于簡單的RTOS能夠收集實時數據,然后用戶可以利用標準Linux應用程序的功能來分析和顯示這些數據。 RTLinux是源代碼開放的具有硬實時特性的多任務操作系統,它是通過底層對Linux實施改造的產物。通過在Linux內核與硬件中斷之間增加一個精巧的可搶先的實時內核,把標準的Linux內核作為實時內核的一個進程與用戶進程一起調度,標準的Linux內核的優先級最低,可以被實時進程搶斷。正常的Linux進程仍可以在Linux內核上運行,這樣既可以使用標準分時操作系統―Linux的各種服務,又能提供低延時的實時環境。RTLinux在默認的情況下采用優先級的調度策略,即系統調度器根據各個實時任務的優先級來確定執行的先后次序。優先級高的先執行,優先級低的后執行,這樣就保證了實時進程的迅速調度。同時RTLinux也支持其它的調度策略,如最短時限最先調度(EDP)、確定周期調度(RM)(周期段的實時任務具有高的優先級)。RTLinux將任務調度器本身設計成一個可裝載的內核模塊,用戶可以根據自己的實際需要,編寫適合自己的調度算法。 (2) VxWorks操作系統是美國WIND RIVER公司于1983年設計開發的一種嵌入式實時操作系統(RTOS),它是目前嵌入式系統領域中使用最廣泛,市場占有率最高的系統。它支持多種處理器,如x86、i960、Sun Sparc、Motorola MC68xxx、MIPS RX000、POWER PC等等。它以其良好的可靠性和卓越的實時性被廣泛地應用在通信、軍事、航空、航天等高精尖技術及實時性要求極高的領域中,如衛星通訊、軍事演習、彈道制導、飛機導航等。在美國的 F-16、FA-18 戰斗機,B-2 隱形轟炸機和愛國者導彈上,甚至連1997年在火星表面登陸的火星探測器上也使用到了VxWorks。 (3) QNX RTOS 兩個加拿大人Gordon Bell和Dan Dodge在1980年成立了Quantum Software Systems公司,他們根據大學時代的一些設想寫出了一個能在IBM PC上運行的名叫QUNIX(Quick UNIX)的系統,直到AT&T發律師函過來才把名字改成QNX。QNX在正式發行的1.0版就成功實現了多任務,而20世紀80年代中期Microsoft年復一年的宣布其新版的DOS將是真真正正的多任務系統的時候,QNX已經在各大公司用開了。POSIX出現后,QNX被重寫了一遍,一方面避免了被指責用戶界面與UNIX過于相似的尷尬,另一方面在保持特色的同時作了一些改進,變得更加優秀。為了與Microsoft抗衡,改名為QNX Software Systems的公司又推出了基于微內核技術的Neutrino版本,這使得QNX在嵌入式應用方面有了廣闊的前景。QNX的最新版本為QNX Neutrino RTOS Version 6.2.1 [Apr-7-2003],國內的官方網站有非商業版的下載。 嵌入式系統應用最廣泛的一種操作系統是加拿大QNX公司推出的QNX RTOS操作系統。該系統可與Linux兼容,不同于Windows 98,它是一種實時系統,在存儲器的裝載周期中進行命令處理而不會延誤時間。它可以用在腎病患者換血時所需的透析設備及宇宙飛船、工藝控制設備或電訊設備中。QNX是一個實時的、可擴充的操作系統,它遵循POSIX.1(程序接口)和POSIX.2(Shell和工具),部分遵循POSIX.1b(實時擴展)。它提供了一個很小的微內核以及一些可選的配合進程。其內核僅提供4種服務:進程調度、進程間通信、底層網絡通信和中斷處理,其進程在獨立的地址空間運行。所有其它OS服務,都實現為協作的用戶進程,因此QNX內核非常小巧(QNX4.x大約為12KB)而且運行速度極快。這個靈活的結構可以使用戶根據實際的需求將系統配置成微小的嵌入式操作系統或是包括幾百個處理器的超級虛擬機操作系統。 (4) Nucleus Embedded RTOS AT