国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

YAFFS文件系統(tǒng)在嵌入式Linux上的實(shí)現(xiàn)

發(fā)布時(shí)間:2010-8-31 10:19    發(fā)布者:techshare
關(guān)鍵詞: linux , YAFFS , 嵌入式 , 文件系統(tǒng)
隨著嵌入式技術(shù)在各種電子產(chǎn)品中的廣泛應(yīng)用,嵌入式系統(tǒng)中的數(shù)據(jù)存儲(chǔ)和管理已經(jīng)成為一個(gè)重要的研究課題。Flash存儲(chǔ)器具有速度快、容量大、成本低等很多優(yōu)點(diǎn),因此在嵌入式系統(tǒng)中被廣泛用做外存儲(chǔ)器件。Flash主要有NOR和NAND兩種類型。目前,針對(duì)NOR Flash設(shè)計(jì)的文件系統(tǒng)JFFS/JFFS2在嵌入式系統(tǒng)中已得到廣泛的應(yīng)用;隨著NAND作為大容量存儲(chǔ)介質(zhì)的普及,基于NAND閃存的文件系統(tǒng)YAFFS(Yet Another Flash File System)正逐漸被應(yīng)用到嵌入式系統(tǒng)中。

NAND閃存介紹

NOR 和NAND是現(xiàn)在市場(chǎng)上兩種主要的非易失性閃存技術(shù)。NOR比較適合存儲(chǔ)程序代碼,其容量一般小于16MB;NAND則是高密度數(shù)據(jù)存儲(chǔ)的理想解決方案,其容量可達(dá)1GB以上。NAND閃存的存儲(chǔ)單元為頁(yè)和塊。一般來(lái)說(shuō),128MB以下容量芯片的一頁(yè)大小為528字節(jié),依次分為2個(gè)256字節(jié)的主數(shù)據(jù)區(qū),最后是16字節(jié)的備用空間;一個(gè)塊由若干頁(yè)組成,通常為32頁(yè);一個(gè)存儲(chǔ)設(shè)備又由若干塊組成。與其他存儲(chǔ)器相比,NAND閃存具有以下特點(diǎn):不是完全可靠的,每塊芯片出廠時(shí)都有一定比例的壞塊存在;各個(gè)存儲(chǔ)單元是不可直接改寫的,在每次改寫操作之前需要先擦除;擦除操作以塊為單位進(jìn)行,而讀寫操作通常以頁(yè)為單位進(jìn)行;各塊的擦除次數(shù)有限,一般為10萬(wàn)"100萬(wàn)次;使用復(fù)雜的I/O口串行存取數(shù)據(jù)。

YAFFS文件系統(tǒng)簡(jiǎn)介

YAFFS類似于JFFS/JFFS2,是專門為NAND閃存設(shè)計(jì)的嵌入式文件系統(tǒng),適用于大容量的存儲(chǔ)設(shè)備。它是日志結(jié)構(gòu)的文件系統(tǒng),提供了損耗平衡和掉電保護(hù),可以有效地避免意外掉電對(duì)文件系統(tǒng)一致性和完整性的影響。YAFFS文件系統(tǒng)是按層次結(jié)構(gòu)設(shè)計(jì)的,分為文件系統(tǒng)管理層接口、YAFFS內(nèi)部實(shí)現(xiàn)層和NAND接口層,這樣就簡(jiǎn)化了其與系統(tǒng)的接口設(shè)計(jì),可以方便地集成到系統(tǒng)中去。與JFFS相比,它減少了一些功能,因此速度更快,占用內(nèi)存更少。

YAFFS充分考慮了NAND閃存的特點(diǎn),根據(jù)NAND閃存以頁(yè)面為單位存取的特點(diǎn),將文件組織成固定大小的數(shù)據(jù)段。利用NAND閃存提供的每個(gè)頁(yè)面16字節(jié)的備用空間來(lái)存放ECC(Error Correction Code)和文件系統(tǒng)的組織信息,不僅能夠?qū)崿F(xiàn)錯(cuò)誤檢測(cè)和壞塊處理,也能夠提高文件系統(tǒng)的加載速度。YAFFS采用一種多策略混合的垃圾回收算法,結(jié)合了貪心策略的高效性和隨機(jī)選擇的平均性,達(dá)到了兼顧損耗平均和系統(tǒng)開(kāi)銷的目的。

YAFFS文件組織結(jié)構(gòu)

YAFFS將文件組織成固定大小(512字節(jié))的數(shù)據(jù)段。每個(gè)文件都有一個(gè)頁(yè)面專門存放文件頭,文件頭保存了文件的模式、所有者id、組id、長(zhǎng)度、文件名等信息。為了提高文件數(shù)據(jù)塊的查找速度,文件的數(shù)據(jù)段被組織成樹形結(jié)構(gòu)。YAFFS在文件進(jìn)行改寫時(shí)總是先寫入新的數(shù)據(jù)塊,然后將舊的數(shù)據(jù)塊從文件中刪除。YAFFS使用存放在頁(yè)面?zhèn)溆每臻g中的ECC進(jìn)行錯(cuò)誤檢測(cè),出現(xiàn)錯(cuò)誤后會(huì)進(jìn)行一定次數(shù)的重試,多次重試失敗后,該頁(yè)面就被停止使用。

YAFFS物理數(shù)據(jù)組織

YAFFS充分利用了NAND閃存提供的每個(gè)頁(yè)面16字節(jié)的備用空間,參考了SmartMedia的設(shè)定,備用空間中6個(gè)字節(jié)被用作頁(yè)面數(shù)據(jù)的ECC,2個(gè)字節(jié)分別用作塊狀態(tài)字和數(shù)據(jù)狀態(tài)字,其余的8字節(jié)(64位)用來(lái)存放文件系統(tǒng)的組織信息,即元數(shù)據(jù)。由于文件系統(tǒng)的基本組織信息保存在頁(yè)面的備份空間中,因此,在文件系統(tǒng)加載時(shí)只需要掃描各個(gè)頁(yè)面的備份空間,即可建立起整個(gè)文件系統(tǒng)的結(jié)構(gòu),而不需要像JFFS 那樣掃描整個(gè)介質(zhì),從而大大加快了文件系統(tǒng)的加載速度。

YAFFS擦除塊和頁(yè)面分配

YAFFS中用數(shù)據(jù)結(jié)構(gòu)來(lái)描述每個(gè)擦除塊的狀態(tài)。該數(shù)據(jù)結(jié)構(gòu)記錄了塊狀態(tài),并用一個(gè)32位的位圖表示塊內(nèi)各個(gè)頁(yè)面的使用情況。在YAFFS中,有且僅有一個(gè)塊處于“當(dāng)前分配”狀態(tài)。新頁(yè)面從當(dāng)前進(jìn)行分配的塊中順序進(jìn)行分配,若當(dāng)前塊已滿,則順序?qū)ふ蚁乱粋(gè)空閑塊。

YAFFS垃圾收集機(jī)制

YAFFS使用一種多策略混合的算法來(lái)進(jìn)行垃圾回收,將貪心策略和隨機(jī)選擇策略按一定比例混合使用:當(dāng)滿足特定的小概率條件時(shí),垃圾回收器會(huì)試圖隨機(jī)選擇一個(gè)可回收的頁(yè)面;而在其他情況下,則使用貪心策略回收最“臟”的塊。通過(guò)使用多策略混合的方法,YAFFS能夠有效地改善貪心策略造成的不平均;通過(guò)不同的混合比例,則可以控制損耗平均和系統(tǒng)開(kāi)銷之間的平衡。考慮到NAND的擦除很快(和NOR相比可忽略不計(jì)),YAFFS將垃圾收集的檢查放在寫入新頁(yè)面時(shí)進(jìn)行,而不是采用JFFS那樣的后臺(tái)線程方式,從而簡(jiǎn)化了設(shè)計(jì)。

YAFFS實(shí)現(xiàn)開(kāi)發(fā)環(huán)境簡(jiǎn)介

本文采用的是宿主機(jī)+目標(biāo)板的開(kāi)發(fā)模式。宿主機(jī)為PC+REDHAT9.0,目標(biāo)板為三星公司的S3C2410+嵌入式Linux,版本為2.6.11.12。NAND閃存是三星公司64MB的K9F5608U0C。YAFFS的源碼可以從網(wǎng)站下載。

YAFFS移植:

1)在內(nèi)核中建立YAFFS目錄fs/yaffs,并把下載的YAFFS代碼復(fù)制到該目錄下面。

2)修改fs/Kconfig,使得可以配置YAFFS。

3)修改fs/makefile,添加如下內(nèi)容:obj-$(CONFIG_YAFFS_FS) += yaffs/

4)在生成的YAFFS目錄中生成Makefile 和Kconfig文件。


  
5)修改NAND分區(qū)。此分區(qū)要結(jié)合vivi里的分區(qū)進(jìn)行設(shè)置,如下:


  
6)配置內(nèi)核時(shí)選中MTD支持和YAFFS支持。

7)編譯內(nèi)核并將內(nèi)核下載到開(kāi)發(fā)板的Flash中。

YAFFS文件系統(tǒng)測(cè)試:

1)內(nèi)核啟動(dòng)之后,啟動(dòng)信息中應(yīng)該含有如下內(nèi)容:

  
  
2)如果在內(nèi)核里面添加了proc文件系統(tǒng)的支持,那么proc中應(yīng)該包含有關(guān)YAFFS的信息。

3)dev目錄下的相關(guān)目錄中包括有關(guān)NAND設(shè)備的信息。

4)建立mount目錄


  
將文件拷貝到mount上的目錄下后,umount設(shè)備,再次mount后可以發(fā)現(xiàn)拷貝的文件仍然存在。這時(shí)刪除該文件,然后umount,再次mount后可以發(fā)現(xiàn)拷貝的文件已經(jīng)被刪除,由此可見(jiàn)該分區(qū)可以正常讀寫。

5)在Flash上建立根文件系統(tǒng):


  
重新啟動(dòng),并改變啟動(dòng)參數(shù):param set linux_cmd_line "noinitrd root=/dev/mtdblock3 init=/linuxrc console="ttySAC0""再次重新啟動(dòng)后,開(kāi)發(fā)板就可以從Flash啟動(dòng)根文件系統(tǒng)了。

結(jié)語(yǔ)

YAFFS是專門為NAND閃存設(shè)計(jì)的,它的出現(xiàn)使得價(jià)格低廉的NAND閃存芯片具有了高效性和健壯性。YAFFS文件系統(tǒng)性能優(yōu)越且易于移植,已經(jīng)成功應(yīng)用于Linux、?Clinux和Windows CE等嵌入式操作系統(tǒng)上。現(xiàn)在,每頁(yè)大小為2Kb的新型超大容量NAND閃存已經(jīng)出現(xiàn),針對(duì)這種Flash的文件系統(tǒng)YAFFS2正處于研究和應(yīng)用當(dāng)中。可以預(yù)見(jiàn),基于NAND閃存的文件系統(tǒng)YAFFS/ YAFFS2將會(huì)應(yīng)用于更多的嵌入式系統(tǒng)。
本文地址:http://www.qingdxww.cn/thread-24729-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • 更佳設(shè)計(jì)的解決方案——Microchip模擬開(kāi)發(fā)生態(tài)系統(tǒng)
  • 利用模擬開(kāi)發(fā)工具生態(tài)系統(tǒng)進(jìn)行安全電路設(shè)計(jì)
  • 我們是Microchip
  • 你仿真過(guò)嗎?使用免費(fèi)的MPLAB Mindi模擬仿真器降低設(shè)計(jì)風(fēng)險(xiǎn)
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕视频二区 | 91在线看视频 | 一级特黄aaa大片 | 再次拥抱阳光漫画免费下拉式观看 | 国产精品不卡无毒在线观看 | 2021国产麻豆剧果冻传媒入 | 亚洲黄色片一级 | 免费亚洲网站 | 四虎影视在线 | 灵与肉电视剧剧情全集免费 | 在线观看视频网站www色 | 99久久国产综合精麻豆 | 久久网站免费 | 日韩城人视频 | 在线观看日本中文字幕 | 免费看欧美日韩一区二区三区 | 狠狠狠色| 99精品这里只有精品高清视频 | 蜜柚在线观看 | 91麻精品国产91久久久久 | 国产无卡一级毛片aaa | 榴莲丝瓜黄瓜草莓向日葵污苹果 | 4hu四虎永久地址公告2022 | 国产中文字幕在线 | 欧美色婷婷 | 欧美一区二区三区四区五区六区 | 国产一区亚洲二区 | 国内一级毛片 | 久草大 | 国产日产亚洲欧美综合另类 | 亚洲欧美日韩久久一区 | 四虎影视网 | 日日夜夜噜 | 久久综合一区 | 香蕉久久高清国产精品免费 | 男人将机机桶女人 | 日韩欧美在线观看视频 | 国产一级毛片夜一级毛片 | 日本午夜精品 | 中文天堂最新版www在线观看 | 日本中文字幕高清 |