當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]引言嵌入式Linux是指對(duì)Linux進(jìn)行剪裁后,將其固化在單片機(jī)或者存儲(chǔ)器中,應(yīng)用于特定場合的專用Linux系統(tǒng)。嵌入式系統(tǒng)要求實(shí)時(shí)性能高,但Linux為分時(shí)系統(tǒng)設(shè)計(jì)的操作系統(tǒng),盡

引言

嵌入式Linux是指對(duì)Linux進(jìn)行剪裁后,將其固化在單片機(jī)或者存儲(chǔ)器中,應(yīng)用于特定場合的專用Linux系統(tǒng)。嵌入式系統(tǒng)要求實(shí)時(shí)性能高,但Linux為分時(shí)系統(tǒng)設(shè)計(jì)的操作系統(tǒng),盡管最新的內(nèi)核在實(shí)時(shí)性能方面有所提高,但它仍然不是一個(gè)實(shí)時(shí)系統(tǒng),在很多場合不能滿足實(shí)時(shí)性要求。一般地,通過改造Linux的內(nèi)核以提高其實(shí)時(shí)性能有2種策略:一種是采用底層編程的方法對(duì)Linux內(nèi)核進(jìn)行修改(如調(diào)度算法、時(shí)鐘修改等),典型的系統(tǒng)有Kansas大學(xué)開發(fā)的KURT。文獻(xiàn)提出了搶占式內(nèi)核調(diào)度算法,容易引起內(nèi)核優(yōu)先級(jí)翻轉(zhuǎn),文獻(xiàn)針對(duì)非搶占式內(nèi)核,增加搶占點(diǎn),該方法需要優(yōu)秀的調(diào)度算法。另一種途徑是Linux的外部實(shí)時(shí)性擴(kuò)展,在原有Linux基礎(chǔ)上再設(shè)計(jì)一個(gè)用于專門處理實(shí)時(shí)進(jìn)程的內(nèi)核,典型的系統(tǒng)有RTLinux、 RTAI等。此方法的不足是RTLinux現(xiàn)在已經(jīng)停止了更新,目前的開源版本僅支持2.4內(nèi)核,RTAI的設(shè)計(jì)原理和RTLinux類似,也是一個(gè)實(shí)時(shí)性應(yīng)用接口。本文采用APIC時(shí)鐘修改的方法對(duì)Linux內(nèi)核進(jìn)行實(shí)時(shí)化改造,修改APIC中斷函數(shù),將APIC中斷和8254中斷排序,使得硬實(shí)時(shí)中斷的優(yōu)先級(jí)大于普通8254中斷。通過多組仿真實(shí)驗(yàn),驗(yàn)證了該改造方法是有效的。

1 嵌入式Linux的實(shí)時(shí)性分析

Linux設(shè)計(jì)的初衷是系統(tǒng)吞吐量的平衡,其內(nèi)核試圖通過一種公平分配的策略來實(shí)現(xiàn)各進(jìn)程平均地共享系統(tǒng)資源:

(1)內(nèi)核的不可搶占性:Linux的內(nèi)核在單處理器上不可搶占,當(dāng)一個(gè)任務(wù)進(jìn)入內(nèi)核態(tài)運(yùn)行時(shí),一個(gè)具有更高優(yōu)先級(jí)的進(jìn)程,只有等待處于核心態(tài)的系統(tǒng)調(diào)用返回后方能執(zhí)行,這將導(dǎo)致優(yōu)先級(jí)逆轉(zhuǎn)。

(2)進(jìn)程調(diào)度的不可搶占性:Linux作為一個(gè)分時(shí)系統(tǒng),采用多級(jí)反饋輪轉(zhuǎn)調(diào)度算法,它保證了每一個(gè)進(jìn)程都有一種調(diào)度策略,但是都放在同一個(gè)隊(duì)列中運(yùn)行,這也是Linux作為實(shí)時(shí)操作系統(tǒng)的一個(gè)弱點(diǎn)。圖1是Linux調(diào)度機(jī)制框圖。

(3)時(shí)鐘中斷的精度不高:Linux 2.4.X內(nèi)核的時(shí)鐘中斷周期為10 ms,時(shí)鐘粒度太過于粗糙,不能滿足實(shí)時(shí)性要求。

(4)Linux的虛擬存儲(chǔ)管理:Linux采用段和頁機(jī)制的虛擬存儲(chǔ)管理技術(shù),進(jìn)程在硬盤和內(nèi)存間的換入換出必然帶來額外的開銷,造成很大的延遲。

 

由此可見,要將Linux應(yīng)用于嵌入式系統(tǒng),必須對(duì)其進(jìn)行實(shí)時(shí)化改造,以適應(yīng)嵌入式領(lǐng)域要求。

2 基于時(shí)鐘修改的內(nèi)核改造方案

在單CPU系統(tǒng)中,與時(shí)間有關(guān)的活動(dòng)都是由8254時(shí)鐘芯片來驅(qū)動(dòng)的,8254產(chǎn)生0號(hào)中斷。直接修改內(nèi)核定時(shí)參數(shù)HZ的初值就可構(gòu)造細(xì)粒度定時(shí)器。這種方式實(shí)現(xiàn)起來很簡單,但是由此帶來頻繁的定時(shí)中斷使得系統(tǒng)的開銷很大,當(dāng)然隨著硬件速度的提高,這種開銷會(huì)逐步降低。

簡單地修改赫茲參數(shù)HZ進(jìn)行實(shí)時(shí)化的方法顯然并不可取。Linux 2.6內(nèi)核的時(shí)鐘粒度是1 ms,但仍然與嵌入式領(lǐng)域的實(shí)時(shí)化要求差距較遠(yuǎn),因此需要更高精度的時(shí)鐘。目前常見的修改時(shí)鐘系統(tǒng)達(dá)到實(shí)時(shí)化的方法都是從軟件層面著手,這方面己獲得較大進(jìn)展,但是從時(shí)鐘系統(tǒng)的硬件結(jié)構(gòu)分析并開展實(shí)時(shí)化工作也是一個(gè)值得注意的方向。本文利用先進(jìn)的APIC時(shí)鐘實(shí)現(xiàn)一個(gè)高精度時(shí)鐘系統(tǒng),提供了高精度的中斷響應(yīng),從而以較少的改動(dòng)獲得較高的實(shí)時(shí)性。

APIC以總線頻率工作,可立即執(zhí)行所有的定時(shí)器操作,目前x86都有片內(nèi)APIC,用戶可在單CPU內(nèi)使用APIC。APIC除了能提供高精度的時(shí)鐘外還具有一個(gè)重要的優(yōu)點(diǎn),是由于它位于片內(nèi),對(duì)其編程只需幾個(gè)CPU指令周期,而對(duì)IntelX86的8254存取需要若干慢速的ISA總線指令。

在100MHz的CPU系統(tǒng)中,處理一個(gè)中斷的時(shí)間不到10μs,因此高速CPU完全可在更短的時(shí)間內(nèi)處理更多的APIC中斷。理論上APIC可實(shí)現(xiàn)10 ns左右的系統(tǒng)時(shí)鐘,但實(shí)際上在處理中斷時(shí)要耗費(fèi)一些時(shí)間,因此中斷的響應(yīng)時(shí)間要大于10 ns。

APIC本身提供了中斷處理函數(shù)apic_timer_interrupt,該函數(shù)包括 Irq_enter(),Run_realtimer_queue()和irq_exit(),其中函數(shù)irq_ exit通常負(fù)責(zé)判斷當(dāng)前是否有8254產(chǎn)生的軟中斷存在,如果存在,就會(huì)觸發(fā)8254軟中斷,這樣會(huì)造成APIC硬中斷處理延遲。本文的思路就是修改 irq_exit,在其中將各軟中斷線程和硬中斷線程進(jìn)行排序,使APIC硬中斷的優(yōu)先級(jí)高于軟中斷,此時(shí)硬中斷線程得到優(yōu)先處理,從而提高內(nèi)核的實(shí)時(shí)性能。Irp_exit函數(shù)的核心代碼如下:

 

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

 

每個(gè)處理器時(shí)間片上能夠處理的中斷只有一個(gè),通過更新當(dāng)前任務(wù)時(shí)間片,使硬中斷在第一時(shí)間獲得CPU的響應(yīng),此時(shí)軟中斷將被屏蔽,這就保證了硬中斷能夠得到實(shí)時(shí)的響應(yīng)。

由于Linux采用8254完成時(shí)序分配,8254需要保留以保證系統(tǒng)的穩(wěn)定性。這樣的話,8254定時(shí)器和APIC必須共存,對(duì)于硬實(shí)時(shí)應(yīng)用,可采用 APIC時(shí)鐘進(jìn)行計(jì)時(shí)。在8254中斷過程中,如果產(chǎn)生APIC中斷,采用通過本文的方琺必須對(duì)優(yōu)先對(duì)APIC時(shí)鐘進(jìn)行響應(yīng),會(huì)出現(xiàn)8254中斷被搶占,此時(shí)上下文切換等操作可能導(dǎo)致不可預(yù)料的錯(cuò)誤。解決問題的方法可采取在APIC相應(yīng)中斷期間,關(guān)閉軟中斷,只有當(dāng)APIC中斷執(zhí)行完畢后,8254軟中斷才能夠被響應(yīng)。

3 實(shí)時(shí)性能測試與分析

實(shí)驗(yàn)條件1:CPU:PⅢ300 MHz,內(nèi)存為128 MB,硬盤為5 400轉(zhuǎn)的15 GB臺(tái)式機(jī)硬盤,操作系統(tǒng)為Fedora2.6.18內(nèi)核。環(huán)境一(vd-d1)采用原版內(nèi)核,環(huán)境二(vd-d2)采用改進(jìn)型內(nèi)核。測試方法為通過測試內(nèi)核的上、下文切換、內(nèi)存延遲及模擬外部中斷來評(píng)價(jià)改造前后的性能。統(tǒng)計(jì)測試結(jié)果。

 

從實(shí)驗(yàn)結(jié)果可知,在上、下文切換中I/0讀/寫和文件打開和關(guān)閉,改進(jìn)型內(nèi)核的實(shí)時(shí)性能都有明顯提高,模擬TCP通道子項(xiàng),改進(jìn)型內(nèi)核性能提高了約6倍,但在對(duì)中斷響應(yīng)要求不是很高的null call測試中,中斷響應(yīng)時(shí)間幾乎相同。改進(jìn)型內(nèi)核中斷響應(yīng)速度始終穩(wěn)定在微妙級(jí)。在處理器負(fù)荷較輕時(shí)原始內(nèi)核有著良好的內(nèi)存延遲,隨著處理器負(fù)荷的進(jìn)一步加重,原始內(nèi)核的內(nèi)存延遲急劇增加。在最差情況下,系統(tǒng)響應(yīng)速度較慢,延遲時(shí)間達(dá)到5μs。而改進(jìn)型內(nèi)核在處理器負(fù)荷變化時(shí),系統(tǒng)的響應(yīng)速度變化不明顯,而且中斷響應(yīng)速度始終穩(wěn)定在2μs以下,性能穩(wěn)定。[!--empirenews.page--]

實(shí)驗(yàn)條件2:采用改進(jìn)型內(nèi)核,環(huán)境一(vd-d2)CPU:PIII 300 MHz,環(huán)境二(vd-d3)CPU降頻為200 MHz(接近ARM9)。統(tǒng)計(jì)測試結(jié)果,獲得它們的文件系統(tǒng)延遲結(jié)果見圖4。圖4反映了同樣采用改進(jìn)型內(nèi)核,將CPU降頻前后,測試結(jié)果差距在10μs以內(nèi),可看出在文件系統(tǒng)延遲中,處理器頻率的較小差距對(duì)內(nèi)核的影響不大。如采用高主頻的處理器,實(shí)驗(yàn)結(jié)果差距較大。

 

4 結(jié)語

本文通過修改APIC時(shí)鐘,可顯著地改進(jìn)嵌入式系統(tǒng)的實(shí)時(shí)性能,通過對(duì)比試驗(yàn)可看出改進(jìn)型內(nèi)核具有良好的實(shí)時(shí)性能,滿足了系統(tǒng)實(shí)時(shí)性和穩(wěn)定性要求。本文方法使得嵌入式Linux系統(tǒng)在高實(shí)時(shí)性領(lǐng)域中得到實(shí)際的應(yīng)用。

本站聲明: 本文章由作者或相關(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)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(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)對(duì)環(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)閉