在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 如何進(jìn)行基于Linux的嵌入式RTOS研究?

      如何進(jìn)行基于Linux的嵌入式RTOS研究?

      作者: 時間:2018-08-06 來源:網(wǎng)絡(luò) 收藏

      1.引言

      本文引用地址:http://www.biyoush.com/article/201808/385564.htm

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

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

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

      2.的特點(diǎn)

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

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

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

      (2)開放的源代碼

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

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

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

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

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

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

      RT-Linux將系統(tǒng)和設(shè)備的初始化交給了Linux完成,對動態(tài)資源的申請和分配也交給了Linux。RT-Linux使用靜態(tài)分配的內(nèi)存來完成硬實(shí)時任務(wù),因為在沒有內(nèi)存資源的時候,被阻塞的線程不可能具有硬實(shí)時能力。

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

      Linux的內(nèi)核體系采用的是Monolithic,在這種體系結(jié)構(gòu)中,內(nèi)核的所有部分都集中在一起,而且所有的部件在一起編譯連接。這樣雖然能使系統(tǒng)的各部分直接溝通,有效地縮短任務(wù)之間的切換時間,提高了系統(tǒng)的響應(yīng)速度,實(shí)時性好并提高了CPU的利用率,但在系統(tǒng)比較大的時候體積也比較大,與嵌入式系統(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)核的體積,同時也極大地方便了整個系統(tǒng)的升級、維護(hù)和移植,因此更能滿足嵌入式系統(tǒng)的特點(diǎn)需要。為此,為使嵌入式Linux的應(yīng)用更加廣泛,可以考慮將Linux目前的Monolithic內(nèi)核結(jié)構(gòu)中的部分結(jié)構(gòu)改造成MicroKernel體系結(jié)構(gòu)。通過這種折中辦法,可以使得到的Linux既具有很好的實(shí)時性,又能滿足嵌入式系統(tǒng)體積小的要求。

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

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

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

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

      (2) RTLinux的編程方法示例

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

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

      對于每500個周期

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

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

      循環(huán)

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

      /*應(yīng)用程序端*/

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

      在屏幕上打印出來

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


      上一頁 1 2 下一頁

      關(guān)鍵詞: Linux 嵌入式 RTOS

      評論


      相關(guān)推薦

      技術(shù)專區(qū)

      關(guān)閉