嵌入式Linux的實時性分析
出處:songfei002 發(fā)布于:2011-09-03 15:51:11
引言
嵌入式 Linux是以Linux為基礎(chǔ)的嵌入式作業(yè)系統(tǒng),它被廣泛應(yīng)用在移動電話、個人數(shù)字助理(PDA)、媒體播放器、消費性電子產(chǎn)品以及航空航天等領(lǐng)域中……
嵌入式系統(tǒng)出現(xiàn)于60年代晚期,它初被用于控制機電電話交換機,如今已被廣泛的應(yīng)用于工業(yè)制造、過程控制、通訊、儀器、儀表、汽車、船舶、航空、航天、軍事裝備、消費類產(chǎn)品等眾多領(lǐng)域。計算機系統(tǒng)CPU,每年在范圍內(nèi)的產(chǎn)量大概在二十億顆左右,其中超過80%應(yīng)用于各類專用性很強的嵌入式系統(tǒng)。一般的說,凡是帶有微處理器的專用軟硬件系統(tǒng)都可以稱為嵌入式系統(tǒng)。
本文采用APIC時鐘修改的方法對Linux內(nèi)核進行實時化改造,修改APIC中斷函數(shù),將APIC中斷和8254中斷排序,使得硬實時中斷的優(yōu)先級大于普通8254中斷。通過多組仿真實驗,驗證了該改造方法是有效的。
1 嵌入式Linux的實時性分析
Linux設(shè)計的初衷是系統(tǒng)吞吐量的平衡,其內(nèi)核試圖通過一種公平分配的策略來實現(xiàn)各進程平均地共享系統(tǒng)資源:
?。?)內(nèi)核的不可搶占性:Linux的內(nèi)核在單處理器上不可搶占,當(dāng)一個任務(wù)進入內(nèi)核態(tài)運行時,一個具有更高優(yōu)先級的進程,只有等待處于態(tài)的系統(tǒng)調(diào)用返回后方能執(zhí)行,這將導(dǎo)致優(yōu)先級逆轉(zhuǎn)。
?。?)進程調(diào)度的不可搶占性:Linux作為一個分時系統(tǒng),采用多級反饋輪轉(zhuǎn)調(diào)度算法,它保證了每一個進程都有一種調(diào)度策略,但是都放在同一個隊列中運行,這也是Linux作為實時操作系統(tǒng)的一個弱點。圖1是Linux調(diào)度機制框圖。
?。?)時鐘中斷的不高:Linux 2.4.X內(nèi)核的時鐘中斷周期為10 ms,時鐘粒度太過于粗糙,不能滿足實時性要求。
?。?)Linux的虛擬存儲管理:Linux采用段和頁機制的虛擬存儲管理技術(shù),進程在硬盤和內(nèi)存間的換入換出必然帶來額外的開銷,造成很大的延遲。

由此可見,要將Linux應(yīng)用于嵌入式系統(tǒng),必須對其進行實時化改造,以適應(yīng)嵌入式領(lǐng)域要求。
2 嵌入式Linux系統(tǒng)特點應(yīng)用
就是利用Linux其自身的許多特點,把它應(yīng)用到嵌入式系統(tǒng)里。
Linux做嵌入式的優(yōu)勢,首先,Linux是開放源代碼的,不存在黑箱技術(shù),遍布的眾多Linux愛好者又是Linux開發(fā)者的強大技術(shù)支持;其次,Linux的內(nèi)核小、效率高,內(nèi)核的更新速度很快,linux是可以定制的,其系統(tǒng)內(nèi)核只有約134KB。第三,Linux是的OS,在價格上極具競爭力。 Linux還有著嵌入式操作系統(tǒng)所需要的很多特色,突出的就是Linux適應(yīng)于多種CPU和多種硬件平臺,是一個跨平臺的系統(tǒng)。到目前為止,它可以支持二三十種CPU。而且性能穩(wěn)定,裁剪性很好,開發(fā)和使用都很容易。很多CPU包括家電業(yè)芯片,都開始做Linux的平臺移植工作。移植的速度遠遠超過Java的開發(fā)環(huán)境。也就是說,如果今天用Linux環(huán)境開發(fā)產(chǎn)品,那么將來換CPU就不會遇到困擾。同時,Linux內(nèi)核的結(jié)構(gòu)在網(wǎng)絡(luò)方面是非常完整的,Linux對網(wǎng)絡(luò)中常用的TCP/IP協(xié)議有完備的支持。提供了包括十兆、百兆、千兆的以太網(wǎng)絡(luò),以及無線網(wǎng)絡(luò),Toker ring(令牌環(huán)網(wǎng))、光纖甚至衛(wèi)星的支持。所以Linux很適于做信息家電的開發(fā)。
還有使用Linux為的是來開發(fā)無線連接產(chǎn)品的開發(fā)者越來越多。Linux在快速增長的無線連接應(yīng)用主場中有一個非常重要的優(yōu)勢,就是有足夠快的開發(fā)速度。這是因為LInux有很多工具,并且Linux為眾多程序員所熟悉。因此,我們要在嵌入式系統(tǒng)中使用Linux操作系統(tǒng)。
3 基于時鐘修改的內(nèi)核改造方案
在單CPU系統(tǒng)中,與時間有關(guān)的活動都是由8254時鐘芯片來驅(qū)動的,8254產(chǎn)生0號中斷。直接修改內(nèi)核定時參數(shù)HZ的初值就可構(gòu)造細粒度定時器。這種方式實現(xiàn)起來很簡單,但是由此帶來頻繁的定時中斷使得系統(tǒng)的開銷很大,當(dāng)然隨著硬件速度的提高,這種開銷會逐步降低。
Linux是的自由電腦操作系統(tǒng)內(nèi)核。它是一個用C語言和匯編語言寫成,符合POSIX標(biāo)準(zhǔn)的類Unix操作系統(tǒng)。Linux早是由芬蘭黑客林納斯。托瓦茲(Linus B. Torvalds)為嘗試在英特爾x86架構(gòu)上提供自由的類Unix操作系統(tǒng)而開發(fā)的。該計劃開始于1991年,林納斯·托瓦茲當(dāng)時在Usenet新聞組comp.os.minix登載帖子,這份著名的帖子標(biāo)示著Linux計劃的正式開始。
簡單地修改赫茲參數(shù)HZ進行實時化的方法顯然并不可取。Linux 2.6內(nèi)核的時鐘粒度是1 ms,但仍然與嵌入式領(lǐng)域的實時化要求差距較遠,因此需要更高的時鐘。本文利用先進的APIC時鐘實現(xiàn)一個高時鐘系統(tǒng),提供了高的中斷響應(yīng),從而以較少的改動獲得較高的實時性。
APIC 是裝置的擴充組合用來驅(qū)動 Interrupt 控制器。在目前的建置中,系統(tǒng)的每一個部份都是經(jīng)由 APIC Bus 連接的。"本機 APIC" 為系統(tǒng)的一部份,負責(zé)傳遞 Interrupt 至指定的處理器;舉例來說,當(dāng)一臺機器上有三個處理器則它必須相對的要有三個本機 APIC。自 1994 年的 Pentium P54c 開始Intel 已經(jīng)將本機 APIC 建置在它們的處理器中。實際建置了 Intel 處理器的電腦就已經(jīng)包含了 APIC 系統(tǒng)的部份。
系統(tǒng)中另一個重要的部份為 I/O APIC。系統(tǒng)中多可擁有 8 個 I/O APIC。它們會收集來自 I/O 裝置的 Interrupt 訊號且在當(dāng)那些裝置需要 interrupt 時傳送訊息至本機 APIC。每個 I/O APIC 有一個專有的 interrupt 輸入 (或 IRQ) 號碼。Intel 過去與目前的 I/O APIC 通常有 24 個輸入 -- 其它的可能有多逹 64 個。而且有些機器擁有數(shù)個 I/O APIC,每一個分別有自己的輸入號碼,加起來一臺機器上會有上百個 IRQ 可供裝置 Interrupt 使用。
APIC本身提供了中斷處理函數(shù)apic_timer_interrupt,該函數(shù)包括Irq_enter(),Run_realtimer_queue()和irq_exit(),其中函數(shù)irq_ exit通常負責(zé)判斷當(dāng)前是否有8254產(chǎn)生的軟中斷存在,如果存在,就會觸發(fā)8254軟中斷,這樣會造成APIC硬中斷處理延遲。本文的思路就是修改irq_exit,在其中將各軟中斷線程和硬中斷線程進行排序,使APIC硬中斷的優(yōu)先級高于軟中斷,此時硬中斷線程得到優(yōu)先處理,從而提高內(nèi)核的實時性能。Irp_exit函數(shù)的代碼如下:

上面調(diào)用invoke_softirq()函數(shù)執(zhí)行軟中斷使本文修改的重點,修改中斷向量表,對向量表中所有軟中斷和實時中斷進行排序,提前硬中斷的時間片,這樣使當(dāng)前處于pending狀態(tài)的軟中斷被屏蔽和懸掛,直到硬中斷處理完成為止。將invoke_softirq()函數(shù)修改為:

每個處理器時間片上能夠處理的中斷只有一個,通過更新當(dāng)前任務(wù)時間片,使硬中斷在時間獲得CPU的響應(yīng),此時軟中斷將被屏蔽,這就保證了硬中斷能夠得到實時的響應(yīng)。
由于Linux采用8254完成時序分配,8254需要保留以保證系統(tǒng)的穩(wěn)定性。這樣的話,8254定時器和APIC必須共存,對于硬實時應(yīng)用,可采用APIC時鐘進行計時。在8254中斷過程中,如果產(chǎn)生APIC中斷,采用通過本文的方琺必須對優(yōu)先對APIC時鐘進行響應(yīng),會出現(xiàn)8254中斷被搶占,此時上下文切換等操作可能導(dǎo)致不可預(yù)料的錯誤。解決問題的方法可采取在APIC相應(yīng)中斷期間,關(guān)閉軟中斷,只有當(dāng)APIC中斷執(zhí)行完畢后,8254軟中斷才能夠被響應(yīng)。
4 實時性能測試與分析
實驗條件1:CPU:PⅢ300 MHz,內(nèi)存為128 MB,硬盤為5 400轉(zhuǎn)的15 GB臺式機硬盤,操作系統(tǒng)為Fedora2.6.18內(nèi)核。環(huán)境一(vd-d1)采用原版內(nèi)核,環(huán)境二(vd-d2)采用改進型內(nèi)核。測試方法為通過測試內(nèi)核的上、下文切換、內(nèi)存延遲及模擬外部中斷來評價改造前后的性能。統(tǒng)計測試結(jié)果,如圖2、圖3所示。

從實驗結(jié)果可知,在上、下文切換中I/0讀/寫和文件打開和關(guān)閉,改進型內(nèi)核的實時性能都有明顯提高,模擬TCP通道子項,改進型內(nèi)核性能提高了約6倍,但在對中斷響應(yīng)要求不是很高的null call測試中,隨著處理器負荷的進一步加重,原始內(nèi)核的內(nèi)存延遲急劇增加。在差情況下,系統(tǒng)響應(yīng)速度較慢,延遲時間達到5μs。而改進型內(nèi)核在處理器負荷變化時,系統(tǒng)的響應(yīng)速度變化不明顯,而且中斷響應(yīng)速度始終穩(wěn)定在2μs以下,性能穩(wěn)定。
實驗條件2:采用改進型內(nèi)核,環(huán)境一(vd-d2)CPU:PIII 300 MHz,環(huán)境二(vd-d3)CPU降頻為200 MHz(接近ARM9)。統(tǒng)計測試結(jié)果,獲得它們的文件系統(tǒng)延遲結(jié)果見圖4。圖4反映了同樣采用改進型內(nèi)核,將CPU降頻前后,測試結(jié)果差距在10μs以內(nèi),可看出在文件系統(tǒng)延遲中,處理器頻率的較小差距對內(nèi)核的影響不大。如采用高主頻的處理器,實驗結(jié)果差距較大。

5 結(jié)語
本文通過修改APIC時鐘,可顯著地改進嵌入式系統(tǒng)的實時性能,通過對比試驗可看出改進型內(nèi)核具有良好的實時性能,滿足了系統(tǒng)實時性和穩(wěn)定性要求。本文方法使得嵌入式Linux系統(tǒng)在高實時性領(lǐng)域中得到實際的應(yīng)用。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- ARM技術(shù)架構(gòu)與應(yīng)用開發(fā)實踐指南2026/1/6 10:40:19
- 嵌入式實時操作系統(tǒng)(RTOS)選型與移植技術(shù)指南2025/12/31 10:42:31
- 工業(yè)嵌入式系統(tǒng):通信接口技術(shù)選型與抗干擾設(shè)計實踐2025/12/15 14:36:53
- 深入解析嵌入式 OPENAMP 框架:開啟異核通信新時代2025/7/22 16:27:29
- 一文快速了解OPENWRT基礎(chǔ)知識2025/7/14 16:59:04
- 高速PCB信號完整性(SI)設(shè)計核心實操規(guī)范
- 鎖相環(huán)(PLL)中的環(huán)路濾波器:參數(shù)計算與穩(wěn)定性分析
- MOSFET反向恢復(fù)特性對系統(tǒng)的影響
- 電源IC在惡劣環(huán)境中的防護設(shè)計
- 連接器耐腐蝕性能測試方法
- PCB電磁兼容(EMC)設(shè)計與干擾抑制核心實操規(guī)范
- 用于相位噪聲測量的低通濾波器設(shè)計與本振凈化技術(shù)
- MOSFET在高頻開關(guān)中的EMI問題
- 電源IC在便攜式設(shè)備中的設(shè)計要點
- 連接器結(jié)構(gòu)設(shè)計常見問題分析









