當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]針對嵌入式Linux實(shí)時(shí)化技術(shù)的討論

 引言

  Linux支持PowerPC、MIPS、ARM、DSP等多種嵌入式處理器,逐漸被用于多種關(guān)鍵性場合。其中實(shí)時(shí)多媒體處理、工業(yè)控制、汽車電子等特定應(yīng)用對Linux提出了強(qiáng)實(shí)時(shí)性需求。Linux提供了一些實(shí)時(shí)擴(kuò)展,但需要進(jìn)行實(shí)時(shí)性改造。本文針對嵌入式Linux實(shí)時(shí)化技術(shù)中的一些關(guān)鍵問題進(jìn)行了討論,如Linux內(nèi)核時(shí)延,實(shí)時(shí)化主流技術(shù)方案及其評(píng)價(jià)等。

  Linux內(nèi)核時(shí)延

  主流Linux雖然部分滿足POSIX 1003.1b實(shí)時(shí)擴(kuò)展標(biāo)準(zhǔn),但還不完全是一個(gè)實(shí)時(shí)操作系統(tǒng),主要表現(xiàn)為:

  ● 任務(wù)調(diào)度與內(nèi)核搶占

  2.6版本內(nèi)核添加了許多搶占點(diǎn),使進(jìn)程執(zhí)行在內(nèi)核代碼時(shí)也可被搶占。為支持內(nèi)核代碼可搶占,在2.6版內(nèi)核中通過采用禁用中斷的自旋鎖來保護(hù)臨界區(qū)。但此時(shí)如果有低優(yōu)先級(jí)進(jìn)程在臨界區(qū)中執(zhí)行,高優(yōu)先級(jí)進(jìn)程即使不訪問低優(yōu)先級(jí)所保護(hù)的臨界區(qū),也必須等待低優(yōu)先級(jí)進(jìn)程退出臨界區(qū)。

  ● 中斷延遲

  在主流Linux內(nèi)核設(shè)計(jì)中,中斷可以搶占最高優(yōu)先級(jí)的任務(wù),使高優(yōu)先級(jí)任務(wù)被阻塞的最長時(shí)間不確定。而且,由于內(nèi)核為保護(hù)臨界區(qū)需要關(guān)閉中斷,更加增長了高優(yōu)先級(jí)任務(wù)阻塞時(shí)間。

  ● 時(shí)鐘精度

  Linux通過硬件時(shí)鐘編程來產(chǎn)生毫秒級(jí)周期性時(shí)鐘中斷進(jìn)行內(nèi)核時(shí)間管理,無法滿足實(shí)時(shí)系統(tǒng)較高精度的調(diào)度要求。內(nèi)核定時(shí)器精度同樣也受限于時(shí)鐘中斷,無法滿足實(shí)時(shí)系統(tǒng)的高精度定時(shí)需求。

  ● 其他延遲

  此外,Linux內(nèi)核其他子系統(tǒng)也存在多種延遲。比如為了增強(qiáng)內(nèi)核性能和減少內(nèi)存消耗,Linux僅在需要時(shí)裝載程序地址空間相應(yīng)的內(nèi)存頁。當(dāng)被存取內(nèi)容(如代碼)不在RAM中則內(nèi)存管理單元(MMU)將產(chǎn)生頁表錯(cuò)誤(Page-Fault)觸發(fā)頁面裝載,造成實(shí)時(shí)進(jìn)程響應(yīng)時(shí)間不確定。

  Linux實(shí)時(shí)化技術(shù)發(fā)展

  主流Linux內(nèi)核1.x、2.2.x和2.4.x版本的Linux內(nèi)核無搶占支持,直到2.6版本的Linux內(nèi)核才支持可搶占內(nèi)核,支持臨界區(qū)外的內(nèi)核搶占和可搶占的大內(nèi)核鎖。在此基礎(chǔ)上,Linux采用了下列兩類實(shí)時(shí)化技術(shù)。

 ● 雙內(nèi)核方式

  Linux內(nèi)核實(shí)時(shí)化雙內(nèi)核方式以RTLinux、RTAI和Xenomai等為典型代表。其中RTLinux實(shí)現(xiàn)了一個(gè)微內(nèi)核實(shí)時(shí)操作系統(tǒng)支持底層任務(wù)管理、中斷服務(wù)例程、底層任務(wù)通信隊(duì)列等。普通Linux作為實(shí)時(shí)操作系統(tǒng)的最低優(yōu)先級(jí)任務(wù),Linux下的任務(wù)通過FIFO命名管道和實(shí)時(shí)任務(wù)進(jìn)行通信,如圖1所示。

  當(dāng)Linux要關(guān)閉中斷時(shí),實(shí)時(shí)微內(nèi)核會(huì)截取并記錄這個(gè)請求,通過軟件來模擬中斷控制器,而沒有真正關(guān)閉硬件中斷,避免了由于關(guān)中斷所造成的響應(yīng)延遲。RT-Linux將系統(tǒng)實(shí)時(shí)時(shí)鐘設(shè)置為單次觸發(fā)模式,提供微秒級(jí)的時(shí)鐘精度。RTAI類似RTLinux的實(shí)現(xiàn)方式,不同之處在于它修改了體系結(jié)構(gòu)相關(guān)代碼,形成一個(gè)實(shí)時(shí)硬件抽象層(RTHAL),使其實(shí)時(shí)任務(wù)能在任何時(shí)刻中斷普通Linux任務(wù),兩者之間通過非阻塞隊(duì)列進(jìn)行通訊。RTAI將直接修改Linux內(nèi)核的代碼減至最少,具有更好的可移植性。Xenomai以RTAI為基礎(chǔ),也稱RTAI /Fusion。采用了Adeos微內(nèi)核替代RTAI的硬件抽象層。其特色還在于模仿了傳統(tǒng)RTOS的API接口,推動(dòng)傳統(tǒng)RTOS應(yīng)用在GNU/Linux下的移植。類似還有基于Fiasco微內(nèi)核的L4Linux等開源項(xiàng)目。

  ● 內(nèi)核補(bǔ)丁方式

  雙內(nèi)核實(shí)時(shí)方案下,實(shí)時(shí)任務(wù)需要按照微內(nèi)核實(shí)時(shí)操作系統(tǒng)提供的另外一套API進(jìn)行設(shè)計(jì)。而內(nèi)核補(bǔ)丁方式則不改變Linux的API,原有應(yīng)用程序可在實(shí)時(shí)化后的操作系統(tǒng)上運(yùn)行,典型的有早期研究性的Kurt-Linux和Red-Linux,商業(yè)版本的MontaVista、TimeSys 和Wind River Linux,以及現(xiàn)階段Ingo Monlnar等人開發(fā)的實(shí)時(shí)搶占補(bǔ)丁內(nèi)核等[3]。

  Kurt-Linux是第一個(gè)基于普通Linux的實(shí)時(shí)操作系統(tǒng)。通過正常態(tài)、實(shí)時(shí)態(tài)和混合態(tài)進(jìn)行實(shí)時(shí)和非實(shí)時(shí)任務(wù)的劃分。RED-Linux通過任務(wù)多種屬性和調(diào)度程序,可以實(shí)現(xiàn)多種調(diào)度算法。采用軟件模擬中斷管理,并在內(nèi)核插入了許多搶占點(diǎn),提高了系統(tǒng)調(diào)度精度。

  MontaVista Linux在低延遲補(bǔ)丁以及可搶占內(nèi)核補(bǔ)丁基礎(chǔ)上[4],通過開發(fā)內(nèi)核O(1)實(shí)時(shí)調(diào)度程序并對可搶占內(nèi)核進(jìn)行了改進(jìn)和測試,Linux 2.4內(nèi)核時(shí)代,MontaVista Linux 作為商業(yè)成熟產(chǎn)品在實(shí)時(shí)性上有較強(qiáng)的優(yōu)勢。TimeSys Linux通過內(nèi)核模塊的方式也提供了高精度時(shí)鐘、優(yōu)先級(jí)繼承mutex等支持。

  2.6版本的主流內(nèi)核吸收了以上技術(shù),支持CONFIG_PREEMPT_NONE,CONFIG_PREEMPT_VOLUNTARY和CONFIG_PREEMPT等多種配置選項(xiàng)。分別適合于計(jì)算型任務(wù)系統(tǒng),桌面用戶系統(tǒng)和毫秒級(jí)延遲嵌入式系統(tǒng)。2005年,針對2.6內(nèi)核MontaVista推出了實(shí)時(shí)Linux計(jì)劃,推進(jìn)了Linux內(nèi)核實(shí)時(shí)化進(jìn)程。隨后Ingo Molnar發(fā)布了新的實(shí)時(shí)搶占補(bǔ)丁,并逐漸成為Linux內(nèi)核實(shí)時(shí)主流技術(shù),也為包括MontaVista Linux,Wind River Linux采用和補(bǔ)充,本文后續(xù)內(nèi)容要涉及實(shí)時(shí)搶占補(bǔ)丁。
[!--empirenews.page--][!--empirenews.page--]

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉