<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于RTAI的嵌入式Linux硬實(shí)時(shí)性能的研究與實(shí)現

基于RTAI的嵌入式Linux硬實(shí)時(shí)性能的研究與實(shí)現

作者: 時(shí)間:2012-05-17 來(lái)源:網(wǎng)絡(luò ) 收藏

0 引言

Linux是一種能運行于多種平臺、源代碼公開(kāi)、免費、功能強大、遵守POSIX標準、與Unix兼容的操作系統。隨著(zhù)嵌入式系統的不斷發(fā)展和應用,操作系統也在各方面得到了廣泛的應用。但是,作為通用操作系統的Linux,要應用在嵌入式領(lǐng)域,需要作必要的改進(jìn)。在電能質(zhì)量監控等對實(shí)時(shí)性要求較高的領(lǐng)域,需要將最初按照分時(shí)系統目標設計的Linux改造成能支持性的操作系統。

uClinux操作系統是Linux操作系統的一個(gè)嵌入式變種,它作為一種優(yōu)秀的嵌入式操作系統具有很好的穩定性和優(yōu)異的網(wǎng)絡(luò )性能,但是它的實(shí)時(shí)性差,尤其不支持任務(wù)的特點(diǎn)卻極大地限制了其應用。本文利用對uClinux的實(shí)時(shí)性進(jìn)行了擴展,并應用于電能質(zhì)量監控實(shí)驗平臺,對系統改造前后的實(shí)時(shí)性能進(jìn)行了對比分析。

1 的實(shí)時(shí)性分析和擴展

實(shí)時(shí)系統分為兩類(lèi),分別為軟實(shí)時(shí)(Soft Real-Time)和(Hard Real-Time)。軟實(shí)時(shí)是統計意義上的實(shí)時(shí),并不能保證特定的任務(wù)在特定的時(shí)間內完成,即便是處理時(shí)間超過(guò)了截止時(shí)間,結果也是有意義的。而硬實(shí)時(shí)是時(shí)間要求必須嚴格保證的實(shí)時(shí),如果系統對某個(gè)實(shí)時(shí)任務(wù)的處理未能在某個(gè)截止時(shí)間開(kāi)始或者結束的話(huà),會(huì )產(chǎn)生不可預料的后果。因此,硬實(shí)時(shí)才是真正意義上的實(shí)時(shí)。Linux雖然也可采取基于優(yōu)先級的調度策略,并且也將進(jìn)程分為實(shí)時(shí)進(jìn)程和非實(shí)時(shí)進(jìn)程,但是Linux的以下幾點(diǎn)特征決定了其本身很難完成硬實(shí)時(shí)的任務(wù):

1)Linux的內核是不可搶占的。如果Linux的核心態(tài)進(jìn)程在運行時(shí),其他進(jìn)程不管優(yōu)先級多高都需要等待處于核心態(tài)的系統調用返回后才能執行。

2)為了保護臨界區資源,互斥的訪(fǎng)問(wèn)臨界區,Linux采用在臨界區操作時(shí)屏蔽中斷的方式,這抑制了系統及時(shí)響應外部操作的能力。

3)Linux內核(2.6版本以前)采用了較大時(shí)間粒度的定時(shí)器,時(shí)鐘中斷周期為10ms,加大了任務(wù)響應的延遲,無(wú)法滿(mǎn)足對時(shí)間精度要求苛刻的實(shí)時(shí)應用。

目前實(shí)現Linux系統的硬實(shí)性的方法,依據是否對Linux的內核進(jìn)行大規模修改,可以大致分為兩類(lèi):對內核進(jìn)行大規模修改的兼容內核方法和對內核進(jìn)行小規模改動(dòng)的雙內核方法。后者由于對內核改動(dòng)小,效果明顯且遵守GPL得到了更加廣泛的推廣。它在Linux內核之外,以可加載內核模塊(Loadable Kernel Module)的形式添加實(shí)時(shí)內核,并用該實(shí)時(shí)內核接管來(lái)自硬件的所有中斷,并依據是否是實(shí)時(shí)任務(wù)決定是否直接響應。這種方法的代表就是新墨西哥州立大學(xué)的FSM實(shí)驗室推出的RT-Linux和由意大利米蘭理工學(xué)院航天工程系發(fā)起的。

2 的實(shí)現機制

RTAI是實(shí)時(shí)應用接口Real Time Application Interface的縮寫(xiě)。它在Linux上定義了一組實(shí)時(shí)硬件抽象層RTHAL(Real Time Hardware Abstraction Layer),RTHAL將所有需要的Linux內部數據和函數的指針集合到一個(gè)rthal的結構中。Rthal結構用于截取Linux硬件操作,在雙內核結構工作時(shí),它們可以被RTAI重定向,以取代Linux中原有的函數;同時(shí)RTAI只是用此程序界面與Linux進(jìn)行溝通。通過(guò)這種方法就可以把對 Linux內核源碼的改動(dòng)程度降到最低,可以避免RT-Linux方案對Linux內核源碼改動(dòng)過(guò)大的問(wèn)題,便于在不同Linux版本之間的移植。

RTAI嚴格來(lái)說(shuō)只是一個(gè)具備了操作系統核心功能的實(shí)時(shí)的系統內核,它接管了所有的硬件資源,將Linux操作系統內核作為它的一個(gè)低優(yōu)先級的任務(wù)來(lái)運行。RTAI 是一個(gè)完全的占先式內核,它具備了實(shí)時(shí)操作系統的諸多特性,如實(shí)時(shí)的中斷響應,任務(wù)對事件的實(shí)時(shí)響應,細粒度的原子操作等。在RTAI/Linux雙內核結構下,實(shí)時(shí)性的任務(wù)在RTAI的調度下運行,非實(shí)時(shí)性和需要利用完善的操作系統功能的任務(wù)在Linux調度下運行。由于Linux操作系統在RTAI下具有的優(yōu)先級很低,當且僅當RTAI沒(méi)有實(shí)時(shí)任務(wù)調度時(shí),Linux才能夠得到運行。RTAI/Linux雙內核結構如圖1所示。

圖1 RTAI/Linux雙內核結構圖

Fig1 Architecture of the RTAI/Linux system

RTAI以L(fǎng)inux的內核模塊的形式運行,提供雙內核的實(shí)時(shí)服務(wù)。最基本的兩個(gè)模塊是rtai_module和 rtai_sched_module,另外還有三個(gè)增強功能的模塊rtai_fifos_module、rtai_shm_module和 rtai_lxrt_module。

rtai_module是一個(gè)核心模塊,RTHAL在這一模塊里實(shí)現,完成對硬件的接管。以關(guān)硬件中斷行為為例說(shuō)明,Linux系統中原有的關(guān)中斷函數#define _cli_asm_volatile_(“cli”:::”memory”)直接通過(guò)匯編語(yǔ)言對硬件進(jìn)行操作,而在rtai_module模塊中,Linux中的關(guān)中斷函數被替換為執行{processor[hard_cpu_id()].intr_flag = 0;}??梢?jiàn),Linux關(guān)中斷的執行只是改變了RTAI中的中斷標志位,并沒(méi)有直接對硬件進(jìn)行操作。


上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>