資料介紹
根文件系統(tǒng)是構建一個uCLinux嵌入式系統(tǒng)的重要組成部分。目前嵌入式系統(tǒng)可以選擇的根文件系統(tǒng)有:Romfs、CramFS、Ramfs、Jffs2、Ext2等等,本系統(tǒng)采用CramFS作為uCLinux嵌入式系統(tǒng)的只讀根文件系統(tǒng)。本文討論了CramFS文件系統(tǒng)的特點,并詳細的說明了Nor Flash上建立一個uClinux的Cramfs根文件系統(tǒng)的一般步驟。
一、引言
隨著電子產業(yè)的不斷發(fā)展,基于ARM技術的系統(tǒng)設計和開發(fā)平臺越來越多地在控制類、消費類、通信類等電子產品中廣泛應用。從軟件角度上看,構建基于ARM技術的uClinux系統(tǒng)要涉及到引導加載程序、Linux 內核、文件系統(tǒng)、用戶應用程序幾部分的設計。
文件系統(tǒng)是操作系統(tǒng)中用來管理用戶文件的內核軟件層。文件可能存在于磁盤、網(wǎng)絡或者是一些虛擬的文件。文件系統(tǒng)包括根文件系統(tǒng)和建立于內存設備之上文件系統(tǒng)。根文件系統(tǒng)是uClinux系統(tǒng)的核心部分,包含系統(tǒng)使用的軟件和庫,以及所有用來為用戶提供支持架構和用戶使用的應用軟件,并作為存儲數(shù)據(jù)讀寫結果的區(qū)域。由于嵌入式設備中Flash資源很緊張,如何有效地使用有限的存儲空間是嵌入式開發(fā)者必須考慮的,合適的文件系統(tǒng)格式是解決這一問題的關鍵所在。本文討論了只讀壓縮CramFS文件系統(tǒng)的特點,并詳細的說明了Nor Flash上建立一個uClinux的Cramfs根文件系統(tǒng)的一般步驟。
二、開發(fā)環(huán)境簡介
本系統(tǒng)采用的是宿主機+目標板的開發(fā)模式,宿主機為PC+Cygwin1.5.1 ,目標板為采用203MHz的ARM920T內核的處理器S3C2410x+uClinux, uClinux版本為2.4.18。在宿主機上將uClinux和應用程序編譯后,下載到目標板的Nor Flash中,啟動運行。使用的SDRAM是2片16MB的HY57v561620,工作在16bit雙字節(jié)模式下;使用的Flash是2片AMD AM29LV160DB,大小為2M字節(jié),工作在16bit雙字節(jié)模式下。在開發(fā)的時候,將Boot Loader燒入AM29LV160DB的1-5扇區(qū);將Linux內核映象文件zImage燒入6-17扇區(qū);將CramFS文件系統(tǒng)映象文件燒入18-35扇區(qū)。
三、 Cramfs文件系統(tǒng)簡介
CramFS(Compressed Rom File System)是Linux Torvalds在Transmeta任職時,所參與開發(fā)的文件系統(tǒng)。它是針對Linux內核2.4之后的版本所設計的一種新型只讀文件系統(tǒng),采用了zlib 壓縮,壓縮比一般可以達到1:2,但仍可以作到高效的隨機讀取,Linux系統(tǒng)中,通常把不需要經(jīng)常修改的目錄壓縮存放,并在系統(tǒng)引導的時候再將壓縮文件解開。因為Cramfs不會影響系統(tǒng)的讀取文件的速度,而且是一個高度壓縮的文件系統(tǒng)。因此非常廣泛應用于嵌入式系統(tǒng)中。
在嵌入式的環(huán)境之下,內存和外存資源都需要節(jié)約使用。如果使用RAMDISK方式來使用文件系統(tǒng),那么在系統(tǒng)運行之后,首先要把Flash上的映像文件解壓縮到內存中,構造起RAMDISK環(huán)境,才可以開始運行程序。但是它也有很致命的弱點。在正常情況下,同樣的代碼不僅在Flash中占據(jù)了空間(以壓縮后的形式存在),而且還在內存中占用了更大的空間(以解壓縮之后的形式存在),這違背了嵌入式環(huán)境下盡量節(jié)省資源的要求。
使用CramFS文件系統(tǒng)就是一種解決這個問題的方式。CramFS是一個壓縮格式的文件系統(tǒng),它并不需要一次性地將文件系統(tǒng)中的所有內容都解壓縮到內存之中,而只是在系統(tǒng)需要訪問某個位置的數(shù)據(jù)的時候,馬上計算出該數(shù)據(jù)在CramFS中的位置,將它實時地解壓縮到內存之中,然后通過對內存的訪問來獲取文件系統(tǒng)中需要讀取的數(shù)據(jù)。CramFS中的解壓縮以及解壓縮之后的內存中數(shù)據(jù)存放位置都是由CramFS文件系統(tǒng)本身進行維護的,用戶并不需要了解具體的實現(xiàn)過程,因此這種方式增強了透明度,對開發(fā)人員來說,既方便,又節(jié)省了存儲空間。
一個完整的cramfs文件系統(tǒng)通常包含以下幾個目錄:
/linuxrc 啟動腳本文件,由Boot Loader核心命令行確定init=/linuxrc,加載/etc目錄為ramfs,(cramfs為只讀文件系統(tǒng)),拷貝/mnt/etc到/etc,配置文件目錄重新加載根文件系統(tǒng)和/etc文件系統(tǒng),執(zhí)行init進程。
/bin 引導啟動所需的命令或用戶可能用的命令。
/sbin 系統(tǒng)管理員服務程序,其中最重要的是供內核初始化之后執(zhí)行的/sbin/init進程,系統(tǒng)啟動時由init解釋并運行/etc/inittab, inittab將指導int去調用一個系統(tǒng)初始化程序/etc/init.d/rcS。
/etc 特定機器的配置文件以及用戶數(shù)據(jù)存放目錄,其中的所有內容是在內核運行后,由linuxrc 從/mnt/etc拷貝得到的。
/lib 文件系統(tǒng)上的程序所需的動態(tài)庫。
/dev 驅動程序存放目錄,可以在這里存放自己編寫的驅動程序。
/usr 用于存放用戶程序和配置文件的目錄,可以根據(jù)需要進行設置。目錄下的/usr/etc/rc.local執(zhí)行本地所需要的初始化,如安裝核心模塊,進行網(wǎng)絡,運行應用程序,啟動圖形界面等。/etc/modules.conf在系統(tǒng)運行期間自動加載模塊。
/mnt 用于設備安裝的目錄。/mnt/etc/init.d/rcS完成各個文件系統(tǒng)的Mount,執(zhí)行/usr/etc/rc.local;通過rcS可以調動dhcp程序配置網(wǎng)絡。rcS執(zhí)行完以后,就會打開Shell。
/proc 系統(tǒng)狀態(tài)文件目錄, 目錄中的文件可以用于訪問有關內核的狀態(tài)、計算機的屬性、正在運行的進程的狀態(tài)等信息。盡管 /proc 中的文件是虛擬的,但它們仍可以使用任何文件編輯器或像‘more’, ‘less’或 ‘cat’這樣的程序來查看。
四、 Cramfs文件系統(tǒng)的移植過程
文件系統(tǒng)是緊跟uCLinux內核放置,由內核加載,主要存放用戶應用程序和配置信息。CramFS文件系統(tǒng)的基本組成:初始化程序、Shell程序以及其他Linux常用工具、配置文件、鏈接庫、圖形界面程序和用戶應用程序等。本節(jié)將介紹移植CramFS文件系統(tǒng)的具體操作方法。
4.1、在內核中加入對CramFS文件系統(tǒng)支持
想要在系統(tǒng)中提供CramFS的能力,我們必須要在編輯uCliunx內核時把支持CramFS的選項加入。盡管uCLinux可以以模塊的形式加載各種類型的設備驅動上,但我們選擇直接把設備驅動及CramFS文件系統(tǒng)靜態(tài)地編譯進內核中。
在Memory Technology Devices (MTD)選項中進行配置:
Memory Technology Device (MTD) support[Y/m/n/?] Y 內存技術設備支持
MTD partitioning support [Y/m/n/?] Y 支持MTD分區(qū)
Direct char device access to MTD devices[Y/m/n/?] Y MTD字符設備直接訪問
Caching block device access to MTD devices[Y/m/n/?] Y MTD塊設備緩沖訪問
在File Systems選項中進行配置:
Compressed ROM file system support [Y/m/n/?] Y ROM文件系統(tǒng)的支持
完成上述修改并編譯后,完成uCliunx內核對CramFS文件系統(tǒng)的支持。
4.2、 拷貝需要加入的其他文件和鏈接庫
?。?)、Busybox 是 Debian GNU/Linux 的大名鼎鼎的 Bruce Perens 首先開發(fā)的。Busybox 編譯出一個單個的獨立執(zhí)行程序,就叫做 busybox。但是它可以根據(jù)配置,執(zhí)行 ash shell的功能,以及幾十個各種小應用程序的功能。這其中包括有一個迷你的vi編輯器,系統(tǒng)不可或缺的/sbin/init程序,以及其他諸如 ifconfig, halt, reboot, mkdir, mount, ln, ls, echo, cat等等。而所有這一切功能卻只有區(qū)區(qū)1M左右的大小,Busybox已經(jīng)成為構建嵌入式Linux文件系統(tǒng)的必備軟件。
一、引言
隨著電子產業(yè)的不斷發(fā)展,基于ARM技術的系統(tǒng)設計和開發(fā)平臺越來越多地在控制類、消費類、通信類等電子產品中廣泛應用。從軟件角度上看,構建基于ARM技術的uClinux系統(tǒng)要涉及到引導加載程序、Linux 內核、文件系統(tǒng)、用戶應用程序幾部分的設計。
文件系統(tǒng)是操作系統(tǒng)中用來管理用戶文件的內核軟件層。文件可能存在于磁盤、網(wǎng)絡或者是一些虛擬的文件。文件系統(tǒng)包括根文件系統(tǒng)和建立于內存設備之上文件系統(tǒng)。根文件系統(tǒng)是uClinux系統(tǒng)的核心部分,包含系統(tǒng)使用的軟件和庫,以及所有用來為用戶提供支持架構和用戶使用的應用軟件,并作為存儲數(shù)據(jù)讀寫結果的區(qū)域。由于嵌入式設備中Flash資源很緊張,如何有效地使用有限的存儲空間是嵌入式開發(fā)者必須考慮的,合適的文件系統(tǒng)格式是解決這一問題的關鍵所在。本文討論了只讀壓縮CramFS文件系統(tǒng)的特點,并詳細的說明了Nor Flash上建立一個uClinux的Cramfs根文件系統(tǒng)的一般步驟。
二、開發(fā)環(huán)境簡介
本系統(tǒng)采用的是宿主機+目標板的開發(fā)模式,宿主機為PC+Cygwin1.5.1 ,目標板為采用203MHz的ARM920T內核的處理器S3C2410x+uClinux, uClinux版本為2.4.18。在宿主機上將uClinux和應用程序編譯后,下載到目標板的Nor Flash中,啟動運行。使用的SDRAM是2片16MB的HY57v561620,工作在16bit雙字節(jié)模式下;使用的Flash是2片AMD AM29LV160DB,大小為2M字節(jié),工作在16bit雙字節(jié)模式下。在開發(fā)的時候,將Boot Loader燒入AM29LV160DB的1-5扇區(qū);將Linux內核映象文件zImage燒入6-17扇區(qū);將CramFS文件系統(tǒng)映象文件燒入18-35扇區(qū)。
三、 Cramfs文件系統(tǒng)簡介
CramFS(Compressed Rom File System)是Linux Torvalds在Transmeta任職時,所參與開發(fā)的文件系統(tǒng)。它是針對Linux內核2.4之后的版本所設計的一種新型只讀文件系統(tǒng),采用了zlib 壓縮,壓縮比一般可以達到1:2,但仍可以作到高效的隨機讀取,Linux系統(tǒng)中,通常把不需要經(jīng)常修改的目錄壓縮存放,并在系統(tǒng)引導的時候再將壓縮文件解開。因為Cramfs不會影響系統(tǒng)的讀取文件的速度,而且是一個高度壓縮的文件系統(tǒng)。因此非常廣泛應用于嵌入式系統(tǒng)中。
在嵌入式的環(huán)境之下,內存和外存資源都需要節(jié)約使用。如果使用RAMDISK方式來使用文件系統(tǒng),那么在系統(tǒng)運行之后,首先要把Flash上的映像文件解壓縮到內存中,構造起RAMDISK環(huán)境,才可以開始運行程序。但是它也有很致命的弱點。在正常情況下,同樣的代碼不僅在Flash中占據(jù)了空間(以壓縮后的形式存在),而且還在內存中占用了更大的空間(以解壓縮之后的形式存在),這違背了嵌入式環(huán)境下盡量節(jié)省資源的要求。
使用CramFS文件系統(tǒng)就是一種解決這個問題的方式。CramFS是一個壓縮格式的文件系統(tǒng),它并不需要一次性地將文件系統(tǒng)中的所有內容都解壓縮到內存之中,而只是在系統(tǒng)需要訪問某個位置的數(shù)據(jù)的時候,馬上計算出該數(shù)據(jù)在CramFS中的位置,將它實時地解壓縮到內存之中,然后通過對內存的訪問來獲取文件系統(tǒng)中需要讀取的數(shù)據(jù)。CramFS中的解壓縮以及解壓縮之后的內存中數(shù)據(jù)存放位置都是由CramFS文件系統(tǒng)本身進行維護的,用戶并不需要了解具體的實現(xiàn)過程,因此這種方式增強了透明度,對開發(fā)人員來說,既方便,又節(jié)省了存儲空間。
一個完整的cramfs文件系統(tǒng)通常包含以下幾個目錄:
/linuxrc 啟動腳本文件,由Boot Loader核心命令行確定init=/linuxrc,加載/etc目錄為ramfs,(cramfs為只讀文件系統(tǒng)),拷貝/mnt/etc到/etc,配置文件目錄重新加載根文件系統(tǒng)和/etc文件系統(tǒng),執(zhí)行init進程。
/bin 引導啟動所需的命令或用戶可能用的命令。
/sbin 系統(tǒng)管理員服務程序,其中最重要的是供內核初始化之后執(zhí)行的/sbin/init進程,系統(tǒng)啟動時由init解釋并運行/etc/inittab, inittab將指導int去調用一個系統(tǒng)初始化程序/etc/init.d/rcS。
/etc 特定機器的配置文件以及用戶數(shù)據(jù)存放目錄,其中的所有內容是在內核運行后,由linuxrc 從/mnt/etc拷貝得到的。
/lib 文件系統(tǒng)上的程序所需的動態(tài)庫。
/dev 驅動程序存放目錄,可以在這里存放自己編寫的驅動程序。
/usr 用于存放用戶程序和配置文件的目錄,可以根據(jù)需要進行設置。目錄下的/usr/etc/rc.local執(zhí)行本地所需要的初始化,如安裝核心模塊,進行網(wǎng)絡,運行應用程序,啟動圖形界面等。/etc/modules.conf在系統(tǒng)運行期間自動加載模塊。
/mnt 用于設備安裝的目錄。/mnt/etc/init.d/rcS完成各個文件系統(tǒng)的Mount,執(zhí)行/usr/etc/rc.local;通過rcS可以調動dhcp程序配置網(wǎng)絡。rcS執(zhí)行完以后,就會打開Shell。
/proc 系統(tǒng)狀態(tài)文件目錄, 目錄中的文件可以用于訪問有關內核的狀態(tài)、計算機的屬性、正在運行的進程的狀態(tài)等信息。盡管 /proc 中的文件是虛擬的,但它們仍可以使用任何文件編輯器或像‘more’, ‘less’或 ‘cat’這樣的程序來查看。
四、 Cramfs文件系統(tǒng)的移植過程
文件系統(tǒng)是緊跟uCLinux內核放置,由內核加載,主要存放用戶應用程序和配置信息。CramFS文件系統(tǒng)的基本組成:初始化程序、Shell程序以及其他Linux常用工具、配置文件、鏈接庫、圖形界面程序和用戶應用程序等。本節(jié)將介紹移植CramFS文件系統(tǒng)的具體操作方法。
4.1、在內核中加入對CramFS文件系統(tǒng)支持
想要在系統(tǒng)中提供CramFS的能力,我們必須要在編輯uCliunx內核時把支持CramFS的選項加入。盡管uCLinux可以以模塊的形式加載各種類型的設備驅動上,但我們選擇直接把設備驅動及CramFS文件系統(tǒng)靜態(tài)地編譯進內核中。
在Memory Technology Devices (MTD)選項中進行配置:
Memory Technology Device (MTD) support[Y/m/n/?] Y 內存技術設備支持
MTD partitioning support [Y/m/n/?] Y 支持MTD分區(qū)
Direct char device access to MTD devices[Y/m/n/?] Y MTD字符設備直接訪問
Caching block device access to MTD devices[Y/m/n/?] Y MTD塊設備緩沖訪問
在File Systems選項中進行配置:
Compressed ROM file system support [Y/m/n/?] Y ROM文件系統(tǒng)的支持
完成上述修改并編譯后,完成uCliunx內核對CramFS文件系統(tǒng)的支持。
4.2、 拷貝需要加入的其他文件和鏈接庫
?。?)、Busybox 是 Debian GNU/Linux 的大名鼎鼎的 Bruce Perens 首先開發(fā)的。Busybox 編譯出一個單個的獨立執(zhí)行程序,就叫做 busybox。但是它可以根據(jù)配置,執(zhí)行 ash shell的功能,以及幾十個各種小應用程序的功能。這其中包括有一個迷你的vi編輯器,系統(tǒng)不可或缺的/sbin/init程序,以及其他諸如 ifconfig, halt, reboot, mkdir, mount, ln, ls, echo, cat等等。而所有這一切功能卻只有區(qū)區(qū)1M左右的大小,Busybox已經(jīng)成為構建嵌入式Linux文件系統(tǒng)的必備軟件。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 使用ZYMKEY加密Raspberry Pi上的根文件系統(tǒng)
- rootfs根文件系統(tǒng)制作 2次下載
- ROC RK3399 PC Pro文件系統(tǒng)Linux根文件系統(tǒng)鏡像(arm64/arm32)
- 【文件系統(tǒng)】FatFs文件系統(tǒng)在嵌入式芯片LPC18XX上的移植
- Fatfs(文件系統(tǒng)的移植)
- 嵌入式Linux學習之旅(10)— 使用buildroot構建根文件系統(tǒng)
- 嵌入式Linux系統(tǒng)移植-(Linux文件系統(tǒng))
- 嵌入式Linux移植3. NFS根文件系統(tǒng)掛載(從Ubuntu啟動內核,文件系統(tǒng))
- 如何實現(xiàn)Linux內核移植和yaffs2根文件系統(tǒng)制作 9次下載
- 如何制作一個自啟動的Linux根文件系統(tǒng) 1次下載
- Mini210s NFS掛接根文件系統(tǒng) 9次下載
- 實驗五 基于busybox的根文件系統(tǒng)制作實驗-2016 10次下載
- 基于Cramfs的根文件系統(tǒng)配置 23次下載
- 基于s3c2410的CramFS根文件系統(tǒng)的移植
- 用Busybox制作嵌入式Linux根文件系統(tǒng)
- Linux三大主流文件系統(tǒng)解析 1.2k次閱讀
- 防止根文件系統(tǒng)破壞,OverlayRootfs 讓你的設備更安全 2.6k次閱讀
- 文件系統(tǒng)FatFs的移植 3.3k次閱讀
- 文件系統(tǒng)概述及代碼移植 2.8k次閱讀
- FatFS文件系統(tǒng)在STM32F4上的移植和應用 3.9k次閱讀
- 基于Buildroot的Linux系統(tǒng)構建之根文件系統(tǒng) 3.2k次閱讀
- fireflyROC-RK3328-PC編譯Ubuntu 根文件系統(tǒng)簡介 2k次閱讀
- fireflyAIO-3399C主板創(chuàng)建Ubuntu根文件系統(tǒng) 1.6k次閱讀
- Firefly-PX3-SE編譯根文件系統(tǒng)簡介 2k次閱讀
- FireflyRK3128主板Ubuntu 根文件系統(tǒng)創(chuàng)建 4.1k次閱讀
- Firefly-RK3399根文件系統(tǒng)介紹 2.6k次閱讀
- Xilinx Zynq制作修改根文件系統(tǒng)的方法 4.2k次閱讀
- 文件系統(tǒng)是什么?淺談EXT文件系統(tǒng)歷史 6.2k次閱讀
- 制作ZedBoard上linux根文件系統(tǒng)(ramdisk) 1.9k次閱讀
- 基于zynq的Linux根文件系統(tǒng)生成 6.5k次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統(tǒng)的設計與實現(xiàn)
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發(fā)板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問
發(fā)資料
發(fā)視頻
上傳資料賺積分
評論