低固存嵌入式系統的uClinux小型化方法
在許多嵌入式系統中,往往只有低容量的固存,比如MCF5282芯片內只有512k FLASH,而有些微處理器固存可能更低。在不外擴固存容量,降低系統穩定性的條件下,特別是在干擾源嚴重的工控環(huán)境下,采用短小、精煉的嵌入式操作系統將具有非常大的實(shí)用意義。文中以下內容將針對低固存嵌入式系統,討論uClinux的幾種特殊簡(jiǎn)化方法,應用這些方法,將非常有助于開(kāi)發(fā)者開(kāi)發(fā)出適合于自已的嵌入式系統。
本文引用地址:http://dyxdggzs.com/article/150585.htm1 內核移植
移植前首先要搭建交叉編譯平臺,安裝交叉編譯工具鏈,包括GCC,Binutils,uClibc。準備就緒后即可開(kāi)始進(jìn)行移植操作,移植過(guò)程中最大困難是如何減小uClinux系統的大小。為此文中從以下兩個(gè)方面著(zhù)手:內核配置級裁剪和內核源代碼級裁剪。
1.1 內核配置級裁剪
Linux內核采用模塊化的設計,即很多功能塊可以獨立地加上或卸下,開(kāi)發(fā)人員在設計內核時(shí)把這些內核模塊作為可選的選項,可以在編譯系統內核時(shí)指定。因此一種較通用的做法是對Linux內核重新編譯,在編譯時(shí)仔細地選擇嵌入式設備所需要的功能支持模塊,同時(shí)刪除不需要的功能。通過(guò)對內核的重新配置,可以使系統運行所需要的內核顯著(zhù)減小,從而縮減資源使用量。對于內核中不支持的設備,可以自已編制設備驅動(dòng)程序,然后添加進(jìn)內核。配置完內核,接下來(lái)需要對內核源代碼文件的依賴(lài)性和完整性進(jìn)行檢驗,并進(jìn)行編譯。
1.2 內核源代碼級裁剪
Linux核心包括:進(jìn)程管理模塊、內存管理模塊、文件系統、設備驅動(dòng)模塊、網(wǎng)絡(luò )模塊。在內核中文件系統和設備驅動(dòng)程序占了大比重,約1/3以上,所以去除不必要的文件系統和設備驅動(dòng)程序將會(huì )使內核大小有較大范圍的縮減,這已在上一步驟中實(shí)現。所以文件系統的裁剪是重中之重??紤]到制作整個(gè)根文件系統的高昂代價(jià),約有700kbyte大小,而一般嵌入式微處理器的FLASH一般小于512kbyte,根本就不可能固化,所以為了縮減系統的大小必須刪除根文件系統,同時(shí)也導致內核與應用程序必須一體化。要刪除根文件系統,并不是簡(jiǎn)單刪除源代碼,而是一個(gè)錯綜復雜的宏大工程。整個(gè)系統的框架如圖1所示。

在本系統中刪除了根文件系統,但仍保留VFS,主要保持VFS向上層提供統一接口,隱藏下層具體細節等作用,方便開(kāi)發(fā)應用程序。同時(shí)針對文件規模小、數量少的嵌入式系統VFS在這里要減小它的規模和簡(jiǎn)化它的功能。規模的減小工作主要靠刪除在嵌入式設備不支持的物理文件系統、設備驅動(dòng)程序及其系統調用的源碼。功能的簡(jiǎn)化主要靠簡(jiǎn)化部分數據結構和系統調用,這樣可以進(jìn)一步使系統規模精簡(jiǎn)。ReFS文件系統,是根據嵌入式系統的特性開(kāi)發(fā)的一種新的文件系統。具體參見(jiàn)第3節新型文件系統(ReFS)開(kāi)發(fā)。
由于根文件系統的缺失帶來(lái)一些重大影響,分析如下。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
linux相關(guān)文章:linux教程
評論