在嵌入式系統(tǒng)中應(yīng)用Linux深入探究
有些設(shè)計者不能夠準(zhǔn)確地分析出系統(tǒng)真正實時需求,很多情況下對實時的需求在1-5毫秒內(nèi)響應(yīng)就可以;大部分情況下,軟實時響應(yīng)足以滿足要求:WINDOWSS的 98Crashed_Yet在98%的時間內(nèi)可以在4每秒內(nèi)響應(yīng),如果時間是20秒,則總會響應(yīng)。那些軟實時性容易滿足。需要考慮的因素包括:上下文轉(zhuǎn)換時間、中斷延遲、任務(wù)的優(yōu)先級和任務(wù)調(diào)度方式。上下文轉(zhuǎn)換時間曾經(jīng)是實時性分析的重點,但是因為CPU速度大幅度提高,它不再是關(guān)鍵問題。
現(xiàn)在,嚴(yán)格要求的實時性任務(wù)的決定因素是中斷例程本身和內(nèi)核中的其他驅(qū)動程序有關(guān);而響應(yīng)延遲時間主要受中斷的優(yōu)先級和其他進程會暫時地關(guān)閉中斷響應(yīng)的影響。因此管理和驅(qū)動中斷的機制必須保證實時要求。
對于Intelx86處理器,實時擴充可以在Linux系統(tǒng)中很容易進行,RT-Linux就是很好的例子(見 http://www.rtlinux.org/)。它主要是把Linux的任務(wù)作為自己的一個任務(wù),因此實時性要求很高的任務(wù)不受非實時的 Linux的干擾,可以得到滿足。另外還提供了實時任務(wù)和Linux的基本核心和其他任務(wù)間的接口,這些接口是不需要很強的實時性。這種架構(gòu)為其他的嵌入式系統(tǒng)提供了一個參考。關(guān)鍵因素就是實時性的代碼和非實時代碼分開設(shè)計,而且實時應(yīng)用程序的處理方式和其他程序的處理方式差不多。
3.適合嵌入式系統(tǒng)的Linux
有一種觀點認(rèn)為:用戶不必直接干預(yù)機器的運行,即沒有用戶接口的應(yīng)用系統(tǒng)是嵌入式系統(tǒng)。其他的比如電梯控制系統(tǒng)應(yīng)該是嵌入式系統(tǒng),但是它需要人為控制。連接網(wǎng)絡(luò)需要監(jiān)視和控制網(wǎng)絡(luò)系統(tǒng)運行的系統(tǒng),仍然是嵌入式系統(tǒng);因此應(yīng)該根據(jù)系統(tǒng)的主要目的和功能來判定是否是嵌入式系統(tǒng)。
最小的嵌入式Linux系統(tǒng)必須包括以下主要的要素:
1.啟動程序;
2.融合了內(nèi)存管理、進程管理和時間分批服務(wù)的核心;
3.初始化程序。
為了達到要求,而且為了保持最小系統(tǒng),需要添加以下要素:
硬件的驅(qū)動程序;
必須的應(yīng)用程序。
根據(jù)其他需要,你可能增加以下功能:
1.文件管理系統(tǒng)(在ROM或RAM中);
2.TCP/IP通訊協(xié)議;
3.磁盤。
4.選擇合適的硬件平臺選擇硬件平臺是一件很麻煩的事,受很多因素影響,比如公司的指導(dǎo)原則、個人偏見、過去產(chǎn)品的影響和消息不靈通等。費用是考慮的主要因素。提醒你考慮價格時不要只注意CPU的價錢,要對整個系統(tǒng)進行考慮。但是如果你是系統(tǒng)設(shè)計師,你必須把軟件的實時性和硬件結(jié)合起來考慮。首先考慮需要多快的CPU,然后把選擇三倍化的結(jié)果;因為在實際中應(yīng)用程序會使用一些cache(緩沖),所以理論上速度很快的CPU的實際速度會降低。其次考慮選擇多快的BUS(總線);如果可以包括其他的總線,比如PCI,就加上它。因為有時即使使用DMA方式傳輸,也會使快速CPU變得象蝸牛一般。選用集成外設(shè)的CPU比較好,而且還可選用現(xiàn)成的外設(shè)驅(qū)動程序,大大減少調(diào)試工作,實際上有些芯片集成的功能并不是我們所需要的,所以也不要認(rèn)為凡是集成的都是好東西。
5.壓縮制作Linux系統(tǒng)對Linux的通常感覺是大,似乎不適合于嵌入式系統(tǒng)。事實并非如此。因為典型的發(fā)行Linux集成了很多桌面PC機需要而嵌入式系統(tǒng)并不需要的功能。首先,我們可以把核心(kernel)從其他任務(wù)中分離出來。標(biāo)準(zhǔn)的 Linux核心總是貯留在內(nèi)存中;當(dāng)需要應(yīng)用程序時,它把需要的程序從磁盤調(diào)入內(nèi)存運行。程序運行完畢,內(nèi)存清空,卸載程序。在嵌入式系統(tǒng)中,經(jīng)常沒有磁盤。目前有兩種辦法來處理沒有磁盤的情況。對于比較簡單的系統(tǒng),核心(kernel)和應(yīng)用程序同時貯留在內(nèi)存,當(dāng)系統(tǒng)啟動時,就啟動應(yīng)用程序。這種方式和以前的嵌入式系統(tǒng)一樣工作。Linux系統(tǒng)也支持這種方式。第二種方式是,考慮到Linux有l(wèi)oad(裝載)和 unload(卸載)程序的能力,嵌入式系統(tǒng)也可以使用這一特點,來節(jié)約內(nèi)存。假如有一個典型的嵌入式系統(tǒng):包括8到16M的 FlashMemory和8到16M的RAM;可以在FlashMemory上建立文件系統(tǒng),使用Flash的驅(qū)動程序來驅(qū)動 FlashMemory上文件系統(tǒng)工作。另外,也可以使用FlashDidsk,其中有一個例子是M-system的 DiskOnChip,它可以支持達160M的FlashDisk。把使用的應(yīng)用程序文件存放在Flash文件系統(tǒng)上,根據(jù)需要調(diào)入程序。 linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論