當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于Linux的嵌入式實(shí)時(shí)操作系統(tǒng)的研究方案

1.引言

從上世紀(jì)八十年代開(kāi)始,開(kāi)始出現(xiàn)各種各樣的商用嵌入式操作系統(tǒng),這些操作系統(tǒng)大部分都是為專用或通用系統(tǒng)而開(kāi)發(fā),如VxWorks、Windows CE、pSOS、Palm OS、OS-9、LynxOS、QNX、LYNX 等,它們的優(yōu)點(diǎn)是為用戶提供良好的開(kāi)發(fā)環(huán)境,提高了應(yīng)用系統(tǒng)的開(kāi)發(fā)效率,運(yùn)行效率高、實(shí)時(shí)性好,缺點(diǎn)是價(jià)格昂貴且源代碼封閉。這就不僅影響了開(kāi)發(fā)者的積極性,而且使得整個(gè)產(chǎn)品的成本急劇上升。[1]

結(jié)合國(guó)內(nèi)實(shí)情,嵌入式系統(tǒng)需要的是一套高度簡(jiǎn)練、界面友好、質(zhì)量可靠、應(yīng)用廣泛、易開(kāi)發(fā)、多任務(wù)、價(jià)格低廉的實(shí)時(shí)操作系統(tǒng)。

在嵌入式產(chǎn)品的開(kāi)發(fā)中,有必要尋找一種廉價(jià)的嵌入式實(shí)時(shí)操作系統(tǒng),以降低產(chǎn)品的開(kāi)發(fā)成本和系統(tǒng)復(fù)雜度。由于Linux的具備的諸多優(yōu)點(diǎn),對(duì)Linux進(jìn)行適當(dāng)?shù)母脑旌笞鳛榱畠r(jià)的嵌入式實(shí)時(shí)操作系統(tǒng)是一個(gè)值得探討的、具有實(shí)際意義的問(wèn)題。

2.Linux的特點(diǎn)

Linux是個(gè)與生俱來(lái)的網(wǎng)絡(luò)操作系統(tǒng),成熟而且穩(wěn)定。Linux是源代碼開(kāi)放軟件,不存在黑箱技術(shù),任何人都可以修改它,或者用它開(kāi)發(fā)自己的產(chǎn)品。Linux系統(tǒng)是可以定制的,系統(tǒng)內(nèi)核目前已經(jīng)可以做得很小。一個(gè)帶有中文系統(tǒng)及圖形化界面的核心程序也可以做到不足1MB,而且同樣穩(wěn)定。Linux作為一種可裁減的軟件平臺(tái)系統(tǒng),是發(fā)展嵌入式產(chǎn)品的絕佳資源,遍布全球的眾多Linux愛(ài)好者又能給予Linux開(kāi)發(fā)者強(qiáng)大的技術(shù)支持。因此,Linux作為廉價(jià)的嵌入式實(shí)時(shí)操作系統(tǒng)的選擇,是非常有發(fā)展前途的。[2][3]

(1)與硬件芯片的緊密結(jié)合

嵌入式Linux的一大特點(diǎn)是:與硬件芯片(如SOC等)的緊密結(jié)合。它不是一個(gè)純軟件的Linux系統(tǒng),而比一般操作系統(tǒng)更加接近于硬件。嵌入式Linux的進(jìn)一步發(fā)展,逐步地具備了嵌入式RTOS的一切特征:實(shí)時(shí)性及與嵌入式處理器的緊密結(jié)合。

(2)開(kāi)放的源代碼

嵌入式Linux的另一大特點(diǎn)是:代碼的開(kāi)放性。代碼的開(kāi)放性是與后PC時(shí)代的智能設(shè)備的多樣性相適應(yīng)的。代碼的開(kāi)放性主要體現(xiàn)在源代碼可獲得上,Linux代碼開(kāi)發(fā)就像是“集市式”開(kāi)發(fā),任意選擇并按自己的意愿整合出新的產(chǎn)品。

對(duì)于嵌入式Linux,事實(shí)上是把BIOS層的功能實(shí)現(xiàn)在Linux的driver層。目前,在Linux領(lǐng)域,已經(jīng)出現(xiàn)了專門(mén)為L(zhǎng)inux操作系統(tǒng)定制的自由軟件的BIOS代碼,并在多款主板上實(shí)現(xiàn)此類的BIOS層功能。

3.RT-Linux的實(shí)現(xiàn)機(jī)理

RT-Linux對(duì)Linux內(nèi)核進(jìn)行改造,將Linux內(nèi)核工作環(huán)境做了一些變化,如圖1所示:

 

 

從上圖可以看出,在Linux內(nèi)核和硬件中斷的地方,加上了一個(gè)RT-Linux內(nèi)核的控制。Linux的控制信號(hào)都要先交給RT-Linux內(nèi)核先進(jìn)行處理。在RT-Linux內(nèi)核中實(shí)現(xiàn)了一個(gè)虛擬中斷機(jī)制,Linux本身永遠(yuǎn)不能屏蔽中斷,它發(fā)出的中斷屏蔽信號(hào)和打開(kāi)中斷信號(hào)都修改成向RT-Linux發(fā)送一個(gè)信號(hào)。如在Linux里面使用“sti”和“cli”宏指令來(lái)屏蔽和使能中斷,是通過(guò)向x86處理器發(fā)送一個(gè)指令,而RT-Linux修改了這些宏指令,使得只是讓RT-Linux里面的某些標(biāo)記做了修改而已。對(duì)所有的中斷,分成Linux中斷和實(shí)時(shí)中斷兩類,如果RT-Linux內(nèi)核收到的中斷信號(hào)是普通Linux中斷,那就設(shè)置一個(gè)標(biāo)志位;如果是實(shí)時(shí)中斷,就繼續(xù)向硬件發(fā)出中斷。在RT Linux中執(zhí)行sti將中斷打開(kāi)之后,那些設(shè)置了標(biāo)志位表示的Linux中斷就繼續(xù)執(zhí)行。因此,cli并不能禁止RT Linux內(nèi)核的運(yùn)行,卻可以用來(lái)中斷Linux。Linux不能中斷自己,而RT-Linux可以。

RT-Linux的設(shè)計(jì)原則:在實(shí)時(shí)內(nèi)核模塊中的工作盡量少,如果能在Linux中完成而不影響實(shí)時(shí)性能的話,就盡量在Linux中完成。因此,RTLinux內(nèi)核盡量做的簡(jiǎn)單,在RT-Linux內(nèi)核中,不應(yīng)該等待資源,也不需要使用共享旋轉(zhuǎn)鎖(SpinLock),實(shí)時(shí)任務(wù)和Linux進(jìn)程間的通信也是非阻塞的,從來(lái)不用等待進(jìn)隊(duì)列和出隊(duì)列的數(shù)據(jù)。

RT-Linux將系統(tǒng)和設(shè)備的初始化交給了Linux完成,對(duì)動(dòng)態(tài)資源的申請(qǐng)和分配也交給了Linux。RT-Linux使用靜態(tài)分配的內(nèi)存來(lái)完成硬實(shí)時(shí)任務(wù),因?yàn)樵跊](méi)有內(nèi)存資源的時(shí)候,被阻塞的線程不可能具有硬實(shí)時(shí)能力。

4.改變Linux內(nèi)核的體系結(jié)構(gòu)

Linux的內(nèi)核體系采用的是Monolithic,在這種體系結(jié)構(gòu)中,內(nèi)核的所有部分都集中在一起,而且所有的部件在一起編譯連接。這樣雖然能使系統(tǒng)的各部分直接溝通,有效地縮短任務(wù)之間的切換時(shí)間,提高了系統(tǒng)的響應(yīng)速度,實(shí)時(shí)性好并提高了CPU的利用率,但在系統(tǒng)比較大的時(shí)候體積也比較大,與嵌入式系統(tǒng)容量小、資源有限的特點(diǎn)不符合。而另外一種內(nèi)核體系結(jié)構(gòu)MicroKernel, 在內(nèi)核中只包括了一些基本的內(nèi)核功能如創(chuàng)建和刪除任務(wù)、任務(wù)調(diào)度、內(nèi)存管理和中斷處理等部分,而文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議棧等部分都是在用戶內(nèi)存空間運(yùn)行。這種結(jié)構(gòu)雖然執(zhí)行效率不如Monolithic內(nèi)核,但大大減小了內(nèi)核的體積,同時(shí)也極大地方便了整個(gè)系統(tǒng)的升級(jí)、維護(hù)和移植,因此更能滿足嵌入式系統(tǒng)的特點(diǎn)需要。為此,為使嵌入式Linux的應(yīng)用更加廣泛,可以考慮將Linux目前的Monolithic內(nèi)核結(jié)構(gòu)中的部分結(jié)構(gòu)改造成MicroKernel體系結(jié)構(gòu)。通過(guò)這種折中辦法,可以使得到的Linux既具有很好的實(shí)時(shí)性,又能滿足嵌入式系統(tǒng)體積小的要求。

5.RT-Linux的編程接口(API)及編程方法示例

(1)RTLinux的編程和控制接口(API)。

通過(guò)使用RTLinux的編程和控制接口(API),可以提供對(duì)實(shí)時(shí)任務(wù)的創(chuàng)建和刪除、任務(wù)的調(diào)度和控制等功能。API函數(shù)主要有如下幾類:

1)中斷控制API函數(shù);2)時(shí)鐘控制和獲取;3)線程的創(chuàng)建和刪除;4)POSIX方式的驅(qū)動(dòng)接口;5)FIFO設(shè)備驅(qū)動(dòng)程序;6)串口驅(qū)動(dòng)程序的API函數(shù);7)mbuff驅(qū)動(dòng)API函數(shù);8)浮點(diǎn)運(yùn)算API函數(shù)。

(2) RTLinux的編程方法示例

該程序的原理是測(cè)出在RT-Linux中進(jìn)行實(shí)時(shí)任務(wù)調(diào)度過(guò)程中調(diào)度需要花費(fèi)時(shí)間的多少。算法如下:

/*實(shí)時(shí)任務(wù)端*/

對(duì)于每500個(gè)周期

等待上一個(gè)周期的任務(wù)完成

獲得當(dāng)前時(shí)間和上次周期任務(wù)完成時(shí)間的差,就是調(diào)度的時(shí)間

循環(huán)

向FIFO輸出500個(gè)周期中完成的最大值和最小值。

/*應(yīng)用程序端*/[!--empirenews.page--]

讀取FIFO設(shè)備,獲取最大值和最小值

在屏幕上打印出來(lái)

這種編程方法是進(jìn)行RT Linux編程的通用方法,將一個(gè)任務(wù)分為實(shí)時(shí)部分和非實(shí)時(shí)部分,在實(shí)時(shí)部分完成的是實(shí)時(shí)任務(wù);在非實(shí)時(shí)部分主要是完成顯示等不需要實(shí)時(shí)的功能。程序的體系結(jié)構(gòu)如下所示:

 

 

限于篇幅,程序代碼略。

6.開(kāi)發(fā)嵌入式RT-Linux的幾個(gè)問(wèn)題

(1)Linux的移植。如果Linux不支持選用的平臺(tái),就需要把Linux內(nèi)核中與硬件平臺(tái)相關(guān)的部分改寫(xiě),使之支持所選用的平臺(tái)。

(2)內(nèi)核的裁剪。嵌入式產(chǎn)品的可用資源比較少,所以它的內(nèi)核相對(duì)嵌入式系統(tǒng)來(lái)說(shuō)就顯得有點(diǎn)大,需要進(jìn)行剪裁到可利用的大小。

(3)桌面系統(tǒng)?,F(xiàn)代的操作系統(tǒng)如果沒(méi)有一個(gè)友好的界面是沒(méi)有說(shuō)服力的。現(xiàn)在的臺(tái)式機(jī)Linux系統(tǒng)使用了傳統(tǒng)的X-Window系統(tǒng)的模式—Client/Server結(jié)構(gòu)。和硬件有關(guān)的部分即是Server端,實(shí)現(xiàn)一個(gè)標(biāo)準(zhǔn)的顯示接口;應(yīng)用程序通過(guò)對(duì)Server的服務(wù)請(qǐng)求,實(shí)現(xiàn)程序的顯示。在此之上,實(shí)現(xiàn)窗口的管理功能。但X Window對(duì)于嵌入式系統(tǒng)來(lái)說(shuō)顯得很龐大?,F(xiàn)在國(guó)內(nèi)有MiniGUI,國(guó)外有MicroWindow,都在致力于嵌入式Linux GUI的開(kāi)發(fā)。適用于嵌入式Linux上的X-Window的工作也在進(jìn)行。

(4)驅(qū)動(dòng)程序的開(kāi)發(fā)。Linux內(nèi)核更新的很快,許多最新的硬件驅(qū)動(dòng)很快就被支持。但嵌入式系統(tǒng)應(yīng)用領(lǐng)域是多種多樣的,所選用的硬件設(shè)備也不同,并且不可能都有Linux的驅(qū)動(dòng)程序,因此,設(shè)備驅(qū)動(dòng)程序的開(kāi)發(fā)也是重要的工作。

7.結(jié)束語(yǔ)

嵌入式系統(tǒng)的開(kāi)發(fā)是剪裁與移植相結(jié)合的過(guò)程,開(kāi)發(fā)者自己編寫(xiě)的代碼并不多。筆者在智能交通監(jiān)控系統(tǒng)的設(shè)計(jì)中,通過(guò)對(duì)Linux適當(dāng)?shù)募舨茫x擇了RT-linux作為系統(tǒng)的開(kāi)發(fā)平臺(tái),對(duì)于提高系統(tǒng)的開(kāi)發(fā)效率和降低開(kāi)發(fā)成本取得較好的實(shí)效。當(dāng)然,嵌入式系統(tǒng)的發(fā)展對(duì)嵌入式操作系統(tǒng)提出了更高的要求,因此,對(duì)嵌入式操作系統(tǒng)的結(jié)構(gòu)、設(shè)計(jì)、用戶界面等諸多方面進(jìn)行深入研究,將有助于嵌入式系統(tǒng)的應(yīng)用和發(fā)展。

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

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

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

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

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

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(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ì)日本游戲市場(chǎng)的投資。

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

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

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

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

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

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

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

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

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

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

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