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