在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > YAFFS文件系統(tǒng)在嵌入式Linux系統(tǒng)中的構(gòu)建與改進(jìn)

            YAFFS文件系統(tǒng)在嵌入式Linux系統(tǒng)中的構(gòu)建與改進(jìn)

            作者: 時間:2013-09-13 來源:網(wǎng)絡(luò) 收藏
            在嵌入式Linux的開發(fā)工作中,常用的存儲設(shè)備有NorFlash和NandFlash,其中價格低廉并適用于高密度和大容量存儲的NandFlash運用更為廣泛[1]。(Yet Another Flash File System)是專門針對NandFlash的特殊構(gòu)造設(shè)計的,是一種日志結(jié)構(gòu)的,性能超越了原有的JFFS系列。但隨著嵌入式技術(shù)的發(fā)展,在NandFlash介質(zhì)上的嵌入式Linux中構(gòu)造時,存在掛載時間過長和損耗均衡性不足兩方面的缺點,需要進(jìn)一步改進(jìn)和優(yōu)化。

            1 YAFFS文件系統(tǒng)

            在嵌入式所用的NandFlash中,基本的讀寫單位是頁(page),YAFFS的存儲位也是頁(一般稱為Chunk),分為附加區(qū)(OOB)和數(shù)據(jù)區(qū)。32頁組成塊(block)是基本的擦除單位[2]。由于YAFFS的文件偏移地址和閃存的物理地址不一致而建立了一張文件與物理頁的映射表。閃存的頁序號作為表內(nèi)容,以每頁描述的文件偏移量作為表索引,再把這張大的映射表分為若干小表,組織成樹結(jié)構(gòu),以提高文件數(shù)據(jù)塊的查找速度。這種在內(nèi)存中建立的層次索引目錄稱之為節(jié)點樹(TnodeTree),是YAFFS的核心模型,如圖1所示。在節(jié)點樹中按照邏輯索引(Logical chunk index)找到物理地址索引(Physical chunk index)。當(dāng)文件變大時,所需的葉子節(jié)點也會增加,此時節(jié)點樹就會“拔高”和“增肥”。當(dāng)文件進(jìn)行刪除操作時,用遞歸的方法從葉節(jié)點向上收縮,釋放已被刪除節(jié)點對應(yīng)的物理頁。


            2 構(gòu)建YAFFS文件系統(tǒng)


            2.1 實驗平臺

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


            2.2 內(nèi)核移植

            (1)修改交叉編譯環(huán)境,使其適用于本實驗平臺。修改頂級Makefile中定義的ARM編譯器,使之與所采用的平臺處理器相對應(yīng)。修改如下:

            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中默認(rèn)的機器號,使之與BootLoarder傳遞的機器參數(shù)782一致。在arch/arm/tools/math-types中,機器型號語句修改為:

            S3C2440 ARCH_S3C2440 S3C2440 782

            (2)內(nèi)核支持MTD。MTD是閃存與文件系統(tǒng)的接口,NandFlash、YAFFS文件系統(tǒng)與MTD的聯(lián)系如圖3所示。

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



            上一頁 1 2 3 下一頁

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉