當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 入門指導(dǎo) > 幾分鐘讓你學(xué)通嵌入式文件系統(tǒng)
文件系統(tǒng)的概念
文件系統(tǒng)是操作系統(tǒng)用于明確存儲(chǔ)設(shè)備或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu);即在存儲(chǔ)設(shè)備上組織文件的方法。
操作系統(tǒng)中負(fù)責(zé)管理和存儲(chǔ)文件信息的軟件機(jī)構(gòu)稱為文件管理系統(tǒng),簡稱文件系統(tǒng)。
文件系統(tǒng)由三部分組成:
1. 文件系統(tǒng)的接口 用于管理文件的基礎(chǔ)編程接口
2. 對對象操縱和管理的軟件集使用基礎(chǔ)編程接口實(shí)現(xiàn)的具有多種復(fù)雜功能的軟件
3. 對象及屬性 文件對象的存儲(chǔ)結(jié)構(gòu)以及保存形式(存儲(chǔ)器的物理介質(zhì))
從系統(tǒng)角度來看,文件系統(tǒng)是對文件存儲(chǔ)設(shè)備的空間進(jìn)行組織和分配,負(fù)責(zé)文件存儲(chǔ)并對存入的文件進(jìn)行保護(hù)和檢索的系統(tǒng)。
具體地說,它負(fù)責(zé)為用戶建立文件,存入、讀出、修改、轉(zhuǎn)儲(chǔ)文件,控制文件的存取,當(dāng)用戶不再使用時(shí)撤銷文件等。
嵌入式文件系統(tǒng)
嵌入式文件系統(tǒng),是嵌入式系統(tǒng)中使用的文件系統(tǒng),功能與通用的文件系統(tǒng)一樣。
嵌入式系統(tǒng)是與應(yīng)用緊密結(jié)合的,它具有很強(qiáng)的專用性,必須結(jié)合實(shí)際系統(tǒng)需求進(jìn)行合理的裁減利用。
嵌入式系統(tǒng)具有一些通用計(jì)算機(jī)所不具有的一些特點(diǎn): 嵌入式系統(tǒng)的特點(diǎn)包括:系統(tǒng)內(nèi)核小、專用性強(qiáng)、系統(tǒng)精簡、實(shí)時(shí)性等。具體而言,它主要有如下八個(gè)特點(diǎn):
1. 可裁剪性。支持開放性和可伸縮性的體系結(jié)構(gòu)。
2. 強(qiáng)實(shí)時(shí)性。EOS實(shí)時(shí)性一般較強(qiáng),可用于各種設(shè)備控制中。
3. 統(tǒng)一的接口。提供設(shè)備統(tǒng)一的驅(qū)動(dòng)接口。
4. 操作方便、簡單、提供友好的圖形GUI和圖形界面,追求易學(xué)易用;提供強(qiáng)大的網(wǎng)絡(luò)功能,支持TCP/IP協(xié)議及其他協(xié)議,提供TCP/UDP/IP/PPP協(xié)議支持及統(tǒng)一的MAC訪問層接口,為各種移動(dòng)計(jì)算設(shè)備預(yù)留接口。
5. 強(qiáng)穩(wěn)定性,弱交互性。嵌入式系統(tǒng)一旦開始運(yùn)行就不需要用戶過多的干預(yù)、這就要負(fù)責(zé)系統(tǒng)管理的EOS具有較強(qiáng)的穩(wěn)定性。嵌入式操作系統(tǒng)的用戶接口一般不提供操作命令,它通過系統(tǒng)的調(diào)用命令向用戶程序提供服務(wù)。
6. 固化代碼。在嵌入式系統(tǒng)中,嵌入式操作系統(tǒng)和應(yīng)用軟件被固化在嵌入式系統(tǒng)計(jì)算機(jī)的ROM中。
7. 更好的硬件適應(yīng)性。也就是良好的移植性。
8. 嵌入式系統(tǒng)和具體應(yīng)用有機(jī)地結(jié)合在一起,它的升級換代也是和具體產(chǎn)品同步進(jìn)行,因此嵌入式系統(tǒng)產(chǎn)品一旦進(jìn)入市場,具有較長的生命周期。
針對以上特點(diǎn),嵌入式系統(tǒng)中使用的文件系統(tǒng),需要專門根據(jù)不同情況,進(jìn)行更加優(yōu)化的設(shè)計(jì),以確保文件數(shù)據(jù)的安全與可靠。
嵌入式文件系統(tǒng)特點(diǎn)
嵌入式文件系統(tǒng)雖然繼承了通用文件系統(tǒng)的組織結(jié)構(gòu),但由于功能和作用與普通桌面操作系統(tǒng)的文件系統(tǒng)不同,同時(shí)又有自己的特點(diǎn)
1. 在嵌入式系統(tǒng)中,文件系統(tǒng)是嵌入式系統(tǒng)的一個(gè)組成模塊。它是作為系統(tǒng)的一個(gè)可加載選項(xiàng)提供給用戶,由用戶決定是否需要加載它。
2. 需要滿足結(jié)構(gòu)緊湊、代碼量小的特點(diǎn),合理地對文件存儲(chǔ)器進(jìn)行管理。嵌入式系統(tǒng)中的文件存儲(chǔ)器空間相對不會(huì)太大,必須對其進(jìn)行高效的管理,以避免對資源的浪費(fèi)。
3. 使用簡單便捷。用戶只要知道文件名、文件路徑等簡單信息特征,就可以方便地對文件進(jìn)行操作,不必知道文件在具體物理存儲(chǔ)空間的運(yùn)作過程。
4. 安全可靠。對文件、數(shù)據(jù)的保護(hù)是文件系統(tǒng)的基本功能。嵌入式系統(tǒng)的應(yīng)用通常要求系統(tǒng)必須有較高的可靠性。
5. 支持多種存儲(chǔ)設(shè)備、可伸縮、可剪裁、可移植等特點(diǎn)。嵌入式應(yīng)用的領(lǐng)域相當(dāng)廣泛,其采用的硬件環(huán)境和操作系統(tǒng)也各不相同。為了適應(yīng)這種差異性,文件系統(tǒng)應(yīng)降低對具體硬件環(huán)境和操作系統(tǒng)的依賴,具備良好的可移植性。
#小型Flash文件系統(tǒng)嵌入式文件系統(tǒng)存儲(chǔ)介質(zhì)一般是Flash芯片,常用的嵌入式文件系統(tǒng)比較出名的有Cramfs、JFFS、Yaffs三種文件系統(tǒng)。
Flash芯片是嵌入式系統(tǒng)中廣泛采用的主流存儲(chǔ)器,主要特點(diǎn)是按整體/扇區(qū)擦除和按字節(jié)編程、低功耗、高密度、小體積。
1. JFFS2
JFFS2 是 RedHat 的 David Woodhouse 在 JFFS 基礎(chǔ)上改進(jìn)的文件系統(tǒng),是用于微型嵌入式設(shè)備的原始閃存芯片的實(shí)際文件系統(tǒng)。 JFFS2 文件系統(tǒng)是日志結(jié)構(gòu)化的可讀寫的文件系統(tǒng)。
JFFS2 的優(yōu)缺點(diǎn)如下: 1. 優(yōu)點(diǎn)使用了壓縮的文件格式。最重要的特性是可讀寫操作。 2. 缺點(diǎn) JFFS2 文件系統(tǒng)掛載時(shí)需要掃描整個(gè) JFFS2 文件系統(tǒng),因此當(dāng) JFFS2 文件系統(tǒng)分區(qū)增大時(shí),掛載時(shí)間也會(huì)相應(yīng)的變長。使用JFFS2 格式可能帶來少量的 Flash 空間的浪費(fèi)。這主要是由于日志文件的過度開銷和用于回收系統(tǒng)的無用存儲(chǔ)單元,浪費(fèi)的空間大小大致是若干個(gè)數(shù)據(jù)段。 JFFS2 的另一缺點(diǎn)是當(dāng)文件系統(tǒng)已滿或接近滿時(shí), JFFS2 運(yùn)行速度會(huì)迅速降低。這是因?yàn)槔占膯栴}。加載 JFFS2 文件系統(tǒng)時(shí)的步驟如下:
1. 掃描整個(gè)芯片,對日志節(jié)點(diǎn)進(jìn)行校驗(yàn),并且將日志節(jié)點(diǎn)全部裝入內(nèi)存緩存。
2. 對所有日志節(jié)點(diǎn)進(jìn)行整理,抽取有效的節(jié)點(diǎn)并整理出文件目錄信息。
3. 找出文件系統(tǒng)中無效節(jié)點(diǎn)并且將它們刪除。
4. 最后整理內(nèi)存中的信息,將加載到緩存中的無效節(jié)點(diǎn)釋放。
由此可以看出雖然這樣能有效地提高系統(tǒng)的可靠性,但是在一定程度上降低了系統(tǒng)的速度。尤其對于較大的閃存芯片,加載過程會(huì)更慢。所以JFFS2比較適用于容量較小的Flash,例如路由器等容量在2MB~64MB級別的存儲(chǔ)器中使用的比較多
JFFS2 的制作方法為:
hisilicon$ mkfs.jffs2 -d ./rootfs -l -e 0x20000 -o jffs2-root.img
參數(shù)說明
· d:指定根文件系統(tǒng)
· l:little-endian 小端模式
· e:Flash 的塊大小
· o:輸出映像文件
2. YAFFS2
YAFFS2 是專門為 NAND Flash 設(shè)計(jì)的嵌入式文件系統(tǒng)。它是日志結(jié)構(gòu)的文件系統(tǒng),提供了損耗平衡和掉電保護(hù),可以有效地避免意外掉電對文件系統(tǒng)一致性和完整性的影響。
YAFFS2 的優(yōu)缺點(diǎn)如下:
· 優(yōu)點(diǎn)
1. 專門針對 NAND Flash,軟件結(jié)構(gòu)得到優(yōu)化,速度快。
2. 使用硬件的 spare area 區(qū)域存儲(chǔ)文件組織信息,啟動(dòng)時(shí)只需掃描組織信息,啟動(dòng)比較快。
3. 采用多策略垃圾回收算法,能夠提高垃圾回收的效率和公平性,達(dá)到損耗平衡的目的。
· 缺點(diǎn) 沒有采用壓縮的文件格式。當(dāng)包含的內(nèi)容相同時(shí), YAFFS2 鏡像文件要比 jffs2 鏡像文件大。
3. SquashFS
SquashFS 是另一種可用于 flash 設(shè)備的 Linux 只讀文件系統(tǒng)。 SquashFS 具有極高的壓縮率,數(shù)據(jù)(data),節(jié)點(diǎn)(inode)和目錄(directories)都被壓縮。常用于存儲(chǔ)介質(zhì)很有限的場景。
SquashFS 保存了全部的 32 位 UID/GIDS 和文件的創(chuàng)建時(shí)間,支持多達(dá) 4G 的文件系統(tǒng), SquashFS 使用簡單,響應(yīng)速度快。
SquashFS 是一種新的文件系統(tǒng),它對 CramFS 的特點(diǎn)作了進(jìn)一步的改進(jìn),并突破了CramFS 的一些限制。其優(yōu)點(diǎn)如下:
1. SquashFS 具有更高的壓縮率
2. SquashFS 的響應(yīng)速度更快
3. CramFS 文件系統(tǒng)支持的最大文件為 16M,而 SquashFS 多達(dá) 4G
4. CramFS 文件系統(tǒng)大小限制略大于 256M,而 SquashFS 多達(dá) 4G