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