Linux 系統(tǒng)的嵌式應(yīng)用
盡管Linux不是為嵌入式系統(tǒng)設(shè)計(jì)的,特別不是為實(shí)時(shí)系統(tǒng)設(shè)計(jì)的,但是,由于它的模塊化結(jié)構(gòu)使其具有良好的裁剪性、豐富的資源和源代碼開放的特點(diǎn),所以還是有人把它應(yīng)用在嵌人式系統(tǒng)中,并獲得了一定的成功。多年來,人們一直在對(duì)Linux進(jìn)行修改和改造,并且形成了許多可用于嵌入式實(shí)時(shí)系統(tǒng)的Linux版本。本節(jié)重點(diǎn)介紹一些Linux的嵌人式修改版本,以使讀者了解Linux在嵌入式應(yīng)用特別是實(shí)時(shí)應(yīng)用時(shí)其弱點(diǎn)之所在以及人們的解決方法,從而更深刻地認(rèn)識(shí)和了解嵌入式實(shí)時(shí)操作系統(tǒng)的本質(zhì)及實(shí)現(xiàn)方法。
1.實(shí)現(xiàn)實(shí)時(shí)Linux的思路
在解決Linux系統(tǒng)實(shí)時(shí)性問題的思想方法方面,有如下四個(gè)思路:
●提高時(shí)鐘精度,解決中斷和調(diào)度延時(shí)問題;
●解決在Linux內(nèi)核不允許調(diào)度的問題;
●提供對(duì)于實(shí)時(shí)多媒體應(yīng)用的支持,包括引入新穎的調(diào)度算法(網(wǎng)絡(luò)包調(diào)度、進(jìn)程調(diào)度和磁盤調(diào)度);
●引入新穎的調(diào)度框架以及資源管理思想,以更好地支持網(wǎng)絡(luò)系統(tǒng)中的QoS要求。
2. pCLinux
pCLinux是一種由Linux 2.0內(nèi)核發(fā)展而來的嵌入式Linux版本,是專為沒有MMU的微處理器(如ARM7TDMI、Coldfire等)設(shè)計(jì)的嵌入式Linux操作系統(tǒng)。
pCLinux與Linux基本相同,不同的只是對(duì)Linux的內(nèi)存管理和進(jìn)程管理部分進(jìn)行了改寫.以滿足無MMU處理器的要求,因?yàn)槟壳按蠖鄶?shù)嵌入式系統(tǒng)不需要MMU,或者說無法使用MMU。
盡管大多數(shù)內(nèi)核源代碼都被重寫,使得pCLinux的內(nèi)核比Linux 2.0的內(nèi)核要小得多,但ptCLinux成功地保留了Linux操作系統(tǒng)良好昀穩(wěn)定性、優(yōu)異的網(wǎng)絡(luò)功能以及優(yōu)秀的文件系統(tǒng)支持等主要優(yōu)點(diǎn)。
ptCLinux系統(tǒng)多采用romfs文件系統(tǒng),它是一種相對(duì)簡單、占用空間較少的文件系統(tǒng)??臻g的節(jié)約來自于兩方面:首先內(nèi)核支持romfs文件系統(tǒng)比支持Ext2文件系統(tǒng)需要更少的代 碼;其次romfs文件系統(tǒng)相對(duì)簡單,在建立文件系統(tǒng)超級(jí)塊(Superblock)時(shí)需要更少的存儲(chǔ)空間。romfs是只讀的文件系統(tǒng),禁止寫操作,因此系統(tǒng)同時(shí)需要虛擬盤(RAMDISK)支持臨時(shí) 文件和數(shù)據(jù)文件的存儲(chǔ)。
隨著技術(shù)的發(fā)展,近年來日志文件系統(tǒng)在ptCLinux系統(tǒng)上得到了較多的應(yīng)用,其中以支 持NOR FLASH的JFFS、JFFS2文件系統(tǒng)和支持NAND FLASH的YAFFS最為流行。這 些文件系統(tǒng)都支持掉電文件保護(hù),同時(shí)支持標(biāo)準(zhǔn)的MTD驅(qū)動(dòng)。
從目標(biāo)系統(tǒng)開發(fā)者的角度來看,創(chuàng)建子進(jìn)程的函數(shù)vfork()是ptCLinux與標(biāo)準(zhǔn)Linux應(yīng)用程序之間最重要的不同之處,只有對(duì)vfork()與fork()兩個(gè)函數(shù)的差異有了詳細(xì)的了解,才能順利地完成從Linux到ptCLinux的程序移植。
目前,ptCLinux已在嵌入式系統(tǒng)中得到了成功的應(yīng)用,但由于它并不是為了Linux的實(shí)時(shí)性而提出的,因此ptCLinux對(duì)實(shí)時(shí)應(yīng)用的支持方面并不好,從而使得它在嵌人式應(yīng)用領(lǐng)域備受質(zhì)疑。因?yàn)橛行┤藗冋J(rèn)為嵌入式系統(tǒng)必定是實(shí)時(shí)系統(tǒng),既然實(shí)時(shí)性不好,那么,ttCLinux就不能叫做嵌入式操作系統(tǒng)。其實(shí)不然,在實(shí)際應(yīng)用中確實(shí)有些嵌入式系統(tǒng)并不是實(shí)時(shí)系統(tǒng),尤其不是硬實(shí)時(shí)系統(tǒng)。因此,ptCLinux在一些沒有很強(qiáng)的實(shí)時(shí)要求的嵌入式系統(tǒng)中的應(yīng)用還是很優(yōu)秀的。但這畢竟是pCLinux的一個(gè)弱點(diǎn)和缺憾。也正是為了彌補(bǔ)這個(gè)缺憾,世界上眾多的專家和愛好者正在努力地工作著。