嵌入式linux下的文件系統(tǒng)_第1頁
嵌入式linux下的文件系統(tǒng)_第2頁
嵌入式linux下的文件系統(tǒng)_第3頁
嵌入式linux下的文件系統(tǒng)_第4頁
嵌入式linux下的文件系統(tǒng)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

.嵌入式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è)計(jì)的日志文件系統(tǒng)精品文檔放心下載Yaffs:專門為NandFlash設(shè)計(jì)proc:為內(nèi)核和內(nèi)核模塊將信息發(fā)送給進(jìn)程提供一種機(jī)制,可以查看系統(tǒng)模塊裝載的信息感謝閱讀devFS:設(shè)備文件系統(tǒng)支持4TB存儲(chǔ)、文件名稱最長1012字符可選擇邏輯塊快速符號(hào)鏈接Ext2不適合flash設(shè)備是為象IDE設(shè)備那樣的塊設(shè)備設(shè)計(jì)的,邏輯塊大小必須是512byte、1KB、2KB等精品文檔放心下載沒有提供對(duì)基于扇區(qū)的擦除/寫操作的良好管理如果在一個(gè)扇區(qū)中擦除單個(gè)字節(jié),必須將整個(gè)扇區(qū)復(fù)制到RAM,然后擦除,再重寫入.在出現(xiàn)電源故障時(shí),Ext2fs是不能防止崩潰的文件系統(tǒng)不支持損耗平衡,縮短了flash的壽命jffs/jffs2文件系統(tǒng)的優(yōu)缺點(diǎn)日志文件系統(tǒng)提供了更好的崩潰、掉電安全保護(hù)jffs2支持對(duì)flash的均勻磨損在扇區(qū)級(jí)別上執(zhí)行閃存擦除/寫/讀操作要比Ext2文件系統(tǒng)好精品文檔放心下載文件系統(tǒng)接近滿時(shí),JFFS2會(huì)大大放慢運(yùn)行速度——垃圾收集感謝閱讀專門為Nandflash設(shè)計(jì)的日志文件系統(tǒng)jffs/jffs2不適合大容量的Nandflash感謝閱讀jffs的日志通過jffs_node建立在RAM中,占用感謝閱讀來維護(hù)節(jié)點(diǎn)啟動(dòng)的時(shí)候需要掃描日志節(jié)點(diǎn),不適合大容量的Nandflash謝謝閱讀FAT系統(tǒng)沒有日志編譯yaffs文件系統(tǒng)mtd的最新補(bǔ)丁升級(jí)?接口更新,適合與yaffs.與原有的mtd驅(qū)動(dòng)程序不兼容,需要重寫如果使用舊mtd驅(qū)動(dòng)需要定義Makefile中精品文檔放心下載參考文檔:yaffs-rootfs-howto最新版的yaffs網(wǎng)站:使用yaffs文件系統(tǒng)通過cat/proc/yaffs命令可以看到y(tǒng)affs系感謝閱讀統(tǒng)的相關(guān)信息mount-tyaffs/dev/mtdblock/0/mnt/yaffs謝謝閱讀關(guān)于Linux文件系統(tǒng)JFFS全稱為:TheJournallingFlashFileSystem(日志閃存文件系統(tǒng))最初由瑞典的Axis精品文檔放心下載Communications開發(fā),RedHat的DavidWoodhouse對(duì)它進(jìn)行了改進(jìn)。作為用于微謝謝閱讀型嵌入式設(shè)備的原始閃存芯片的實(shí)際文件系統(tǒng)而出現(xiàn)。JFFS文件系統(tǒng)是日志結(jié)構(gòu)化的,這謝謝閱讀意味著它基本上是一長列節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)包含有關(guān)文件的部分信息—可能是文件的名稱、謝謝閱讀也許是一些數(shù)據(jù)。相對(duì)于Ext2fs,JFFS因?yàn)橛幸韵逻@些優(yōu)點(diǎn)而在無盤嵌入式設(shè)備中越來感謝閱讀越受歡迎:.1JFFS在扇區(qū)級(jí)別上執(zhí)行閃存擦除/寫/讀操作要比Ext2文件系統(tǒng)好。謝謝閱讀2JFFS提供了比Ext2更好的崩潰/掉電安全保護(hù)。當(dāng)需要更改少量數(shù)據(jù)時(shí),Ext2文精品文檔放心下載件系統(tǒng)將整個(gè)扇區(qū)復(fù)制到內(nèi)存(DRAM)中,在內(nèi)存中合并新數(shù)據(jù),并寫回整個(gè)扇區(qū)。這謝謝閱讀意味著為了更改單個(gè)字,必須對(duì)整個(gè)扇區(qū)(64KB)執(zhí)行讀/擦除/寫例程—這樣做的效感謝閱讀率非常低。要是運(yùn)氣差,當(dāng)正在DRAM中合并數(shù)據(jù)時(shí),發(fā)生了電源故障或其它事故,那感謝閱讀么將丟失整個(gè)數(shù)據(jù)集合,因?yàn)樵趯?shù)據(jù)讀入DRAM后就擦除了閃存扇區(qū)。JFFS附加文件謝謝閱讀而不是重寫整個(gè)扇區(qū),并且具有崩潰/掉電安全保護(hù)這一功能。精品文檔放心下載這可能是最重要的一點(diǎn):JFFS是專門為象閃存芯片那樣的嵌入式設(shè)備創(chuàng)建的,所以它的整個(gè)設(shè)計(jì)提供了更好的閃存管理。感謝閱讀要構(gòu)建JFFS文件系統(tǒng),首先要有硬件設(shè)備FLASH及支持JFFS文件系統(tǒng)的操作系統(tǒng)。精品文檔放心下載摘要:本文主要分析了uclinux2.4內(nèi)核的jffs文件系統(tǒng)機(jī)制。希望能對(duì)基于uclinux開發(fā)感謝閱讀產(chǎn)品的廣大工程師有所幫助。關(guān)鍵詞:uclinuxvfsjffs申明:這份文檔是按照自由軟件開放源代碼的精神發(fā)布的,任何人可以免費(fèi)獲得、使用和重感謝閱讀新發(fā)布,但是你沒有限制別人重新發(fā)布你發(fā)布內(nèi)容的權(quán)利。發(fā)布本文的目的是希望它能對(duì)讀感謝閱讀者有用,但沒有任何擔(dān)保,甚至沒有適合特定目的的隱含的擔(dān)保。更詳細(xì)的情況請(qǐng)參閱GNU精品文檔放心下載通用公共許可證(GPL),以及GNU自由文檔協(xié)議(GFDL)。謝謝閱讀.你應(yīng)該已經(jīng)和文檔一起收到一份GNU通用公共許可證(GPL)的副本。如果還沒有,寫信給:感謝閱讀TheFreeSoftwareFoundation,Inc.,675MassAve,Cambridge,MA02139,USA謝謝閱讀歡迎各位指出文檔中的錯(cuò)誤與疑問一、flash讀寫的特殊性對(duì)于嵌入式系統(tǒng),flash是很常見的一種設(shè)備,而大部分的嵌入式系統(tǒng)都是把文件系統(tǒng)建立感謝閱讀在flash之上,由于對(duì)flash操作的特殊性,使得在flash上的文件系統(tǒng)和普通磁盤上的文感謝閱讀件系統(tǒng)有很大的差別,對(duì)flash操作的特殊性包括:謝謝閱讀(1)不能對(duì)單個(gè)字節(jié)進(jìn)行擦除,最小的擦寫單位是一個(gè)block,有時(shí)候也稱為一個(gè)扇區(qū)。精品文檔放心下載典型的一個(gè)block的大小是64k。不同的flash會(huì)有不同,具體參考flash芯片的規(guī)范。精品文檔放心下載(2)寫操作只能對(duì)一個(gè)原來是空(也就是該地址的內(nèi)容是全f)的位置操作,如果該位置謝謝閱讀非空,寫操作不起作用,也就是說如果要改寫一個(gè)原來已經(jīng)有內(nèi)容的空間,只能是讀出該感謝閱讀sector到ram,在ram中改寫,然后寫整個(gè)sector。精品文檔放心下載由于這些特殊寫,所以在flash這樣的設(shè)備上建立文件也有自己獨(dú)特的特點(diǎn),下面我們就以謝謝閱讀jffs為例進(jìn)行分析。二、jffs體系結(jié)構(gòu)介紹1、存儲(chǔ)結(jié)構(gòu)在jffs中,所有的文件和目錄是一樣對(duì)待的,都是用一個(gè)jffs_raw_inode來表示謝謝閱讀.整個(gè)flash上就是由一個(gè)一個(gè)的rawinode排列組成,一個(gè)目錄只有一個(gè)rawinode,對(duì)于精品文檔放心下載文件則是由一個(gè)或多個(gè)rawinode組成。2、文件組成在文件系統(tǒng)mount到flash設(shè)備上的時(shí)候,會(huì)掃描flash,從而根據(jù)flash上的所有屬于一感謝閱讀個(gè)文件的rawinode建立一個(gè)jffs_file結(jié)構(gòu)以及nodelist。精品文檔放心下載下面的圖顯示了一個(gè)文件的組成一個(gè)文件是由若干個(gè)jffs_node組成,每一個(gè)jffs_node是根據(jù)flash上得jffs_raw_inode感謝閱讀而建立的,jffs_file主要維護(hù)兩個(gè)鏈表版本鏈表:主要是描述該node創(chuàng)建的早晚,就是說version_head指向的是一個(gè)最老的感謝閱讀node,也就意味著垃圾回收的時(shí)候最該回收的就是這個(gè)最老的node。精品文檔放心下載區(qū)域鏈表:這個(gè)鏈表主要是為讀寫文件創(chuàng)建的,version_head指向的node代表的文件數(shù)精品文檔放心下載據(jù)區(qū)域是0~~~n-1之后依次的節(jié)點(diǎn)分別是n~~~m-1m~~~~o-1…….其中n<M<=""感謝閱讀p=""/>3、操作對(duì)文件的讀操作應(yīng)該是比較簡單,但是寫操作,包括更改文件名等操作都是引起一個(gè)新的感謝閱讀jffs_node的誕生,同時(shí)要寫一個(gè)相映的rawinode到flash上,這樣的操作有可能導(dǎo)致前謝謝閱讀面的某個(gè)jffs_node上面的數(shù)據(jù)完全失效,從而導(dǎo)致對(duì)應(yīng)flash上的rawinode的空間成為謝謝閱讀.dirty。下面舉一個(gè)例子可能會(huì)更清楚一些。一個(gè)文件的rangelist是由上面的三個(gè)jffs_node組成,當(dāng)我們做如下寫操作的時(shí)候感謝閱讀lseek(fd,10,SEEK_SET);精品文檔放心下載write(fd,buf,40);第一個(gè)和最后一個(gè)node被截短了,第二個(gè)node完全被新數(shù)據(jù)替換,該node會(huì)從鏈表上謝謝閱讀摘下來,flash上空間變成dirty。如果做如下寫操作的時(shí)候謝謝閱讀lseek(fd,23,SEEK_SET);謝謝閱讀write(fd,buf,5);此時(shí),第二個(gè)node被分裂成兩個(gè)node,同時(shí)產(chǎn)生一個(gè)新的node,range鏈表的元素變精品文檔放心下載成五個(gè)?;贚inux2.6的YAFFS文件系統(tǒng)移植感謝閱讀v1.0,2005-6-6一、YAFFS文件系統(tǒng)簡介YAFFS,YetAnotherFlashFileSystem,是一種類似于JFFS/JFFS2的專門為Flash設(shè)計(jì)謝謝閱讀的嵌入式文件系統(tǒng)。與JFFS相比,它減少了一些功能,因此速度更快、占用內(nèi)存更少。感謝閱讀YAFFS和JFFS都提供了寫均衡,垃圾收集等底層操作。它們的不同之處在于:感謝閱讀.(1)、JFFS是一種日志文件系統(tǒng),通過日志機(jī)制保證文件系統(tǒng)的穩(wěn)定性。YAFFS僅僅借鑒精品文檔放心下載了日志系統(tǒng)的思想,不提供日志機(jī)能,所以穩(wěn)定性不如JAFFS,但是資源占用少。感謝閱讀(2)、JFFS中使用多級(jí)鏈表管理需要回收的臟塊,并且使用系統(tǒng)生成偽隨機(jī)變量決定要回精品文檔放心下載收的塊,通過這種方法能提供較好的寫均衡,在YAFFS中是從頭到尾對(duì)塊搜索,所以在垃精品文檔放心下載圾收集上JFFS的速度慢,但是能延長NAND的壽命。感謝閱讀(3)、JFFS支持文件壓縮,適合存儲(chǔ)容量較小的系統(tǒng);YAFFS不支持壓縮,更適合存儲(chǔ)容感謝閱讀量大的系統(tǒng)。YAFFS還帶有NAND芯片驅(qū)動(dòng),并為嵌入式系統(tǒng)提供了直接訪問文件系統(tǒng)的API,用戶可謝謝閱讀以不使用Linux中的MTD和VFS,直接對(duì)文件進(jìn)行操作。NANDFlash大多采用精品文檔放心下載MTD+YAFFS的模式。MTD(MemoryTechnologyDevices,內(nèi)存技術(shù)設(shè)備)是對(duì)Flash謝謝閱讀操作的接口,提供了一系列的標(biāo)準(zhǔn)函數(shù),將硬件驅(qū)動(dòng)設(shè)計(jì)和系統(tǒng)程序設(shè)計(jì)分開。精品文檔放心下載二、YAFFS文件系統(tǒng)的移植yaffs代碼可以從http://www.aleph1.co.uk/armlinux/projects/下載(yaffs代碼包括精品文檔放心下載yaffs_ecc.c,yaffs_fileem.c,yaffs_fs.c,yaffs_guts.c,yaffs_mtdif.c,yaffs_ramem.c。)感謝閱讀表一Yaffs文件系統(tǒng)源代碼相關(guān)文件及功能描述文件名功能yaffs_ecc.cECC校驗(yàn)算法yaffs_fileem.c測(cè)試flashyaffs_fs.c文件系統(tǒng)接口函數(shù)yaffs_guts.cYaffs文件系統(tǒng)算法yaffs_mtdif.cNAND函數(shù).yaffs_ramem.cRamdisk實(shí)現(xiàn)1.內(nèi)核中沒有YAFFS,所以需要自己建立YAFFS目錄,并把下載的YAFFS代碼復(fù)制到該目精品文檔放心下載錄下面。#mkdirfs/yaffs#cp*.c(yaffssourcecode)fs/yaffs精品文檔放心下載2.修改fs/Kconfig,使得可以配置yaffs:精品文檔放心下載source"fs/yaffs/Kconfig"3.修改fs/makefile,添加如下內(nèi)容:obj-$(CONFIG_YAFFS_FS)+=yaffs/精品文檔放心下載4.在fs目錄下生成yaffs目錄,并在里面生成一個(gè)makefile和Kconfig感謝閱讀Makefile內(nèi)容為:yaffs-objs:=yaffs_fs.oyaffs_guts.oyaffs_mtdif.oyaffs_ecc.o謝謝閱讀EXTRA_CFLAGS+=$(YAFFS_CONFIGS)-DCONFIG_KERNEL_2_6精品文檔放心下載Kconfig內(nèi)容為:##YAFFSfilesystemconfigurations謝謝閱讀#configYAFFS_FStristate"YetAnotherFlashFilingSystem(YAFFS)filesystemsupport"精品文檔放心下載helpYAFFS,forYetAnotherFlashFilingSystem,isafilingsystem精品文檔放心下載optimisedforNANDFlashchips.精品文檔放心下載.TocompiletheYAFFSfilesystemsupportasamodule,chooseMhere:精品文檔放心下載themodulewillbecalledyaffs.感謝閱讀Ifunsure,sayN.FurtherinformationonYAFFSisavailableat感謝閱讀<http://www.aleph1.co.uk/yaffs/>.謝謝閱讀configYAFFS_MTD_ENABLEDbool"NANDmtdsupport"dependsonYAFFS_FShelpThisaddstheyaffsfilesystemsupportforworkingwithaNANDmtd.感謝閱讀Ifunsure,sayY.configYAFFS_RAM_ENABLEDbool"yaffsramfilesystemsupport"精品文檔放心下載dependsonYAFFS_FShelpThisaddstheyaffsramfilesystemsupport.Nicefortestingonx86,感謝閱讀.butuses2MBofRAM.Don'tenableforNAND-basedtargets.感謝閱讀Ifunsure,sayN.comment"WARNING:mtdand/oryaffsramsupportshouldbeselected"感謝閱讀dependsonYAFFS_FS&&!YAFFS_MTD_ENABLED&&!YAFFS_RAM_ENABLED謝謝閱讀configYAFFS_USE_OLD_MTDbool"Oldmtdsupport"dependsonYAFFS_FS&&0helpEnablethistousetheoldMTDstuffthatdidnothaveyaffssupport.謝謝閱讀Youcanusethistogetaroundcompilationproblems,butthebest感謝閱讀thingtodoistoupgradeyourMTDsupport.Youwillgetbetterspeed.精品文檔放心下載Ifunsure,sayN.configYAFFS_USE_NANDECCbool"UseECCfunctionsofthegenericMTD-NANDdriver"精品文檔放心下載dependsonYAFFS_FSdefaultyhelp.ThisenablestheECCfunctionsofthegenericMTD-NANDdriver.感謝閱讀Thiswillnotworkifyouareusingtheoldmtd.感謝閱讀NBUseNANDECCdoesnotworkatpresentwithyaffsram.感謝閱讀Ifunsure,sayY.configYAFFS_ECC_WRONG_ORDER感謝閱讀bool"UsethesameeccbyteorderasStevenHill'snand_ecc.c"精品文檔放心下載dependsonYAFFS_FShelpThismakesyaffs_ecc.cusethesameeccbyteorderas感謝閱讀StevenHill'snand_ecc.c.Ifnotset,thenyougetthe精品文檔放心下載sameeccbyteorderasSmartMedia.精品文檔放心下載Ifunsure,sayN.configYAFFS_USE_GENERIC_RW精品文檔放心下載bool"UseLinuxfilecachinglayer"謝謝閱讀defaultydependsonYAFFS_FShelp.Usegeneric_read/generic_writeforreading/writingfiles.This精品文檔放心下載enablestheuseoftheLinuxfilecachinglayer.謝謝閱讀Ifyoudisablethis,thencachingisdisabledandfileread/write謝謝閱讀isdirect.Ifunsure,sayY.configYAFFS_USE_HEADER_FILE_SIZE謝謝閱讀bool"Useobjectheadersize"精品文檔放心下載dependsonYAFFS_FShelpWhentheflashisscanned,twofilesizesareconstructed:謝謝閱讀Thesizetakenfromtheobjectheaderforthefile.精品文檔放心下載Thesizefiguredoutbyscanningthedatachunks.感謝閱讀Ifthisoptionisenabled,thentheobjectheadersizeisused,感謝閱讀otherwisethescannedsizeisused.謝謝閱讀Ifunsure,sayN.configYAFFS_DISABLE_CHUNK_ERASED_CHECK感謝閱讀bool"Turnoffdebugchunkerasecheck"感謝閱讀.dependsonYAFFS_FSdefaultyhelpEnablingthisturnsoffthetestthatchunksareerasedinflash精品文檔放心下載beforewritingtothem.Thisissafe,sincethewriteverification感謝閱讀willfail.Suggestenablingthetest(ie.sayN)感謝閱讀duringdevelopmenttohelpdebugthings.謝謝閱讀Ifunsure,sayY.#configYAFFS_DISABLE_WRITE_VERIFY感謝閱讀#bool"Disablewriteverify(DANGEROUS)"謝謝閱讀#dependsonYAFFS_FS&&EXPERIMENTAL感謝閱讀#help#Iamseverelyreluctanttoprovidethisconfig.Disablingthe感謝閱讀#verificationisnotagoodthingtodosinceNANDwritescan感謝閱讀#failsilently.Disablingthewriteverificationwillcauseyour精品文檔放心下載#teethtorot,ratstoeatyourcornandgiveyousplitends.感謝閱讀#Youhavebeenwarned.ie.Don'tuncommentthefollowingline.精品文檔放心下載##Ifunsure,sayN.#.configYAFFS_SHORT_NAMES_IN_RAM精品文檔放心下載bool"CacheshortnamesinRAM"謝謝閱讀dependsonYAFFS_FSdefaultyhelpIfthisconfigisset,thenshortnamesarestoredwiththe感謝閱讀yaffs_Object.Thiscostsanextra16bytesofRAMperobject,謝謝閱讀butmakeslook-upsfaster.謝謝閱讀Ifunsure,sayY.5.在/arch/arm/mach-s3c2410/mach-smdk2410.c找到smdk_default_nand_part結(jié)謝謝閱讀構(gòu),修改nand分區(qū),如下:structmtd_partitionsmdk_default_nand_part[]={謝謝閱讀[0]={.name="vivi",.size=0x00020000,.offset=0x00000000,},[1]={.name="param",.size=0x00010000,..offset=0x00020000,},[2]={.name="kernel",.size=0x00100000,.offset=0x00030000,},[3]={.name="root",.size=0x01900000,.offset=0x00130000,},[4]={.name="user",.size=0x025d0000,.offset=0x01a30000,}};注:此分區(qū)要結(jié)合vivi里面的分區(qū)來進(jìn)行設(shè)置。6.配置內(nèi)核時(shí)選中MTD支持:MemoryTechnologyDevices(MTD)--->精品文檔放心下載<*>MemoryTechnologyDevice(MTD)support謝謝閱讀.MTDpartitioningsupport……UserModulesAndTranslationLayers<*>DirectchardeviceaccesstoMTDdevices<*>CachingblockdeviceaccesstoMTDdevices謝謝閱讀……NANDFlashDeviceDrivers---><*>NANDDeviceSupport精品文檔放心下載<*>NANDFlashsupportforS3C2410SoC謝謝閱讀S3C2410NANDdriverdebug7.配置內(nèi)核時(shí)選中YAFFS支持:Filesystems--->Miscellaneousfilesystems--->感謝閱讀<*>YetAnotherFlashFilingSystem(YAFFS)filesystemsupport感謝閱讀NANDmtdsupportUseECCfunctionsofthegenericMTD-NANDdriver感謝閱讀UseLinuxfilecachinglayer精品文檔放心下載.Turnoffdebugchunkerasecheck謝謝閱讀CacheshortnamesinRAM8.編譯內(nèi)核并將內(nèi)核下載到開發(fā)板的flash中。精品文檔放心下載三、Yaffs文件系統(tǒng)測(cè)試:1.內(nèi)核啟動(dòng)之后,在啟動(dòng)信息里面可以看到如下內(nèi)容:NANDdevice:ManufacturerID:0xec,ChipID:0x76(SamsungNAND64MiB3,3V精品文檔放心下載8-bit)Scanningdeviceforbadblocks謝謝閱讀Creating5MTDpartitionson"NAND64MiB3,3V8-bit":精品文檔放心下載0x00000000-0x00020000:"vivi"精品文檔放心下載0x00020000-0x00030000:"param"謝謝閱讀0x00030000-0x00130000:"kernel"精品文檔放心下載0x00130000-0x01a30000:"root"感謝閱讀0x01a30000-0x04100000:"user"謝謝閱讀2.如果在內(nèi)核里面添加了proc文件系統(tǒng)的支持那么你在proc里面可以看到有關(guān)yaffs的信謝謝閱讀息~#catproc/filesystemsnodevsysfsnodevrootfsnodevbdev.nodevprocnodevsockfsnodevpipefsnodevfutexfsnodevtmpfsnodeveventpollfsnodevdevptsnodevramfsvfatnodevdevfsnodevnfsyaffsnodevrpc_pipefs3.查看dev目錄下相關(guān)目錄可以看到:~#lsdev/mtd-aldrwxr-xr-x1rootroot0Jan100:00.謝謝閱讀drwxr-xr-x1rootroot0Jan100:00..感謝閱讀crw-rw-rw-1rootroot90,0Jan100:000感謝閱讀cr--r--r--1rootroot90,1Jan100:000ro感謝閱讀crw-rw-rw-1rootroot90,2Jan100:001精品文檔放心下載cr--r--r--1rootroot90,3Jan100:001ro精品文檔放心下載crw-rw-rw-1rootroot90,4Jan100:002謝謝閱讀.cr--r--r--1rootroot90,5Jan100:002ro感謝閱讀crw-rw-rw-1rootroot90,6Jan100:003謝謝閱讀cr--r--r--1rootroot90,7Jan100:003ro感謝閱讀crw-rw-rw-1rootroot90,8Jan100:004精品文檔放心下載cr--r--r--1rootroot90,9Jan100:004ro精品文檔放心下載~#lsdev/mtdblock/-aldrwxr-xr-x1rootroot0Jan100:00.感謝閱讀drwxr-xr-x1rootroot0Jan100:00..感謝閱讀brw-------1rootroot31,0Jan100:000謝謝閱讀brw-------1rootroot31,1Jan100:001感謝閱讀brw-------1rootroot31,2Jan100:002感謝閱讀brw-------1rootroot31,3Jan100:003感謝閱讀brw-------1rootroot31,4Jan100:004精品文檔放心下載4.mount、umount建立mount目錄#mkdir/mnt/flash0#mkdir/mnt/flash1Mountblockdevice設(shè)備感謝閱讀#mount–tyaffs/dev/mtdblock/3/mnt/flash0感謝閱讀#mount–tyaffs/dev/mtdblock/4/mnt/flash1精品文檔放心下載#cp1.txt/mnt/flash0.~#cp2.txt/mnt/flash1查看mount上的目錄,可以看到該目錄下有剛才拷貝的文件,將其umount后,再次mount謝謝閱讀上來可以發(fā)現(xiàn)拷貝的文件仍然存在,這時(shí)刪除該文件然后umount,再次mount后,可以感謝閱讀發(fā)現(xiàn)拷貝的文件已經(jīng)被刪除,由此可以該分區(qū)可以正常讀寫。感謝閱讀5.在flash上建立根文件系統(tǒng)#mount–tyaffs/dev/mtdblock/3/mnt/flash0謝謝閱讀#cp(yourrootfs)/mnt/flash0感謝閱讀#umount/mnt/flash0重新啟動(dòng),改變啟動(dòng)參數(shù):param set linux_cmd_line "noinitrd root=/dev/mtdblock3 init=/linuxrc感謝閱讀console=ttySAC0"重新啟動(dòng),開發(fā)板就可以從flash啟動(dòng)根文件系統(tǒng)了。謝謝閱讀注:這里你得在內(nèi)核中添加devfs文件系統(tǒng)的支持,否則內(nèi)核無法找到/dev/mtdblock/3謝謝閱讀目錄目前flash的文件系統(tǒng)比較多,用的比較多的就是JFFS2文件系統(tǒng)?;贜ORflash上的感謝閱讀JFFS2文件系統(tǒng)可以說算是比較成熟了,支持NANDflash的JFFS2也已經(jīng)發(fā)布了。源代感謝閱讀碼可以到上面下載。但是在我的測(cè)試過程中,在精品文檔放心下載nandflash上掛接的JFFS2文件系統(tǒng)很不穩(wěn)定,經(jīng)常有CRC錯(cuò)誤產(chǎn)生。特別是進(jìn)行寫操作謝謝閱讀的時(shí)候,每次復(fù)位都會(huì)產(chǎn)生CRC錯(cuò)誤,可以說支持NANDflash的JFFS2文件系統(tǒng)目前還精品文檔放心下載.不成熟。而YAFFS文件系統(tǒng)則是專門針對(duì)NANDflash的,源代碼可以到精品文檔放心下載http://www.aleph1.co.uk/yaffs/index.html上下載。在測(cè)試過程中穩(wěn)定性能比JFFS2文精品文檔放心下載件系統(tǒng)要穩(wěn)定的多,而且mount分區(qū)的時(shí)間也比JFFS2文件系統(tǒng)少的多。用JFFS2mount謝謝閱讀一個(gè)2m的文件系統(tǒng)大約需要1s。下面分別介紹在uclinux下面使用JFFS2和YAFFS文件感謝閱讀系統(tǒng)。1、JFFS2到上面下載最新的MTD和JFFS2壓縮包。壓縮包精品文檔放心下載里面還有有關(guān)的內(nèi)核補(bǔ)丁和一些MTD的相關(guān)工具。主要的補(bǔ)丁就是ilookup-2.4.23.patch,謝謝閱讀因?yàn)樽钚碌腗TD驅(qū)動(dòng)中要用到一個(gè)ilookup()函數(shù)。打完補(bǔ)丁、更新了MTD驅(qū)動(dòng)和JFFS2精品文檔放心下載文件系統(tǒng)之后就開始寫自己nandflash驅(qū)動(dòng)了。如果不想把JFFS2作為根文件系統(tǒng)的話,精品文檔放心下載還需要修改MTD_BLOCK_MAJOR。驅(qū)動(dòng)可以參考里面的例子,最簡單的就是參考spia.c。謝謝閱讀寫驅(qū)動(dòng)主要工作是定義flash分區(qū)結(jié)構(gòu)、定義flash讀寫地址、寫控制flash的**_hwcontrol()精品文檔放心下載函數(shù)。具體的操作要看所用的nandflash的芯片資料。相對(duì)NORflash來說驅(qū)動(dòng)要簡單多謝謝閱讀了。:)改完之后再配置MemoryTechnologyDevices(MTD)下精品文檔放心下載CONFIG_MTD=YCONFIG_MTD_DEBUG=YCONFIG_MTD_DEBUG_VERBOSE=3精品文檔放心下載CONFIG_MTD_PARTITIONS=YCONFIG_MTD_CHAR=YCONFIG_MTD_BLOCK=Y.NANDFlashDeviceDrivers下感謝閱讀CONFIG_MTD_NAN

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論