基于Linux的嵌入式實(shí)時(shí)操作系統(tǒng)的研究(2)

2012年05月30日 09:40 來(lái)源:互聯(lián)網(wǎng) 作者:秩名 我要評(píng)論(0)

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

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

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

  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)用程序端*/

  讀取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)。現(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ō)顯得很龐大。現(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ā)展。

上一頁(yè)12