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