新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 嵌入式操作系統(tǒng)中的關(guān)鍵技術(shù)

嵌入式操作系統(tǒng)中的關(guān)鍵技術(shù)

——
作者: 時(shí)間:2007-02-28 來源:中國工業(yè)設(shè)備網(wǎng) 收藏
采用嵌入操作系統(tǒng) 

    現(xiàn)在許多嵌入式系統(tǒng)要?jiǎng)偃蔚墓ぷ髟絹碓綇?fù)雜,需要采用32位的嵌入式處理器,這樣就成為嵌入式系統(tǒng)設(shè)計(jì)中必不可少的一個(gè)環(huán)節(jié)。眾所周知通用操作系統(tǒng)(如Microsoft Windows系列的操作系統(tǒng))并不適合直接應(yīng)用在上,為了適應(yīng)嵌入式系統(tǒng)的需要,必須在整個(gè)系統(tǒng)的軟件架構(gòu)中引入。

    在嵌入式系統(tǒng)應(yīng)用中,早期的16位及16位以下的微處理器計(jì)算能力有限,要處理的任務(wù)一般比較簡單,因而程序員可以在應(yīng)用程序中自己管理微處理器的工作流程,很少需要用到嵌入式操作系統(tǒng)。當(dāng)系統(tǒng)變得較為復(fù)雜后,對系統(tǒng)中斷的處理以及多個(gè)功能模塊之間的協(xié)調(diào)需要由程序員自己來控制和解決,這樣做的結(jié)果是,隨著程序內(nèi)部的邏輯關(guān)系變得越來越復(fù)雜,軟件開發(fā)小組對于駕馭復(fù)雜的功能模塊逐漸顯得力不從心,為了保證中斷相關(guān)處理的正確性和完整性,為了保證不同模塊之間對硬件資源的共享和互斥,為了保證系統(tǒng)能定期執(zhí)行各種任務(wù),軟件開發(fā)小組不得不編寫和維護(hù)一個(gè)復(fù)雜的專用操作系統(tǒng)和應(yīng)用程序的結(jié)合體,這樣做使得系統(tǒng)的開發(fā)和維護(hù)成本加大,也不利于系統(tǒng)的升級。所以在逐漸變得復(fù)雜的嵌入式系統(tǒng)中采用成熟的嵌入式操作系統(tǒng)成為更好的解決方案,如嵌入式Linux,VxWorks、pSOS、WinCE、DeltaOS、uCOS、TinyOS等等。

    為了實(shí)現(xiàn)一個(gè)支持各種硬件體系結(jié)構(gòu)、運(yùn)行穩(wěn)定高效的嵌入式操作系統(tǒng)需要付出很多的心血,嵌入式操作系統(tǒng)本身包含大量的代碼,而且這些代碼非常精巧、相應(yīng)的數(shù)據(jù)結(jié)構(gòu)非常復(fù)雜,即使是讀懂這些代碼也要花費(fèi)很多時(shí)間。比如最簡單的μCOS-II嵌入式操作系統(tǒng)的最小實(shí)現(xiàn)也需近千行代碼,而普通的嵌入式Linux內(nèi)核則有近百萬行代碼。在嵌入式開發(fā)中推薦采用一種通用的嵌入式操作系統(tǒng),而不是自己從頭編寫一個(gè)專用的嵌入式操作系統(tǒng),因?yàn)橥ㄋΦ那度胧讲僮飨到y(tǒng)經(jīng)過多年的發(fā)展一般來說穩(wěn)定性,性能、功能等各方面都會比自己重寫一個(gè)專用的操作系統(tǒng)要好,而且購買它們的成本也比自己從頭開發(fā)要低得多;另外,通用嵌入式操作系統(tǒng)一般都遵循操作系統(tǒng)接口標(biāo)準(zhǔn)——POSIX,使用這些系統(tǒng)調(diào)用接口進(jìn)行開發(fā)可以大大方便上層應(yīng)用軟件在不同嵌入式操作系統(tǒng)、不同操作系統(tǒng)版本之間的移植,系統(tǒng)升級換代方便、成本低、速度快。  總結(jié)來說采用嵌入式操作系統(tǒng)的原因是:解決多任務(wù)所帶來的復(fù)雜性;提高應(yīng)用程序的可移植性;降低系統(tǒng)開發(fā)和維護(hù)成本。

    
點(diǎn)擊打開新窗口



    嵌入式操作系統(tǒng)中的關(guān)鍵技術(shù)

    在一個(gè)完整的嵌入式系統(tǒng)中,嵌入式操作系統(tǒng)介于底層硬件和上層應(yīng)用程序之間,如圖1所示,它是整個(gè)系統(tǒng)中不可缺少的重要組成部分。

    嵌入式操作系統(tǒng)與傳統(tǒng)操作系統(tǒng)的基本功能是一致的,即:首先嵌入式操作系統(tǒng)必須能正確、高效地訪問和管理底層的各種硬件資源,很好地處理資源管理中的沖突;其次嵌入式操作系統(tǒng)要能為應(yīng)用程序提供功能完備、使用方便、與底層硬件細(xì)節(jié)無關(guān)的系統(tǒng)調(diào)用接口。

    但嵌入式操作系統(tǒng)也有其獨(dú)特的需求和技術(shù)特點(diǎn),主要區(qū)別是:

    1)許多嵌入式系統(tǒng)應(yīng)用有實(shí)時(shí)性要求,因此多數(shù)嵌入式操作系統(tǒng)都具備實(shí)時(shí)性的技術(shù)指標(biāo),能保障系統(tǒng)的實(shí)時(shí)響應(yīng)速度; 

    2)為適應(yīng)嵌入式系統(tǒng)計(jì)算資源的限制,嵌入式操作系統(tǒng)核心部分的體積必須盡可能的小;

    3)為了適應(yīng)各種應(yīng)用需求的變化,嵌入式操作系統(tǒng)還應(yīng)該具有可裁減性、可伸縮性、易移植性的特點(diǎn),讓開發(fā)人員可以根據(jù)需要對嵌入式操作系統(tǒng)進(jìn)行剪裁和移植;

    4)嵌入式操作系統(tǒng)往往是長期連續(xù)運(yùn)行的,因此要求要有很高的可靠性,不能“死機(jī)”;

    5)針對特定的應(yīng)用需求,嵌入式操作系統(tǒng)往往還要對某些模塊做特別的性能優(yōu)化和功能增強(qiáng)。

    實(shí)時(shí)性

    許多應(yīng)用場合對嵌入式系統(tǒng)有實(shí)時(shí)性的要求,比如汽車的安全氣囊要求能在一個(gè)極短的時(shí)間內(nèi)偵測到汽車碰撞事件的發(fā)生并控制打開安全氣囊。為了實(shí)現(xiàn)上述目標(biāo),一方面硬件的傳感器和安全氣囊要有足夠快的響應(yīng)速度,另一方面就是微處理器、嵌入式操作系統(tǒng)和相應(yīng)的事件響應(yīng)程序要能處理得足夠快。

    普通操作系統(tǒng)為了實(shí)現(xiàn)在多進(jìn)程并發(fā)執(zhí)行時(shí)進(jìn)行正確的資源管理,往往會對某段代碼通過關(guān)中斷的方式進(jìn)行保護(hù),而且由于多個(gè)進(jìn)程并發(fā)執(zhí)行后情況變得異常復(fù)雜,關(guān)中斷的時(shí)間可能被拖得很長且不確定,中斷的關(guān)閉就會使得實(shí)時(shí)請求不能通過中斷信號迅速告知CPU,因此系統(tǒng)可能出現(xiàn)的最長關(guān)中斷時(shí)間決定著操作系統(tǒng)的實(shí)時(shí)性的指標(biāo)。嵌入式操作系統(tǒng)為了提高實(shí)時(shí)性能,就必須盡量縮短操作系統(tǒng)代碼中的關(guān)閉中斷過程,并通過精心的設(shè)計(jì)確定關(guān)中斷的時(shí)間長短。這些設(shè)計(jì)包括:

    1)操作系統(tǒng)中的進(jìn)程必須是具有嚴(yán)格優(yōu)先級差異的,而且應(yīng)該是搶占式的操作系統(tǒng)內(nèi)核,即最高優(yōu)先級的進(jìn)程即使是最后出現(xiàn),也應(yīng)該最先獲得運(yùn)行,而且是無條件立即停止當(dāng)前進(jìn)程的運(yùn)行來切換到具有最高優(yōu)先級的進(jìn)程。如圖2所示。

    
點(diǎn)擊打開新窗口


    2)與實(shí)時(shí)處理相關(guān)的函數(shù)應(yīng)盡量都是可重入的,即函數(shù)中均使用局部變量。如果使用全局變量,為保證程序的正確性必須對全局變量的訪問加鎖,而這樣的保護(hù)措施有可能導(dǎo)致進(jìn)程堵塞,從而影響操作系統(tǒng)的實(shí)時(shí)性。

    3)高效的克服優(yōu)先級反轉(zhuǎn)問題,防止高優(yōu)先級的進(jìn)程由于等待某些被低優(yōu)先級進(jìn)程已占用的資源,從而被其他低優(yōu)先級的進(jìn)程搶先運(yùn)行,影響系統(tǒng)的實(shí)時(shí)性能。

    4)其他實(shí)時(shí)操作系統(tǒng)內(nèi)核的設(shè)計(jì),如解決周期性任務(wù)的調(diào)度和時(shí)間抖動(dòng)問題等。

    在實(shí)時(shí)性方面,VxWorks、uC/OS-II,QNX,國內(nèi)的DeltaOS等操作系統(tǒng)都具有較好的實(shí)時(shí)性能,其中VxWorks是性能穩(wěn)定的商用實(shí)時(shí)操作系統(tǒng),有較長的使用歷史和廣泛的用戶群;uC/OS-II操作系統(tǒng)是開放源碼的小型實(shí)驗(yàn)性操作系統(tǒng),實(shí)時(shí)性很強(qiáng),而且代碼簡單,便于分析、學(xué)習(xí)與改造,應(yīng)用范圍也很廣;DeltaOS是國內(nèi)自主研發(fā)的實(shí)時(shí)操作系統(tǒng),廣泛地應(yīng)用于工業(yè)、軍事等領(lǐng)域;普通的Linux操作系統(tǒng)在經(jīng)過實(shí)時(shí)性改造后也可以具有較強(qiáng)的實(shí)時(shí)性而成為實(shí)時(shí)操作系統(tǒng),如RTAI-Linux等。

    當(dāng)然,需要說明的是并不是所有的嵌入式系統(tǒng)都有實(shí)時(shí)性的要求,因此也并不是所有的嵌入式操作系統(tǒng)都必需是實(shí)時(shí)操作系統(tǒng),在智能手機(jī)、PDA等嵌入式應(yīng)用中就廣泛地采用了嵌入式Linux, WinCE等非實(shí)時(shí)的操作系統(tǒng)。

    小內(nèi)核、可配置與易移植

    嵌入式系統(tǒng)往往只具備較小的存儲資源,而且存儲器的大小往往與嵌入式系統(tǒng)的制造成本緊密相關(guān),因此必須采用盡量小的操作系統(tǒng)基本內(nèi)核,同時(shí)讓其他各種非必須的部分通過開發(fā)人員需要進(jìn)行配置并加入到操作系統(tǒng)的基本內(nèi)核中,這樣可以使得嵌入式操作系統(tǒng)內(nèi)核的尺寸保持得較小。嵌入式操作系統(tǒng)的尺寸包括靜態(tài)的尺寸(內(nèi)核二進(jìn)制文件占用非易失存儲器的大?。┖蛣?dòng)態(tài)的尺寸(系統(tǒng)運(yùn)行起來后占用內(nèi)存的大?。_@兩者都很重要,靜態(tài)尺寸反映了對Fla-sh等非易失存儲器的占用情況,動(dòng)態(tài)尺寸反映了對SDRAM等系統(tǒng)內(nèi)存的消耗情況。

    可配置性是嵌入式操作系統(tǒng)的又一個(gè)重要特征,也是區(qū)別于通用操作系統(tǒng)的一個(gè)重要特點(diǎn)。在嵌入式領(lǐng)域,底層硬件和應(yīng)用需求往往變化多端,有的系統(tǒng)需要存儲管理單元來在虛擬地址空間上運(yùn)行程序;有的嵌入式系統(tǒng)希望具有優(yōu)先級搶先調(diào)度機(jī)制;有的嵌入式系統(tǒng)希望實(shí)時(shí)時(shí)鐘的周期為20ms,有的希望是1ms;有的嵌入式系統(tǒng)的底層硬件有多級中斷,有的只有一級中斷等等。所有這些變化使一個(gè)嵌入式操作系統(tǒng)要想占據(jù)更大的市場份額,就必須自身具備可配置性,并且配置功能方便易用,使得同一個(gè)嵌入式操作系統(tǒng)的代碼在經(jīng)過較為方便的配置后,可以在特定的石更件平臺和應(yīng)用需求下獲得最佳的性能。eCos嵌入式操作系統(tǒng)是可配置性的典型代表,它在操作系統(tǒng)內(nèi)部設(shè)計(jì)了大量可以調(diào)節(jié)操作系統(tǒng)特性和性能的參數(shù),并為配置這些參數(shù)設(shè)計(jì)了專門的配置工具,該工具具有Windows和Linux等多種版本,可以在開發(fā)主機(jī)(Host機(jī))上方便地進(jìn)行配置,如圖3所示。除eCos操作系統(tǒng)外,其他嵌入式操作系統(tǒng)如OSKit、Lin-ux, VxWorks、WinCE等操作系統(tǒng)也具備不同程度的可配置性。

    可移植性是指同一個(gè)嵌入式操作系統(tǒng)在進(jìn)行適當(dāng)修改后可以在不同的硬件平臺上成功運(yùn)行。由于移植的目的是希望在不同的底層硬件平臺(或者說是不同的嵌入式處理器)上運(yùn)行,因此嵌入式操作系統(tǒng)為了獲得良好的可移植性,一般都將移植時(shí)一需要修改的代碼集中在少數(shù)幾個(gè)與硬件操作相關(guān)的C程序或匯編程序中,或者將相關(guān)代碼獨(dú)立成外設(shè)驅(qū)動(dòng)程序,以方便系統(tǒng)開發(fā)人員的移植工作,比如嵌入式操作系統(tǒng)中提到的硬-件抽象層(HAL、板級支持包(BSP)等概念都是為加快移植工作效率而提出的;同時(shí)為方便移植,嵌入式操作系統(tǒng)的開發(fā)和維護(hù)團(tuán)隊(duì)還應(yīng)該提供完整的文檔來詳細(xì)說明移植的過程和步驟,幫助系統(tǒng)設(shè)計(jì)人員完成移植工作;此外雖然嵌入式處理器多種多樣,但同一系列的處理器還是非常相近的,通過提供盡可能多的已有硬件平臺上的移植結(jié)果,或者由系統(tǒng)開發(fā)人員在Internet上搜索盡可能多的已有工作成果,也是加快移植速度、提高嵌入式操作系統(tǒng)可移植性的有效途徑。

    可靠性

    任何軟件都有可能存在錯(cuò)誤,嵌入式操作系統(tǒng)也不例外。運(yùn)行在桌面上的操作系統(tǒng)有時(shí)會“死機(jī)”,使用者還可以通過手工重啟計(jì)算機(jī)來予以容忍,但是嵌入式系統(tǒng)往往要長期在無人值守的環(huán)境下運(yùn)行,甚至是常年運(yùn)行,因此對可靠性的要求就成為嵌入式操作系統(tǒng)的一個(gè)重要特點(diǎn)?,F(xiàn)在已有的一些嵌入式操作系統(tǒng),如嵌入式Linux, VxWorks、uC/OS等等都已經(jīng)經(jīng)過了多年應(yīng)用的考驗(yàn),也有無數(shù)的工程師對它們的代碼進(jìn)行了檢查,一般來說這些操作系統(tǒng)都是較為穩(wěn)定和安全的,以Linux內(nèi)核為例,有研究估計(jì)570萬行的Linux內(nèi)核源碼中約包含不到1000個(gè)程序設(shè)計(jì)錯(cuò)誤,錯(cuò)誤率為不到萬分之二。但是沒有任何方法可以證明它們是絕對安全可靠的,也許在普通應(yīng)用(如手機(jī)等消費(fèi)類電子產(chǎn)品)中這些系統(tǒng)還可以接受,但是在一些特殊應(yīng)用場合下,如軍用、醫(yī)用、核電站、航空航天、工業(yè)控制、汽車制動(dòng)等,系統(tǒng)的一個(gè)錯(cuò)誤就可能造成很大的損失,因此針對這些領(lǐng)域的需求,在嵌入式系統(tǒng)的設(shè)計(jì)中還應(yīng)該對操作系統(tǒng)內(nèi)核的代碼進(jìn)行詳細(xì)的檢查,并進(jìn)行大量的測試,保證嵌入式操作系統(tǒng)的可靠性。為實(shí)現(xiàn)這一目標(biāo),迄今為止還沒有行之有效的方法,而主要依靠設(shè)計(jì)人員的豐富經(jīng)驗(yàn)、認(rèn)真仔細(xì)的作風(fēng)、大量時(shí)間和人力成本的投入、廣泛實(shí)際應(yīng)用的檢驗(yàn)來實(shí)現(xiàn)。

    
點(diǎn)擊打開新窗口


    結(jié)語

    本文探討了嵌入式操作系統(tǒng)與通用的臺式計(jì)算機(jī)操作系統(tǒng)的異同,介紹了嵌入式操作系統(tǒng)所具備的特點(diǎn)。未來隨著嵌入式系統(tǒng)的應(yīng)用需求越來越多樣化、越來越復(fù)雜,嵌入式操作系統(tǒng)必將在上述這些特點(diǎn)上(如實(shí)時(shí)性、可配置性、可移植性等)越來越具有特色,分別適用于不同的嵌入式應(yīng)用需求,不斷加快嵌入式系統(tǒng)的開發(fā)周期,同時(shí)又能降低嵌入式系統(tǒng)的研發(fā)和生產(chǎn)成本。


評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉