




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、TrueFFS原理及其在CF卡上的實現(xiàn) 摘要:CF卡是一種基于Flash技術(shù)的容量大、攜帶方便的存儲介質(zhì),已在嵌入式系統(tǒng)等領(lǐng)域得到廣泛的應(yīng)用;但是,有限的擦寫次數(shù)極大地限制了CF卡的使用壽命。TrueFFS通過一系列算法,能夠延長CF卡的使用壽命,提高CF卡的使用效率。文章介紹了TrueFFS的原理,在CF卡上實現(xiàn)TrueFFS的方法,并對TrueFFS的性能進(jìn)行了分析。 關(guān)鍵詞:TrueFFS 損耗均衡 閃速存儲器 CF卡閃速存儲器最大的一個缺點就是壽命有限??刹脸拇螖?shù)因芯片廠商而有所不同,一般都在1萬10
2、萬次左右。為了延長閃速存儲器的壽命,提高使用效率,Msystems公司推出了TrueFFS系統(tǒng)。它為種類繁多的閃速存儲器提供了統(tǒng)一的塊設(shè)備接口,并且具有可重入、線程安全的特點;支持大多數(shù)流行的CPU架構(gòu),如PowerPC、MIPS、ARM、X86、68K等。由于個性鮮明的閃速存儲器越來越受到嵌入式系統(tǒng)工程師的青睞,業(yè)界流行的嵌入式實時操作系統(tǒng)VxWorks已將TrueFFS作為自身的一個可裁減的模塊。目前該模塊的版本為2.0,支持Intel、AMD、Toshiba、Fujitsu等廠家生產(chǎn)的大多數(shù)型號的閃速存儲器和Flash卡,用戶只需要更改少量代碼,甚至可直接調(diào)用;但是,該模塊對如今風(fēng)靡的C
3、F卡缺乏支持。CF卡采用了Flash技術(shù)。形象地說,CF卡就是由若干片閃速存儲器外加一個>' target='_blank' class='infotextkey'>管理器組成;但是,CF卡具有攜帶方便、易于升級、存儲量大、抗震性好、兼容性佳等優(yōu)點。目前,CF卡標(biāo)準(zhǔn)已經(jīng)達(dá)到1.4版本,容量從最早的2MB到現(xiàn)今的1GB。然而,有限的擦寫閃數(shù)是閃速存儲器遺傳給CF卡的先天缺陷。本文介紹如何在CF上實現(xiàn)TrueFFS系統(tǒng),硬件平臺以PowerPC處理器(MPC8250,Motorola公司)為CPU,嵌入式操作系統(tǒng)是VxWorks。1 TrueFF
4、S的結(jié)構(gòu)TrueFFS本身并不是一個文件系統(tǒng),需要在TrueFFS之上加載DOS文件系統(tǒng)才能使用,否則毫無意義。TrueFFS屏蔽了下層存儲介質(zhì)的差異,為開發(fā)者提供了統(tǒng)一的接口方式。應(yīng)用程序?qū)Υ鎯υO(shè)備的讀寫就對像對擁有DOS文件系統(tǒng)的磁碟設(shè)備的操作一樣。如圖1所示,TrueFFS由1個核心層和3個功能層組成:編譯層、MTD層(Memory Technoilogy Driver)、Socket層。翻譯層主要實現(xiàn)TrueFFS和DOS文件系統(tǒng)之間的高級交互功能,>' target='_blank' class='infotextkey'>管理文件
5、系統(tǒng)和Flash中各物理可擦塊的關(guān)系,以及TrueFFS中各種智能化處理功能,例如塊映射、損耗均衡(wear-leveling)等。目前有三種不同的翻譯層模塊可供選擇。選擇哪一種模塊要根據(jù)使用的Flash介質(zhì)采用NOR技術(shù)、還是NAND技術(shù),或者SSFDC技術(shù)而定。MTD層實現(xiàn)對具體的Flash進(jìn)行讀、寫、擦、ID識別、映射等驅(qū)動,并設(shè)置與Flash密碼相關(guān)的一些參數(shù)。VxWorks的TrueFFS已經(jīng)包括了支持Intel、AMD、Toshiba等廠商的大多數(shù)Flash芯片的MTD層驅(qū)動。新的器件需要編寫新的MTD層驅(qū)動。Socket層提供了TrueFFS和硬件之間的接口服務(wù),負(fù)責(zé)電源>
6、' target='_blank' class='infotextkey'>管理、檢測設(shè)備插拔、硬件寫保護(hù)、窗口>' target='_blank' class='infotextkey'>管理和向系統(tǒng)注冊Socket等。核心層將其它三層有機(jī)結(jié)合起來,處理全局問題,例如信息量、計時器、碎片回收和其它系統(tǒng)資源等。我們最關(guān)心的是MTD層和Socket層。VxWorks只提供了編譯后的二進(jìn)制形式的核心層和翻譯層驅(qū)動。在實現(xiàn)TrueFFS應(yīng)用之間,先介紹一下TrueFFS的原理。2 TrueFFS原理21
7、 損耗均衡閃速存儲器不能無限次重復(fù)使用。它的每個扇區(qū)的擦除次數(shù)雖然很大,但卻有限;因此,隨著使用次數(shù)的加長,它最終會變成只讀狀態(tài),所以應(yīng)該盡最大 可能延長它的壽命。行之有效的方法就是平衡使用所有的存儲單元,而不讓某一單元過度使用。這種技術(shù)被稱之為損耗均衡。TrueFFS使用一種基于一張動態(tài)維護(hù)表的存儲器塊映射的翻譯系統(tǒng)來實現(xiàn)損耗均衡技術(shù)。當(dāng)塊數(shù)據(jù)被修改、移動或碎片回收后,這張維護(hù)表會自動調(diào)整。然而,如果存儲在Flash上的一些數(shù)據(jù)本質(zhì)上是靜態(tài)的,就會產(chǎn)生靜態(tài)文件鎖定問題。存儲這些靜態(tài)數(shù)據(jù)的區(qū)域根據(jù)不會被輪循使用,其它區(qū)域就會被更頻繁地使用,這將降低Flash期望的生命值。TrueFFS通過強(qiáng)制
8、轉(zhuǎn)移靜態(tài)區(qū)域的方法成功克服了靜態(tài)文件鎖定問題。因為映射表是動態(tài)的,TrueFFS能夠以對文件系統(tǒng)不可見的方式轉(zhuǎn)移這些靜態(tài)數(shù)據(jù)區(qū)域。由于絕對強(qiáng)制損耗均衡方式會對性能產(chǎn)生一些負(fù)面影響,所以TrueFFS采取了一種非絕對損耗均衡算法。它保證了所有空間的使用近似平等而不影響性能。22 碎片回收塊數(shù)據(jù)的修改使得Flash的一些塊區(qū)域中的數(shù)據(jù)不再有效,并且這些區(qū)域在擦除之前變得不可寫。如果沒有機(jī)制來回收這些區(qū)域,F(xiàn)lash很快就會變成只讀的狀態(tài)了。不幸的是由于這些塊不可能單獨(dú)擦除,回收這些塊就有些復(fù)雜了。單次擦除被限制在一個叫作擦除單元的較大范圍內(nèi),如對于AMD的Am29LV065D芯片來說是64KB。T
9、rueFFS使用一種被稱為碎片回收的機(jī)制來回收那些不再包含有效數(shù)據(jù)的塊。該機(jī)制從一個預(yù)擦除單元內(nèi)復(fù)制所有的有效數(shù)據(jù)塊到另一個新的被稱為轉(zhuǎn)移單元的擦除單元。然后,TrueFFS更新映射表,再擦除這個廢舊的預(yù)擦除單元。這樣,原來的塊出現(xiàn)在外界時仍然包含了原來的數(shù)據(jù),雖然這些數(shù)據(jù)現(xiàn)在已經(jīng)存放在Flash存儲器的其它空間。碎片回收算法會找到并回收與下面標(biāo)準(zhǔn)最吻合的擦除單元:廢塊最多;擦除次數(shù)最少;最靜態(tài)的區(qū)域。23 塊分配和關(guān)聯(lián)數(shù)據(jù)集結(jié)為了提高數(shù)據(jù)的讀取效率,TrueFFS使用一種靈活的空間分配策略:將關(guān)聯(lián)的數(shù)據(jù)(如由同一個文件的內(nèi)容組成的多個塊)集結(jié)到同一個單獨(dú)擦除單元內(nèi)的一段連續(xù)的區(qū)域中。為此,T
10、rueFFS盡量在同一個擦除單元內(nèi)維持一個由多個物理上連續(xù)的自由塊組成的存儲池。如果這樣連續(xù)的存儲池?zé)o法實現(xiàn),TrueFFS分盡量保證池中的所有塊是在同一個擦除單元內(nèi)。如果連這樣的情況也不可能的話,TrueFFS會盡量把塊池分配到一個擁有最多可用空間的擦除單元內(nèi)。這種集結(jié)關(guān)聯(lián)數(shù)據(jù)的途徑有幾個好處。首先,如果TrueFFS必須從一個小的存儲窗口來訪問Flash,那么這樣集結(jié)了的關(guān)聯(lián)數(shù)據(jù)可以減少調(diào)用映射物理塊到該窗口的次數(shù),加快了文件繼續(xù)訪問速度。其次,這種策略可以減少碎片的產(chǎn)生。這是因為刪除一個文件可以釋放掉更容易回收的完整塊,意味著碎片回收會變得更快。另外,它可以使屬于靜態(tài)文件的多個塊存放在同
11、一地址,這樣當(dāng)損耗均稀算法決定移動靜態(tài)區(qū)域時,轉(zhuǎn)移這些塊就變得更加容易了。24 錯誤恢復(fù)向Flash寫數(shù)據(jù)有時可能會出錯,比如在響應(yīng)文件系統(tǒng)寫請求時、碎片回收期間甚至在TrueFFS格式化或擦除Flash時。在這些情況下,TrueFFS能夠從錯誤中恢復(fù)過來;但在新數(shù)據(jù)第一次寫入Flash時如果出錯就會丟失這些數(shù)據(jù)。然而,TrueFFS非常仔細(xì)地保證所有已經(jīng)存放在Flash上的數(shù)據(jù)是可恢復(fù)的,甚至能夠避免用戶由于不耐煩或好奇而猛地拔出Flash卡而可能造成的災(zāi)難性后果。TrueFFS健壯的關(guān)鍵是它使用了一種“先寫后擦”的策略。當(dāng)更新Flash一個扇區(qū)的數(shù)據(jù)時,只有在更新操作完成并且新存儲的數(shù)據(jù)校
12、驗成功后,先前的數(shù)據(jù)才會被允許擦掉。這樣的結(jié)果是數(shù)據(jù)扇區(qū)不能處于部分寫狀態(tài)。操作成功的話新扇區(qū)的數(shù)據(jù)有效,否則老扇區(qū)的數(shù)據(jù)有效。很明顯,這樣有利于用戶已經(jīng)寫到Flash上的數(shù)據(jù)的穩(wěn)定性。3 編程TrueFFS的編程主要在MTD層和Socket層。首先必須在當(dāng)前VxWorks生成目錄的配置文件(config.h)中定義:INCLUDE_TFFS(包含TrueFFS系統(tǒng))、和INCLUDE_TFFS_SHOW(包含TrueFFS系統(tǒng)的顯示函數(shù))。31 翻譯層翻譯層根據(jù)Flash的實現(xiàn)技術(shù)來選擇。設(shè)計中選用了SST公司的型號為SST49CF064的CF卡,64MB容量。它是基于NAND的Flash技
13、術(shù),所以在文件中定義INCLUDE_TL_NFTL;如果是NOR技術(shù),則定義INCLUDE_TL_FTL。32 MTD層文件cfCardMTD.c實現(xiàn)了MTD層的功能。在本設(shè)計中,MTD層主要實現(xiàn)4個函數(shù):讀、寫、擦除和ID識別。ID識別函數(shù)根據(jù)讀取設(shè)備的ID號來選擇與當(dāng)前設(shè)備匹配的MTD驅(qū)動。識別函數(shù)中指定了針對當(dāng)前設(shè)備的一些參數(shù)以及基本操作函數(shù),并賦給一個叫FLFlash的數(shù)據(jù)結(jié)構(gòu)。FLStatus cfMTDIdentify(FLFlash*pVol);數(shù)據(jù)結(jié)構(gòu)中的主要參數(shù)賦值如下:pVol->type=CF_ID; /*器件ID號*/pVol->erasableBlockS
14、ize=512;/*可擦除的最小單元是512B*/pVol->chipSize=0x4000000;/*器件容量為64MB*/pVol-write=cfWriteRoutine;/*寫函數(shù)*/pVol->read=cfReadRoutine;/*讀函數(shù)*/pVol->rease=cfEraseRoutine;/*擦函數(shù)*/pVol->map=cfMap;/*將CF卡的一段區(qū)域映射到內(nèi)存空間*/CF卡的讀函數(shù)比Flash的讀函數(shù)繁瑣。它和寫一樣,必須根據(jù)一定的算法來讀取數(shù)據(jù),而Flash只需要直接從地址中讀數(shù)據(jù)。但是,CF卡的擦函數(shù)非常簡單,直接返回就可以了。因為CF卡可
15、以直接調(diào)用寫命令寫入數(shù)據(jù),CF卡本身能夠自動完成擦除操作。CfMap函數(shù)將CF卡的一段區(qū)域映射到存儲空間,一般為4KB。因為CF卡的40MB地址空間并不映射到系統(tǒng)的存儲空間中,映射可以加快系統(tǒng)訪問CF卡的速度,而Flash的地址空間,所以Flash的MTD驅(qū)動中的該函數(shù)可以為空。最后,識別函數(shù)必須在MTD驅(qū)動表單mtdTable中注冊:#ifdef INCLUDE_MTD_CFCARDcfMTDIdentify,#endif并增加函數(shù)聲明:extern FLStatus cfMTDIdentify (FLFlash vol).3.3 Socket層文件sysTffs.c實現(xiàn)了Socket層的功
16、能。sysTffsInit()函數(shù)是主函數(shù),調(diào)用Socket注冊函數(shù)cfSocketRegister(),初始化Socket數(shù)據(jù)結(jié)構(gòu)FLSocket。LOCAL void cfSocketRegister (void)FLSocket vol=flSocketOf(noOfDrives);tffsSocketnoOfDrives=“F”/*Socket名稱*/vol.window.baseAddress=CF_BASE_ADRS>>12;/*窗口的基地址*/vol.cardDetected=cfCardDetected;/*檢測CF卡是否存在的函數(shù)*/vol.VccOn=cfVcc
17、On;/*CF卡上電函數(shù)*/vol.VccOff=cfVccOff;/*CF卡繼電函數(shù)*/vol.initSocket=cfInifSocket;/*CF卡初始化函數(shù)*/vol.setMappingContext=cfSetMappingContext;/*CF卡映射函數(shù)*/vol.getAndClearCardChangeIndicator=cfGetAndClearCard ChangeIndicator;/*設(shè)置改變函數(shù)*/vol.writeProtected=cfWriteProtected;/*CF卡寫保護(hù)判斷函數(shù)*/noOfDrives+;其中,映射窗口的基地址以4KB為單位。Tr
18、ueFFS系統(tǒng)每100ms調(diào)用CF卡檢測函數(shù),判斷CF卡是否存在。CF卡上電函數(shù)和斷電函數(shù)主要用于節(jié)省系統(tǒng)功耗,當(dāng)CF卡出于閑置狀態(tài)時,TrueFFS就關(guān)閉CF卡的電源。CF卡初始化函數(shù)負(fù)責(zé)訪問CF卡之前的所有前期工作。如果插入CF卡型號改變了,cfGetAndClearCard ChangeIndicator函數(shù)就會及時向TrueFFS系統(tǒng)報告。sysTffs.c中需要實現(xiàn)上述的所有函數(shù)。大部分情況下,開發(fā)人員不必關(guān)心FLSocket數(shù)據(jù)結(jié)構(gòu),只關(guān)心它的成員函數(shù)。一旦這些成員函數(shù)實現(xiàn)了,開發(fā)人員不能直接調(diào)用它們,它們被TrueFFS系統(tǒng)自動調(diào)用。4 實現(xiàn)與性能分析完成TrueFFS的編寫之后
19、,經(jīng)過編譯鏈接,如果一切正確,VxWorks運(yùn)行時會調(diào)用tffsDrv()函數(shù)自動初始化TrueFFS系統(tǒng),包括建立互斥信號量、全局變量和用來>' target='_blank' class='infotextkey'>管理TrueFFS的數(shù)據(jù)結(jié)構(gòu),注冊Socket驅(qū)動程序。當(dāng)TrueFFS需要和底層具體硬件打交道時,它使用設(shè)備號(04)作為索引來查找它的FLSocket結(jié)構(gòu),然后用相應(yīng)結(jié)構(gòu)中的函數(shù)來控制它的硬件接口。成功完成Socket注冊之后,用戶就可以調(diào)用tffsDevCreate()創(chuàng)建一個TrueFFS塊設(shè)備,調(diào)用tffsDevFormat格式化設(shè)備,再調(diào)用dosFsDevInit()函數(shù)加載DOS文件系統(tǒng)。之后,用戶就可以像使用磁碟設(shè)備一樣使用了CF卡了,如調(diào)用open、read、write、close、creat等文件操作函數(shù)。TrueFFS的簡單測試方法可以從主機(jī)復(fù)制一個文件到CF卡,再將這個文件從CF卡復(fù)制到主機(jī),然后比較原文件和最后文件的區(qū)別。用戶也可以調(diào)用tffsShow()或tffsShowAll()來查看TrueFFS的創(chuàng)建情況。TrueFFS可以極大地延長Flash設(shè)備的壽命。一般CF卡可以擦寫10萬次,如果不使用TrueFFS系統(tǒng),壽命就非常短。例如
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 代建制各項管理制度
- 信譽(yù)樓管理制度特色
- 軟件正版管理制度建設(shè)
- 銷售企業(yè)公司管理制度
- 預(yù)算成本控制管理制度
- 進(jìn)度控制計劃管理制度
- 酒店蔬菜儲備管理制度
- 部門助理聘用管理制度
- 音樂收藏管理制度規(guī)范
- 酒店吧臺衛(wèi)生管理制度
- 護(hù)理質(zhì)量與安全分析匯報
- 生物質(zhì)能源綜合利用項目可行性分析報告
- 《印度文化與歷史:大學(xué)人文課程教案》
- 老年防詐騙知識講座課件
- 湖北省部分高中聯(lián)考協(xié)作體2023-2024學(xué)年高二下學(xué)期期中考試物理試卷(含答案)
- 中學(xué)2021年秋季開學(xué)疫情防控工作方案及要求4篇
- DB33-T 1411-2024 水利工程文化融合導(dǎo)則
- 檔案管理制度培訓(xùn)宣貫
- 農(nóng)機(jī)質(zhì)量跟蹤調(diào)查表
- 刑民交叉案件的司法認(rèn)定
- DB11-T 1448-2017 城市軌道交通工程資料管理規(guī)程
評論
0/150
提交評論