資料介紹
在嵌入式Linux的開發(fā)工作中,常用的存儲設備有NorFlash和NandFlash,其中價格低廉并適用于高密度和大容量存儲的NandFlash運用更為廣泛[1]。YAFFS(Yet Another Flash File System)文件系統(tǒng)是專門針對NandFlash的特殊構造設計的,是一種日志結構的文件系統(tǒng),性能超越了原有的JFFS系列文件系統(tǒng)。但隨著嵌入式技術的發(fā)展,在NandFlash介質上的嵌入式Linux中構造YAFFS時,YAFFS存在掛載時間過長和損耗均衡性不足兩方面的缺點,需要進一步改進和優(yōu)化。
1 YAFFS文件系統(tǒng)
在嵌入式所用的NandFlash中,基本的讀寫單位是頁(page),YAFFS的存儲位也是頁(一般稱為Chunk),分為附加區(qū)(OOB)和數(shù)據(jù)區(qū)。32頁組成塊(block)是基本的擦除單位[2]。由于YAFFS的文件偏移地址和閃存的物理地址不一致而建立了一張文件與物理頁的映射表。閃存的頁序號作為表內(nèi)容,以每頁描述的文件偏移量作為表索引,再把這張大的映射表分為若干小表,組織成樹結構,以提高文件數(shù)據(jù)塊的查找速度。這種在內(nèi)存中建立的層次索引目錄稱之為節(jié)點樹(TnodeTree),是YAFFS的核心模型,如圖1所示。在節(jié)點樹中按照邏輯索引(Logical chunk index)找到物理地址索引(Physical chunk index)。當文件變大時,所需的葉子節(jié)點也會增加,此時節(jié)點樹就會“拔高”和“增肥”。當文件進行刪除操作時,用遞歸的方法從葉節(jié)點向上收縮,釋放已被刪除節(jié)點對應的物理頁。

2 構建YAFFS文件系統(tǒng)
2.1 實驗平臺
開發(fā)過程中運用的是目標板與宿主機的交叉編譯模式。宿主機即PC機,采用的是虛擬機+Linux RedHat9.0系統(tǒng);目標板的硬件是ARM板,采用的是一塊S3C2440的ARM9微處理器,帶有一塊256 MB的NandFlash、64 MB的SDRAM內(nèi)存。目標板采用的開發(fā)軟件是嵌入式Linux2.6.28+交叉編譯工具arm-Linux-gcc4.3.1。YAFFS文件系統(tǒng)的開發(fā)流程如圖2所示,引導程序Boot-Loader一般是固定在開板的Flash中(這里不做詳解)。

2.2 內(nèi)核移植
?。?)修改交叉編譯環(huán)境,使其適用于本實驗平臺。修改頂級Makefile中定義的ARM編譯器,使之與所采用的平臺處理器相對應。修改如下:
ARCH = arm
CROSS_COMPILE = /usr/local/3.4.1/arm-linux-
同時,為了支持實驗平臺處理器12 MHz的晶振頻率,修改Linux提供的輸入時鐘,在文件arch/arm/mach-
s3c2440/mach-smdk2440.c中定義s3c24xx_init_clocks
(12 000 000);并且在該文件中將Linux支持的machine名稱改為MACHINE_START(S3C2440,“Study-S3C2440”);最后,修改Linux中默認的機器號,使之與BootLoarder傳遞的機器參數(shù)782一致。在arch/arm/tools/math-types中,機器型號語句修改為:
S3C2440 ARCH_S3C2440 S3C2440 782
1 YAFFS文件系統(tǒng)
在嵌入式所用的NandFlash中,基本的讀寫單位是頁(page),YAFFS的存儲位也是頁(一般稱為Chunk),分為附加區(qū)(OOB)和數(shù)據(jù)區(qū)。32頁組成塊(block)是基本的擦除單位[2]。由于YAFFS的文件偏移地址和閃存的物理地址不一致而建立了一張文件與物理頁的映射表。閃存的頁序號作為表內(nèi)容,以每頁描述的文件偏移量作為表索引,再把這張大的映射表分為若干小表,組織成樹結構,以提高文件數(shù)據(jù)塊的查找速度。這種在內(nèi)存中建立的層次索引目錄稱之為節(jié)點樹(TnodeTree),是YAFFS的核心模型,如圖1所示。在節(jié)點樹中按照邏輯索引(Logical chunk index)找到物理地址索引(Physical chunk index)。當文件變大時,所需的葉子節(jié)點也會增加,此時節(jié)點樹就會“拔高”和“增肥”。當文件進行刪除操作時,用遞歸的方法從葉節(jié)點向上收縮,釋放已被刪除節(jié)點對應的物理頁。

2 構建YAFFS文件系統(tǒng)
2.1 實驗平臺
開發(fā)過程中運用的是目標板與宿主機的交叉編譯模式。宿主機即PC機,采用的是虛擬機+Linux RedHat9.0系統(tǒng);目標板的硬件是ARM板,采用的是一塊S3C2440的ARM9微處理器,帶有一塊256 MB的NandFlash、64 MB的SDRAM內(nèi)存。目標板采用的開發(fā)軟件是嵌入式Linux2.6.28+交叉編譯工具arm-Linux-gcc4.3.1。YAFFS文件系統(tǒng)的開發(fā)流程如圖2所示,引導程序Boot-Loader一般是固定在開板的Flash中(這里不做詳解)。

2.2 內(nèi)核移植
?。?)修改交叉編譯環(huán)境,使其適用于本實驗平臺。修改頂級Makefile中定義的ARM編譯器,使之與所采用的平臺處理器相對應。修改如下:
ARCH = arm
CROSS_COMPILE = /usr/local/3.4.1/arm-linux-
同時,為了支持實驗平臺處理器12 MHz的晶振頻率,修改Linux提供的輸入時鐘,在文件arch/arm/mach-
s3c2440/mach-smdk2440.c中定義s3c24xx_init_clocks
(12 000 000);并且在該文件中將Linux支持的machine名稱改為MACHINE_START(S3C2440,“Study-S3C2440”);最后,修改Linux中默認的機器號,使之與BootLoarder傳遞的機器參數(shù)782一致。在arch/arm/tools/math-types中,機器型號語句修改為:
S3C2440 ARCH_S3C2440 S3C2440 782
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 嵌入式Linux系統(tǒng)移植-(Linux文件系統(tǒng))
- 嵌入式linux系統(tǒng)中常用的文件系統(tǒng)
- 如何實現(xiàn)Linux內(nèi)核移植和yaffs2根文件系統(tǒng)制作 9次下載
- Linux日志文件系統(tǒng)解析 0次下載
- YAFFS文件系統(tǒng)在C51系統(tǒng)上的實現(xiàn)過程解析 0次下載
- 《Linux設備驅動開發(fā)詳解》第5章、Linux文件系統(tǒng)與設備文件系統(tǒng) 0次下載
- 超大容量NANDFlash文件系統(tǒng)-YAFFS2在Linux下的實現(xiàn) 11次下載
- 細數(shù)那些流行的 Linux 文件系統(tǒng) 0次下載
- 基于閃存YAFFS文件系統(tǒng)的索引機制的改進_李紀扣 0次下載
- Linux源碼分析系列之文件系統(tǒng) 51次下載
- Linux虛擬文件系統(tǒng)實現(xiàn)技術探討 32次下載
- YAFFS嵌入式文件系統(tǒng)應用研究
- 構造嵌入式Linux的文件系統(tǒng)
- Linux文件系統(tǒng)課程 0次下載
- 基于VxWorks的TrueFFS文件系統(tǒng)的構建與設計
- Linux三大主流文件系統(tǒng)解析 1.2k次閱讀
- 如何更改Linux文件系統(tǒng)終端顯示顏色 1.7k次閱讀
- 如何修改buildroot和debian文件系統(tǒng) 1.4k次閱讀
- Linux系統(tǒng)如何擴展文件系統(tǒng) 1.5k次閱讀
- Linux 文件系統(tǒng)層的主要結構 1.7k次閱讀
- 深入剖析Linux文件系統(tǒng)的架構 1.4k次閱讀
- 深入剖析Linux內(nèi)核虛擬文件系統(tǒng) 3.9k次閱讀
- 嵌入式Linux啟動時間優(yōu)化的秘密之二文件系統(tǒng) 5.8k次閱讀
- 基于Buildroot的Linux系統(tǒng)構建之根文件系統(tǒng) 3.2k次閱讀
- 如何區(qū)別Linux文件系統(tǒng)呢? 4.3k次閱讀
- 了解Linux默認文件系統(tǒng)的發(fā)展歷史 7k次閱讀
- 文件系統(tǒng)是什么?淺談EXT文件系統(tǒng)歷史 6.2k次閱讀
- 玩轉Linux,先把文件系統(tǒng)搞懂 2.2k次閱讀
- 制作ZedBoard上linux根文件系統(tǒng)(ramdisk) 1.9k次閱讀
- 基于zynq的Linux根文件系統(tǒng)生成 6.5k次閱讀
下載排行
本周
- 1冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 4次下載 | 10 積分
- 2安川A1000變頻器中文版說明書
- 20.16 MB | 3次下載 | 3 積分
- 3直流電路的組成和基本定律
- 1.67 MB | 2次下載 | 免費
- 4丹佛斯2800系列變頻器說明書
- 8.00 MB | 1次下載 | 5 積分
- 5PC8011同步開關型降壓3.5A單節(jié)鋰電池充電管理電路技術手冊
- 0.74 MB | 1次下載 | 免費
- 6ES7243E+ES8311音頻錄制與播放電路資料
- 0.06 MB | 1次下載 | 5 積分
- 7SDM02 激光測距模塊產(chǎn)品手冊
- 0.43 MB | 1次下載 | 免費
- 8SDFM 激光測距模塊模組手冊
- 0.54 MB | 1次下載 | 免費
本月
- 1CH341編程器軟件NeoProgrammer_2.2.0.10
- 20.47 MB | 170次下載 | 1 積分
- 22025智能家居傳感器市場分析及創(chuàng)新應用
- 3.11 MB | 43次下載 | 免費
- 3RV1126B系列開發(fā)板產(chǎn)品資料
- 4.19 MB | 18次下載 | 免費
- 4CH341編程軟件下載
- 2.50 MB | 16次下載 | 5 積分
- 5全志系列-米爾基于T153核心板開發(fā)板 四核異構、3路千兆網(wǎng),賦能多元化工業(yè)場景
- 3.05 MB | 12次下載 | 免費
- 6【開源】60余套STM32單片機、嵌入式Linux、物聯(lián)網(wǎng)、人工智能項目案例及入門學習資源包
- 10.55 MB | 8次下載 | 免費
- 7冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 4次下載 | 10 積分
- 8特斯拉MODEL S車載充電機主電路回路原理圖
- 0.81 MB | 4次下載 | 3 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233094次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191448次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183356次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81604次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73824次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





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