新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一種改進(jìn)嵌入式Linux操作系統(tǒng)實(shí)時(shí)性的新型方案

一種改進(jìn)嵌入式Linux操作系統(tǒng)實(shí)時(shí)性的新型方案

——
作者:作者:崔珂 中國(guó)科學(xué)院研究生院 陳偉 中國(guó)科學(xué)技術(shù)大學(xué) 時(shí)間:2007-01-26 來(lái)源:《電子查詢(xún)網(wǎng)》 收藏

對(duì)嵌入式linux進(jìn)行實(shí)時(shí)性改進(jìn)是嵌入式操作系統(tǒng)領(lǐng)域的一個(gè)研究熱點(diǎn)。本文在分析了現(xiàn)有嵌入式操作系統(tǒng)實(shí)時(shí)性不足的基礎(chǔ)上,提出了一種新型的改進(jìn)方案(將rtai和uclinux相結(jié)合),并給出具體的工控應(yīng)用實(shí)例,進(jìn)一步對(duì)這種系統(tǒng)的功能進(jìn)行有效驗(yàn)證。
嵌入式實(shí)時(shí)linux架構(gòu)。
嵌入式linux以代碼開(kāi)放、價(jià)格低廉、功能強(qiáng)大又易于移植的特性正在被廣泛應(yīng)用,為嵌入式操作系統(tǒng)提供了一個(gè)極具吸引力的選擇。但許多實(shí)際應(yīng)用,譬如多媒體通信、生產(chǎn)過(guò)程控制、在線(xiàn)事務(wù)處理等等都要求對(duì)外部事件在限定的時(shí)間內(nèi)做出反應(yīng)。因而嵌入式系統(tǒng)實(shí)時(shí)性問(wèn)題越來(lái)越受到關(guān)注,對(duì)嵌入式linux進(jìn)行實(shí)時(shí)性改進(jìn)也成為嵌入式操作系統(tǒng)領(lǐng)域的一個(gè)研究熱點(diǎn)。

圖1:雙內(nèi)核實(shí)時(shí)系統(tǒng)

本文提出了一種基于uclinux的嵌入式實(shí)時(shí)操作系統(tǒng)方案。將rtai和uclinux相結(jié)合,既滿(mǎn)足了嵌入式應(yīng)用的需求,同時(shí)又保證了系統(tǒng)的硬實(shí)時(shí)性。此外,還有強(qiáng)大的網(wǎng)絡(luò)功能、易升級(jí)性、易移植性等優(yōu)點(diǎn)。最后結(jié)合基于這一操作系統(tǒng)開(kāi)發(fā)的重大裝備遠(yuǎn)程監(jiān)控系統(tǒng)的應(yīng)用案例,進(jìn)一步從功能和性能上對(duì)其進(jìn)行驗(yàn)證。

現(xiàn)有嵌入式操作系統(tǒng)應(yīng)用中存在的問(wèn)題

一個(gè)優(yōu)秀的嵌入式操作系統(tǒng)是嵌入式系統(tǒng)成功的關(guān)鍵。它除了具備一般操作系統(tǒng)最基本的功能,如任務(wù)調(diào)度、同步機(jī)制、中斷處理、文件功能等,還需要具有以下特點(diǎn):
1. 更好的硬件適應(yīng)性,也就是良好的移植性;
2. 占有更少的硬件資源;
3. 高可靠性;
4. 提供強(qiáng)大的網(wǎng)絡(luò)功能,支持tcp/ip協(xié)議及其他協(xié)議;
5. 有些應(yīng)用要求具有實(shí)時(shí)性能。

現(xiàn)有的嵌入式操作系統(tǒng)大致可分為商用型和免費(fèi)型兩類(lèi):商用型操作系統(tǒng)由于功能穩(wěn)定、可靠,有完善的技術(shù)支持和售后服務(wù),在嵌入式市場(chǎng)占有一定的份額。但它同時(shí)也存在價(jià)格昂貴、需要版權(quán)、源代碼不公開(kāi)等一系列問(wèn)題;免費(fèi)型操作系統(tǒng)(如linux)源碼公開(kāi),有價(jià)格方面的優(yōu)勢(shì),但在嚴(yán)格滿(mǎn)足嵌入式實(shí)時(shí)應(yīng)用需求方面還有欠缺。


圖2:實(shí)時(shí)內(nèi)核實(shí)現(xiàn)機(jī)理。

rtai對(duì)linux的實(shí)時(shí)性改進(jìn)

現(xiàn)有幾種針對(duì)linux的實(shí)時(shí)系統(tǒng)解決方案,實(shí)現(xiàn)方法主要包括兩種:
1)直接修改linux內(nèi)核、增加實(shí)時(shí)性,如:montavista;
2)在普通linux內(nèi)核之上增加實(shí)時(shí)模塊、雙內(nèi)核結(jié)構(gòu),如:rtlinux或rtai。

montavista可以滿(mǎn)足用戶(hù)的軟實(shí)時(shí)要求,rtlinux或rtai著重增強(qiáng)linux的硬實(shí)時(shí)特性。軟實(shí)時(shí)系統(tǒng)的時(shí)限是柔性靈活的,它可以容忍偶然的超時(shí)錯(cuò)誤。失敗造成的后果并不嚴(yán)重,僅僅是輕微地降低了系統(tǒng)的吞吐量。硬實(shí)時(shí)系統(tǒng)有一個(gè)剛性的、不可改變的時(shí)間限制,它不允許任何超出時(shí)限的錯(cuò)誤。超時(shí)錯(cuò)誤會(huì)帶來(lái)?yè)p害甚至導(dǎo)致系統(tǒng)失敗、或者導(dǎo)致系統(tǒng)不能實(shí)現(xiàn)它的預(yù)期目標(biāo)。

rtai采用雙內(nèi)核方法,不直接使用linux的任何功能,而是把需要高度時(shí)間精度的工作寫(xiě)成一個(gè)驅(qū)動(dòng)程序的形式,然后直接用pc時(shí)序芯片所產(chǎn)生的中斷調(diào)用這個(gè)驅(qū)動(dòng)程序。rtai與nmt rt-linux的最大不同之處在于,它在linux上定義了一組實(shí)時(shí)硬件抽象層(rthal)。rthal將rtai需要在linux中修改的部分定義成一組程序界面,rtai只使用這組界面和linux溝通。這樣做的好處在于,用戶(hù)可以將直接修改的linux核心程序代碼減至最小,這有可能使得將rthal移植到新版linux的工作量減至最低。

但是,rtai雖然滿(mǎn)足了硬實(shí)時(shí)性要求,卻沒(méi)有被裁減為足夠小且適用于嵌入式系統(tǒng)。

rtai+uclinux的實(shí)時(shí)方案

uclinux是為嵌入式應(yīng)用設(shè)計(jì)的,它本身并沒(méi)有更多地關(guān)注實(shí)時(shí)問(wèn)題。uclinux經(jīng)過(guò)小型化改造,形成了一個(gè)高度優(yōu)化、代碼緊湊的嵌入式linux,并保留了linux大多數(shù)的優(yōu)點(diǎn)。它專(zhuān)門(mén)針對(duì)無(wú)mmu的cpu,去除了普通linux內(nèi)核中的虛擬內(nèi)存管理部分。更重要的是,uclinux提供了完整的tcp/ip協(xié)議棧,并支持大量其他的網(wǎng)絡(luò)協(xié)議,為嵌入式系統(tǒng)提供了強(qiáng)大的網(wǎng)絡(luò)支持。

而從前面的分析可以看出,rtai是基于普通linux內(nèi)核,相對(duì)于嵌入式應(yīng)用其內(nèi)核過(guò)于龐大;而uclinux本身并沒(méi)有更多地關(guān)注實(shí)時(shí)問(wèn)題。因此,可以將rtai和uclinux相結(jié)合,采用雙內(nèi)核的設(shè)計(jì)方案,既滿(mǎn)足了嵌入式應(yīng)用的需求,又保證了系統(tǒng)的硬實(shí)時(shí)性。

1.硬件抽象層


圖3:系統(tǒng)中斷處理流程圖

系統(tǒng)的實(shí)現(xiàn)基礎(chǔ)是硬件抽象層,通過(guò)硬件抽象層進(jìn)行硬件管理,把基本內(nèi)核和實(shí)時(shí)內(nèi)核結(jié)合在一起,其中一個(gè)內(nèi)核的改變,不會(huì)影響另一個(gè)內(nèi)核的執(zhí)行。

硬件抽象層定義了本系統(tǒng)同硬件之間的抽象接口,主要用來(lái)截取硬件中斷,并且依據(jù)實(shí)時(shí)內(nèi)核調(diào)度器的需求,重定向?yàn)榛緝?nèi)核任務(wù)或是實(shí)時(shí)任務(wù)。rthal包含一個(gè)關(guān)鍵的組件:中斷描述符表(idt,interrupt descriptor table),它定義了一套指針用來(lái)處理中斷例程。rthal本身定義了一個(gè)結(jié)構(gòu),使得基本內(nèi)核中斷處理函數(shù)能夠很容易地被實(shí)時(shí)處理函數(shù)所替代。這樣,當(dāng)實(shí)時(shí)內(nèi)核通過(guò)rthal激活后,新的idt表為合法。在以上控制下,基本內(nèi)核作為實(shí)時(shí)系統(tǒng)的任務(wù)提供服務(wù)。

2.雙內(nèi)核結(jié)構(gòu)

雙內(nèi)核實(shí)時(shí)系統(tǒng)的總體結(jié)構(gòu)模型如圖1所示,主要包含了基本內(nèi)核、實(shí)時(shí)內(nèi)核、硬件抽象層、硬件部分。

其中基本內(nèi)核(uclinux)和實(shí)時(shí)內(nèi)核(rtai)分別處理非實(shí)時(shí)和實(shí)時(shí)任務(wù)的調(diào)度和執(zhí)行,而實(shí)時(shí)任務(wù)和非實(shí)時(shí)任務(wù)之間信息的交換要通過(guò)管道(fifo)或共享內(nèi)存(mbuff)來(lái)實(shí)現(xiàn)。當(dāng)實(shí)時(shí)任務(wù)運(yùn)行時(shí),基本內(nèi)核被硬件抽象層屏蔽。即實(shí)時(shí)內(nèi)核將基本內(nèi)核作為優(yōu)先級(jí)最低的一個(gè)任務(wù)來(lái)運(yùn)行,只有在沒(méi)有實(shí)時(shí)任務(wù)運(yùn)行的時(shí)候才予以調(diào)度。

3.實(shí)時(shí)內(nèi)核動(dòng)態(tài)加載

嵌入式實(shí)時(shí)linux的實(shí)時(shí)內(nèi)核是動(dòng)態(tài)加載的。實(shí)時(shí)任務(wù)被激活前,實(shí)時(shí)內(nèi)核并沒(méi)有啟動(dòng),基本內(nèi)核通過(guò)rthal透明訪(fǎng)問(wèn)硬件,就像rthal不存在一樣。當(dāng)實(shí)時(shí)任務(wù)被激活時(shí),rthal結(jié)構(gòu)發(fā)生變化,基本內(nèi)核被實(shí)時(shí)內(nèi)核接管,圖2表明了實(shí)時(shí)內(nèi)核啟動(dòng)前后,系統(tǒng)發(fā)生的變化。

4.調(diào)度處理

當(dāng)中斷到來(lái)時(shí),實(shí)時(shí)內(nèi)核判斷它是基本內(nèi)核中斷還是屬于實(shí)時(shí)中斷,分別進(jìn)行處理。若是基本內(nèi)核中斷,如果當(dāng)前有實(shí)時(shí)任務(wù)正在運(yùn)行,則只是設(shè)置一下中斷標(biāo)志位,懸掛此中斷,如果沒(méi)有實(shí)時(shí)任務(wù)運(yùn)行,則調(diào)用基本內(nèi)核的中斷處理程序;如果此中斷是實(shí)時(shí)中斷,就直接調(diào)用相對(duì)應(yīng)的實(shí)時(shí)中斷處理程序。注意,實(shí)時(shí)中斷可以搶先基本內(nèi)核任務(wù)的執(zhí)行。系統(tǒng)的中斷處理流程如圖3所示。

應(yīng)用案例

工業(yè)控制是嵌入式實(shí)時(shí)操作系統(tǒng)的傳統(tǒng)應(yīng)用領(lǐng)域,需要嚴(yán)格的實(shí)時(shí)處理功能、高可靠性和良好的開(kāi)放性,對(duì)開(kāi)發(fā)環(huán)境、可操作性、成本等也有特別的要求。因此本項(xiàng)研究以重大裝備的遠(yuǎn)程監(jiān)控系統(tǒng)作為其應(yīng)用之一。

1.嵌入式遠(yuǎn)程監(jiān)控系統(tǒng)結(jié)構(gòu)

應(yīng)用針對(duì)工業(yè)生產(chǎn)中使用的大型設(shè)備在連續(xù)運(yùn)轉(zhuǎn)狀態(tài)下的遠(yuǎn)程監(jiān)控問(wèn)題,研究用于重大裝備遠(yuǎn)程監(jiān)控的嵌入式裝置。系統(tǒng)主要包括輸入/輸出模塊(netio)和輸入/輸出上位模塊(netweb),前者用于實(shí)現(xiàn)現(xiàn)場(chǎng)數(shù)據(jù)的采集(輸入),或用于現(xiàn)場(chǎng)裝置的控制(輸出),后者集成了web功能,使得用戶(hù)可以通過(guò)互聯(lián)網(wǎng)對(duì)輸入/輸出模塊進(jìn)行訪(fǎng)問(wèn)。兩類(lèi)模塊通過(guò)網(wǎng)絡(luò)相連接,在本系統(tǒng)中為通過(guò)串行485總線(xiàn)。嵌入式遠(yuǎn)程監(jiān)控系統(tǒng)結(jié)構(gòu)如圖4所示。

2.netweb對(duì)嵌入式linux的功能驗(yàn)證


圖4:嵌入式遠(yuǎn)程監(jiān)控體系結(jié)構(gòu)

netweb的開(kāi)發(fā)基于前面介紹的嵌入式實(shí)時(shí)linux操作系統(tǒng)。特殊的雙內(nèi)核操作系統(tǒng)結(jié)構(gòu)決定了應(yīng)用開(kāi)發(fā)的特殊性。 1)任務(wù)管理功能

系統(tǒng)中的任務(wù)可以分為實(shí)時(shí)性任務(wù)和非實(shí)時(shí)性任務(wù),實(shí)時(shí)任務(wù)包括實(shí)時(shí)數(shù)據(jù)采集、處理等方面,這部分的功能要在實(shí)時(shí)內(nèi)核rtai之上進(jìn)行實(shí)現(xiàn);另外,非實(shí)時(shí)任務(wù)主要包括數(shù)據(jù)存儲(chǔ)、遠(yuǎn)程通訊的實(shí)現(xiàn),這部分功能要在基本內(nèi)核uclinux之上實(shí)現(xiàn)。

嵌入式實(shí)時(shí)linux將實(shí)時(shí)任務(wù)與非實(shí)時(shí)任務(wù)分開(kāi)管理,實(shí)施不同的調(diào)度策略和任務(wù)間通信方式,至于實(shí)時(shí)任務(wù)與非實(shí)時(shí)任務(wù)之間的通信可以通過(guò)實(shí)時(shí)的fifo或共享內(nèi)存實(shí)現(xiàn)。這樣的功能使應(yīng)用的編寫(xiě)簡(jiǎn)潔清晰、功能明確、調(diào)度靈活,方便了用戶(hù)。

2)網(wǎng)絡(luò)功能

嵌入式實(shí)時(shí)linux實(shí)現(xiàn)了嵌入式互聯(lián)網(wǎng)技術(shù),將web服務(wù)器引入到現(xiàn)場(chǎng)測(cè)試和控制設(shè)備中,在相應(yīng)的硬件平臺(tái)和軟件系統(tǒng)的支持下,使傳統(tǒng)的測(cè)試和控制設(shè)備轉(zhuǎn)變?yōu)榫邆淞艘詔cp/ip為底層通信協(xié)議,web技術(shù)為核心的基于互聯(lián)網(wǎng)的網(wǎng)絡(luò)測(cè)試和控制設(shè)備。

嵌入式web與傳統(tǒng)web應(yīng)用相比,簡(jiǎn)化了系統(tǒng)結(jié)構(gòu),將信息采集和信息發(fā)布都集成到現(xiàn)場(chǎng)的測(cè)控設(shè)備中。由于有了標(biāo)準(zhǔn)的接口形式和通信協(xié)議,內(nèi)嵌于設(shè)備的web服務(wù)器可以向任何接入它所在網(wǎng)絡(luò)的合法用戶(hù)提供統(tǒng)一的基于瀏覽器方式的操作和控制界面,瀏覽器成了設(shè)備的前端控制板。

3)實(shí)時(shí)性

嵌入式實(shí)時(shí)linux是硬實(shí)時(shí)的嵌入式操作系統(tǒng)。當(dāng)中斷到來(lái)時(shí),若是基本內(nèi)核中斷,如果當(dāng)前有實(shí)時(shí)任務(wù)正在運(yùn)行,則只是設(shè)置一下中斷標(biāo)志位,懸掛此中斷;如果此中斷是實(shí)時(shí)中斷,就直接調(diào)用相對(duì)應(yīng)的實(shí)時(shí)中斷處理程序。這樣的調(diào)度機(jī)制可以保證遠(yuǎn)程監(jiān)控系統(tǒng)中實(shí)時(shí)任務(wù)在確定的時(shí)間限度內(nèi)完成,為系統(tǒng)故障的實(shí)時(shí)預(yù)報(bào)、診斷、控制提供了強(qiáng)有力的支持。

此外,系統(tǒng)還從時(shí)間管理、內(nèi)存管理、中斷管理、同步、互斥管理以及設(shè)備管理等方面對(duì)這一操作系統(tǒng)的功能進(jìn)行評(píng)估驗(yàn)證。

本文小結(jié)

盡管將linux進(jìn)行嵌入式實(shí)時(shí)性改進(jìn)的方案很多,但是采用rtai+uclinux的還未見(jiàn)到成型的產(chǎn)品。這一方案既符合嵌入式系統(tǒng)的需求,又達(dá)到硬實(shí)時(shí)性標(biāo)準(zhǔn),同時(shí)還有強(qiáng)大的網(wǎng)絡(luò)功能、易升級(jí)性、易移植性等優(yōu)點(diǎn)。 同時(shí),在其上進(jìn)行應(yīng)用編程時(shí)實(shí)時(shí)任務(wù)(基于rtai)和非實(shí)時(shí)任務(wù)(基于uclinux)是分開(kāi)編寫(xiě)的,清晰簡(jiǎn)潔,但由于用戶(hù)需要直接在內(nèi)核空間編程,從系統(tǒng)的安全性角度存在很大隱患。希望可以通過(guò)進(jìn)一步討論研究使其更加完善。

   


關(guān)鍵詞:

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉