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