<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式根文件系統的移植和制作詳解

嵌入式根文件系統的移植和制作詳解

作者: 時(shí)間:2012-07-31 來(lái)源:網(wǎng)絡(luò ) 收藏

一.簡(jiǎn)介

本文引用地址:http://dyxdggzs.com/article/148690.htm

理論上說(shuō)一個(gè)設備如果內核能夠運行起來(lái),且不需要運行用戶(hù)進(jìn)程的話(huà),是不需要的,簡(jiǎn)單的說(shuō)就是一種目錄結構,由于 linux操作系統的設備在系統中是以文件的形式存在,將這些文件進(jìn)行分類(lèi)管理以及提供和內核交互的接口,就形成一定的目錄結構也就是文件系統,文件系統是為用戶(hù)反映系統的一種形式,為用戶(hù)提供一個(gè)檢測控制系統的接口。

根文件系統,我認為根文件系統就是一種特殊的文件系統,那么根文件系統和普通的文件系統有什么區別呢?由于根文件系統是內核啟動(dòng)時(shí)掛在的第一個(gè)文件系統,那么根文件系統就要包括Linux啟動(dòng)時(shí)所必須的目錄和關(guān)鍵性的文件,例如Linux啟動(dòng)時(shí)都需要有init目錄下的相關(guān)文件,在 Linux掛載分區時(shí)Linux一定會(huì )找/etc/fSTab這個(gè)掛載文件等,根文件系統中還包括了許多的應用程序bin目錄等,任何包括這些Linux 系統啟動(dòng)所必須的文件都可以成為根文件系統。

Linux支持多種文件系統,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,為了對各類(lèi)文件系統進(jìn)行統一管理,Linux引入了虛擬文件系統VFS(Virtual File System),為各類(lèi)文件系統提供一個(gè)統一的操作界面和應用編程接口。

Linux啟動(dòng)時(shí),第一個(gè)必須掛載的是根文件系統;若系統不能從指定設備上掛載根文件系統,則系統會(huì )出錯而退出啟動(dòng)。之后可以自動(dòng)或手動(dòng)掛載其他的文件系統。因此,一個(gè)系統中可以同時(shí)存在不同的文件系統。

不同的文件系統類(lèi)型有不同的特點(diǎn),因而根據存儲設備的硬件特性、系統需求等有不同的應用場(chǎng)合。在Linux應用中,主要的存儲設備為 RAM(DRAM, SDRAM)和ROM(常采用FLASH存儲器),常用的基于存儲設備的文件系統類(lèi)型包括:jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs等。

1. 基于Flash的文件系統

flash(閃存)作為系統的主要存儲媒介,有其自身的特性。Flash的寫(xiě)入操作只能把對應位置的1修改為0,而不能把0修改為1(擦除 Flash就是把對應存儲塊的內容恢復為1),因此,一般情況下,向Flash寫(xiě)入內容時(shí),需要先擦除對應的存儲區間,這種擦除是以塊(block)為單位進(jìn)行的。

閃存主要有NOR和NAND兩種技術(shù)。Flash存儲器的擦寫(xiě)次數是有限的,NAND閃存還有特殊的硬件接口和讀寫(xiě)時(shí)序。因此,必須針對Flash的硬件特性設計符合應用要求的文件系統;傳統的文件系統如ext2等,用作Flash的文件系統會(huì )有諸多弊端。

一塊Flash芯片可以被劃分為多個(gè)分區,各分區可以采用不同的文件系統;兩塊Flash芯片也可以合并為一個(gè)分區使用,采用一個(gè)文件系統。即文件系統是針對于存儲器分區而言的,而非存儲芯片。

在嵌入式Linux下,MTD(Memory Technology Device,存儲技術(shù)設備)為底層硬件(閃存)和上層(文件系統)之間提供一個(gè)統一的抽象接口,即Flash的文件系統都是基于MTD驅動(dòng)層的(參見(jiàn)上面的Linux下的文件系統結構圖)。使用MTD驅動(dòng)程序的主要優(yōu)點(diǎn)在于,它是專(zhuān)門(mén)針對各種非易失性存儲器(以閃存為主)而設計的,因而它對Flash有更好的支持、管理和基于扇區的擦除、讀/寫(xiě)操作接口。

(1) jffs2

JFFS文件系統最早是由瑞典Axis Communications公司基于Linux2.0的內核為嵌入式系統開(kāi)發(fā)的文件系統。JFFS2是RedHat公司基于JFFS開(kāi)發(fā)的閃存文件系統,最初是針對RedHat公司的嵌入式產(chǎn)品eCos開(kāi)發(fā)的嵌入式文件系統,所以JFFS2也可以用在Linux, uCLinux中。

Jffs2: 日志閃存文件系統版本2 (Journalling Flash Filesystem v2)

主要用于NOR型閃存,基于MTD驅動(dòng)層,特點(diǎn)是:可讀寫(xiě)的、支持數據壓縮的、基于哈希表的日志型文件系統,并提供了崩潰/掉電安全保護,提供“寫(xiě)平衡”支持等。缺點(diǎn)主要是當文件系統已滿(mǎn)或接近滿(mǎn)時(shí),因為垃圾收集的關(guān)系而使jffs2的運行速度大大放慢。

jffs不適合用于NAND閃存主要是因為NAND閃存的容量一般較大,這樣導致jffs為維護日志節點(diǎn)所占用的內存空間迅速增大,另外,jffs文件系統在掛載時(shí)需要掃描整個(gè)FLASH的內容,以找出所有的日志節點(diǎn),建立文件結構,對于大容量的NAND閃存會(huì )耗費大量時(shí)間。

(2) yaffs:Yet Another Flash File System

yaffs/yaffs2是專(zhuān)為嵌入式系統使用NAND型閃存而設計的一種日志型文件系統。與jffs2相比,它減少了一些功能(例如不支持數據壓縮),所以速度更快,掛載時(shí)間很短,對內存的占用較小。另外,它還是跨平臺的文件系統,除了Linux和eCos,還支持WinCE, pSOS和ThreadX等。

yaffs/yaffs2自帶NAND芯片的驅動(dòng),并且為嵌入式系統提供了直接訪(fǎng)問(wèn)文件系統的API,用戶(hù)可以不使用Linux中的MTD與VFS,直接對文件系統操作。當然,yaffs也可與MTD驅動(dòng)程序配合使用。

yaffs與yaffs2的主要區別在于,前者僅支持小頁(yè)(512 Bytes) NAND閃存,后者則可支持大頁(yè)(2KB) NAND閃存。同時(shí),yaffs2在內存空間占用、垃圾回收速度、讀/寫(xiě)速度等方面均有大幅提升。

(3) Cramfs:Compressed ROM File System

Cramfs是Linux的創(chuàng )始人 Linus Torvalds參與開(kāi)發(fā)的一種只讀的壓縮文件系統。它也基于MTD驅動(dòng)程序。

在cramfs文件系統中,每一頁(yè)(4KB)被單獨壓縮,可以隨機頁(yè)訪(fǎng)問(wèn),其壓縮比高達2:1,為嵌入式系統節省大量的Flash存儲空間,使系統可通過(guò)更低容量的FLASH存儲相同的文件,從而降低系統成本。

Cramfs文件系統以壓縮方式存儲,在運行時(shí)解壓縮,所以不支持應用程序以XIP方式運行,所有的應用程序要求被拷到RAM里去運行,但這并不代表比 Ramfs需求的RAM空間要大一點(diǎn),因為Cramfs是采用分頁(yè)壓縮的方式存放檔案,在讀取檔案時(shí),不會(huì )一下子就耗用過(guò)多的內存空間,只針對目前實(shí)際讀取的部分分配內存,尚沒(méi)有讀取的部分不分配內存空間,當我們讀取的檔案不在內存時(shí),Cramfs文件系統自動(dòng)計算壓縮后的資料所存的位置,再即時(shí)解壓縮到 RAM中。

另外,它的速度快,效率高,其只讀的特點(diǎn)有利于保護文件系統免受破壞,提高了系統的可靠性。

由于以上特性,Cramfs在嵌入式系統中應用廣泛。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

linux相關(guān)文章:linux教程



上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: 制作 詳解 移植 系統 文件 嵌入式

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>