免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
關(guān)于linux下的嵌入式文件系統(tǒng)以及flash文件系統(tǒng)選擇-1 - 嵌入式相關(guān) - 無為
嵌入式linux下常見的文件系統(tǒng)

• RomFS
:只讀文件系統(tǒng),可以放在ROM空間,也可以在系統(tǒng)的RAM中,嵌入式linux中常用來作
根文件系統(tǒng)
• RamFS
:利用VFS自身結(jié)構(gòu)而形成的內(nèi)存文件系統(tǒng),使用系統(tǒng)的RAM空間
• JFFS/JFFS2
:為Flash設(shè)計的日志文件系統(tǒng)
• Yaffs
:專門為Nand Flash設(shè)計
• proc
:為內(nèi)核和內(nèi)核模塊將信息發(fā)送給進程提供一種機制,可以查看系統(tǒng)模塊裝載的信息
• devFS
:設(shè)備文件系統(tǒng)


Linux
上的Ext2fs
支持4 TB 存儲、文件名稱最長1012 字符
可選擇邏輯塊
快速符號鏈接
• Ext2
不適合flash設(shè)備
是為象IDE 設(shè)備那樣的塊設(shè)備設(shè)計的,邏輯塊大小必須是512 byte1 KB、2KB
沒有提供對基于扇區(qū)的擦除/寫操作的良好管理
如果在一個扇區(qū)中擦除單個字節(jié),必須將整個扇區(qū)復(fù)制到RAM,然后擦除,再重寫入
在出現(xiàn)電源故障時,Ext2fs 是不能防止崩潰的
文件系統(tǒng)不支持損耗平衡,縮短了flash的壽命


jffs/jffs2
文件系統(tǒng)的優(yōu)缺點
日志文件系統(tǒng)
提供了更好的崩潰、掉電安全保護
• jffs2
支持對flash的均勻磨損
在扇區(qū)級別上執(zhí)行閃存擦除/寫/讀操作要比Ext2文件系統(tǒng)好
文件系統(tǒng)接近滿時,JFFS2 會大大放慢運行速度——垃圾收集


Nand
yaffs文件系統(tǒng)的優(yōu)勢
專門為Nand flash設(shè)計的日志文件系統(tǒng)
• jffs
jffs2不適合大容量的Nand flash
• jffs
的日志通過jffs_node建立在RAM中,占用RAM空間:對于128MBNand大概需要4MB的空間來維護節(jié)點
啟動的時候需要掃描日志節(jié)點,不適合大容量的Nand flash
• FAT
系統(tǒng)沒有日志


編譯yaffs文件系統(tǒng)
• mtd
的最新補丁升級?
接口更新,適合與yaffs
與原有的mtd驅(qū)動程序不兼容,需要重寫
如果使用舊mtd驅(qū)動需要定義MakefileMTD_OLD = -DCONFIG_YAFFS_USE_OLD_MTD
參考文檔: yaffs-rootfs-howto
最新版的yaffs網(wǎng)站:http://www.aleph1.co.uk/armlinux/projects/yaffs

使用yaffs文件系統(tǒng)
通過cat /proc/yaffs命令可以看到yaffs系統(tǒng)的相關(guān)信息
• mount -t yaffs /dev/mtdblock/0 /mnt/yaffs


關(guān)于Linux文件系統(tǒng)

JFFS
全稱為:The Journalling Flash File System(日志閃存文件系統(tǒng))最初由瑞典的 Axis Communications 開發(fā),Red Hat David Woodhouse 對它進行了改進。作為用于微型嵌入式設(shè)備的原始閃存芯片的實際文件系統(tǒng)而出現(xiàn)。JFFS文件系統(tǒng)是日志結(jié)構(gòu)化的,這意味著它基本上是一長列節(jié)點。每個節(jié)點包含有關(guān)文件的部分信息可能是文件的名稱、也許是一些數(shù)據(jù)。相對于 Ext2 fs,JFFS 因為有以下這些優(yōu)點而在無盤嵌入式設(shè)備中越來越受歡迎:
  
   1 JFFS 在扇區(qū)級別上執(zhí)行閃存擦除/寫/讀操作要比 Ext2 文件系統(tǒng)好。
   2 JFFS 提供了比 Ext2 更好的崩潰/掉電安全保護。當(dāng)需要更改少量數(shù)據(jù)時,Ext2 文件系統(tǒng)將整個扇區(qū)復(fù)制到內(nèi)存(DRAM)中,在內(nèi)存中合并新數(shù)據(jù),并寫回整個扇區(qū)。這意味著為了更改單個字,必須對整個扇區(qū)(64 KB)執(zhí)行讀/擦除/寫例程這樣做的效率非常低。要是運氣差,當(dāng)正在 DRAM 中合并數(shù)據(jù)時,發(fā)生了電源故障或其它事故,那么將丟失整個數(shù)據(jù)集合,因為在將數(shù)據(jù)讀入 DRAM 后就擦除了閃存扇區(qū)。JFFS 附加文件而不是重寫整個扇區(qū),并且具有崩潰/掉電安全保護這一功能。
   3 這可能是最重要的一點:JFFS 是專門為象閃存芯片那樣的嵌入式設(shè)備創(chuàng)建的,所以它的整個設(shè)計提供了更好的閃存管理。
   要構(gòu)建JFFS文件系統(tǒng),首先要有硬件設(shè)備FLASH及支持JFFS文件系統(tǒng)的操作系統(tǒng)。


摘要:本文主要分析了uclinux 2.4內(nèi)核的jffs文件系統(tǒng)機制。希望能對基于uclinux開發(fā)產(chǎn)品的廣大工程師有所幫助。

關(guān)鍵詞:uclinux vfs jffs

申明:這份文檔是按照自由軟件開放源代碼的精神發(fā)布的,任何人可以免費獲得、使用和重新發(fā)布,但是你沒有限制別人重新發(fā)布你發(fā)布內(nèi)容的權(quán)利。發(fā)布本文的目的是希望它能對讀者有用,但沒有任何擔(dān)保,甚至沒有適合特定目的的隱含的擔(dān)保。更詳細(xì)的情況請參閱 GNU 通用公共許可證(GPL),以及GNU 自由文檔協(xié)議(GFDL)

你應(yīng)該已經(jīng)和文檔一起收到一份GNU 通用公共許可證(GPL)的副本。如果還沒有,寫信給:
The Free Software Foundation, Inc., 675 Mass Ave, Cambridge,MA02139, USA

歡迎各位指出文檔中的錯誤與疑問


一、flash讀寫的特殊性
對于嵌入式系統(tǒng),flash是很常見的一種設(shè)備,而大部分的嵌入式系統(tǒng)都是把文件系統(tǒng)建立在flash之上,由于對flash操作的特殊性,使得在flash上的文件系統(tǒng)和普通磁盤上的文件系統(tǒng)有很大的差別,對flash操作的特殊性包括:
1 不能對單個字節(jié)進行擦除,最小的擦寫單位是一個block,有時候也稱為一個扇區(qū)。典型的一個block的大小是64k。不同的flash會有不同,具體參考flash芯片的規(guī)范。
2 寫操作只能對一個原來是空(也就是該地址的內(nèi)容是全f)的位置操作,如果該位置非空,寫操作不起作用,也就是說如果要改寫一個原來已經(jīng)有內(nèi)容的空間,只能是讀出該sectorram,在ram中改寫,然后寫整個sector
由于這些特殊寫,所以在flash這樣的設(shè)備上建立文件也有自己獨特的特點,下面我們就以jffs為例進行分析。

二、jffs體系結(jié)構(gòu)介紹
1
、存儲結(jié)構(gòu)
jffs中,所有的文件和目錄是一樣對待的,都是用一個jffs_raw_inode來表示


整個flash上就是由一個一個的raw inode排列組成,一個目錄只有一個raw inode,對于文件則是由一個或多個raw inode組成。

2
、文件組成
在文件系統(tǒng)mountflash設(shè)備上的時候,會掃描flash,從而根據(jù)flash上的所有屬于一個文件的raw inode建立一個jffs_file結(jié)構(gòu)以及node list。
下面的圖顯示了一個文件的組成


一個文件是由若干個jffs_node組成,每一個jffs_node是根據(jù)flash上得jffs_raw_inode而建立的,jffs_file主要維護兩個鏈表
版本鏈表:主要是描述該node創(chuàng)建的早晚,就是說version_head指向的是一個最老的node,也就意味著垃圾回收的時候最該回收的就是這個最老的node。
區(qū)域鏈表:這個鏈表主要是為讀寫文件創(chuàng)建的,version_head指向的node代表的文件數(shù)據(jù)區(qū)域是0~~~n-1 之后依次的節(jié)點分別是 n~~~m-1 m~~~~o-1 …….其中n<M<="" p="" />

3
、操作
對文件的讀操作應(yīng)該是比較簡單,但是寫操作,包括更改文件名等操作都是引起一個新的jffs_node的誕生,同時要寫一個相映的raw inodeflash上,這樣的操作有可能導(dǎo)致前面的某個jffs_node上面的數(shù)據(jù)完全失效,從而導(dǎo)致對應(yīng)flash上的raw inode的空間成為dirty
下面舉一個例子可能會更清楚一些。

一個文件的range list是由上面的三個jffs_node組成,當(dāng)我們做如下寫操作的時候
lseek( fd, 10, SEEK_SET );
write( fd, buf,40 );
第一個和最后一個node被截短了,第二個node完全被新數(shù)據(jù)替換,該node會從鏈表上摘下來,flash上空間變成dirty。如果做如下寫操作的時候
lseek( fd, 23, SEEK_SET );
write( fd, buf,5 );
此時,第二個node被分裂成兩個node,同時產(chǎn)生一個新的node,range鏈表的元素變成五個。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
嵌入式系統(tǒng)開發(fā)
嵌入式linux系統(tǒng)開發(fā)概述
Linux根文件系統(tǒng)裁剪 論文閱讀筆記
jffs2,yaffs2,logfs,ubifs文件系統(tǒng)性能分析
JFFS2 文件系統(tǒng)及新特性介紹
UBIFS文件系統(tǒng)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服