亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        加快Windows CE下FAT文件系統(tǒng)加載速度的方法及實現(xiàn)

        2008-04-12 00:00:00柳吉林
        現(xiàn)代電子技術(shù) 2008年22期

        摘 要:針對Windows CE應(yīng)用于大容量NAND FLASH時文件系統(tǒng)加載速度慢的問題,分析NAND FLASH驅(qū)動程序的結(jié)構(gòu)和FAT文件系統(tǒng)的加載過程,提出以塊為單位存儲部分文件系統(tǒng)信息的創(chuàng)新優(yōu)化方案。在Xscale PXA270的平臺上測試表明,經(jīng)優(yōu)化后文件系統(tǒng)加載速度大約可以提高50%。此方案對類似的嵌入式系統(tǒng)研究也有借鑒作用。

        關(guān)鍵詞:嵌入式系統(tǒng);FAT文件系統(tǒng);加載速度;NAND FLASH

        中圖分類號:TP311文獻(xiàn)標(biāo)識碼:B

        文章編號:1004-373X(2008)22-074-04

        Analysis and Implementation of Accelerating the Loading Process for

        FAT File System in Windows CE

        LIU Jilin,ZHANG Zhe

        (National ASIC System Engineering Center,Southeast University,Nanjing,210096,China)

        Abstract:Aiming at the problem of low loading velocity of file system in Windows CE when applying for high capacity NAND FLASH,this paper analyzes the structure of driver for NAND FLASH and the loading process of FAT file system,and proposes a solution for accelerating the loading process which saving information of file system for per block instead of per page.According to experimental results from platform based Xscale PXA270,the loading velocity can be increased by about 50% after applying proposed solution.It may be a reference to some similar embedded systems.

        Keywords:embedded system;FAT file system;loading velocity;NAND FLASH

        NAND FLASH具有體積小、功耗低、速度快、容量大及抗震動等優(yōu)異特性,已經(jīng)廣泛應(yīng)用于便攜式產(chǎn)品中。 Windows CE平臺下默認(rèn)的FAT文件系統(tǒng)已經(jīng)通過分層結(jié)構(gòu)提供了對NAND FLASH的存儲管理,方便了開發(fā)和應(yīng)用,但由于設(shè)計結(jié)構(gòu)的特點,其加載速度會隨著NAND FLASH容量增加而減慢,特別是在配備大容量NAND FLASH的嵌入式系統(tǒng)中已經(jīng)嚴(yán)重影響了系統(tǒng)的啟動速度。在當(dāng)前嵌入式應(yīng)用對存儲容量需求增長的情況下,已經(jīng)成為一個很普遍的問題。

        1 FAT文件系統(tǒng)結(jié)構(gòu)及加載過程分析

        在Windows CE中,F(xiàn)AT文件系統(tǒng)下的NAND FLASH驅(qū)動程序采用分層結(jié)構(gòu)。驅(qū)動程序的上層是FLASH抽象層,是物理操作無關(guān)層,該層對NAND FLASH的操作進(jìn)行抽象,并采用一定的策略平衡NAND FLASH的擦寫。NAND FLASH驅(qū)動程序的結(jié)構(gòu)如圖1所示。

        在圖1中,F(xiàn)ile System即文件系統(tǒng)。Windows CE采用的是FAT文件系統(tǒng)。FAT文件系統(tǒng)是一種采用鏈?zhǔn)椒峙浞绞降奈募到y(tǒng)。并沒有對NAND FLASH的特點優(yōu)化,因此需要在下層的驅(qū)動程序做優(yōu)化。FLASH Driver為NAND FLASH驅(qū)動程序。對上層的文件系統(tǒng)提供以DSK為前綴的流驅(qū)動接口。該層驅(qū)動程序本身分為2層:FAL(FLASH Abstraction Layer)層、FMD(FLASH Media Driver)層。前者主要提供對上層提供抽象接口、邏輯地址轉(zhuǎn)換成物理地址和損耗平衡(“Wear-level”)三個功能,后者實現(xiàn)FAL層的請求,對FLASH物理扇區(qū)進(jìn)行操作。FLASH Hardware即NAND FLASH物理芯片。

        1.1 文件系統(tǒng)中FAL層

        FAL層由類FAL、類MappingTable、類SectorMgr、類Compactor組成。整個FAL層由3個功能部分組成。如圖2所示。

        類FAL提供的功能包括讀、寫、刪除和建立映射表函數(shù);

        類MappingTable提供給FAL相關(guān)的映射功能;

        類SectorMgr主要用于管理空閑(free)扇區(qū)、臟(dirty)扇區(qū)信息;

        類Compactor,即垃圾回收器,用于將NAND FLASH上的垃圾塊回收加入空閑鏈表。

        1.2 FAL層映射表建立過程

        FAT文件系統(tǒng)加載過程中重要的一步是建立映射表,這也是FAL層最重要的功能之一,文件系統(tǒng)訪問的是邏輯扇區(qū),而在FAL層內(nèi)部對邏輯扇區(qū)進(jìn)行映射轉(zhuǎn)換成實際要操作的物理扇區(qū)。而邏輯扇區(qū)到物理扇區(qū)轉(zhuǎn)換的重要手段就是映射表,即前面所述的MappingTable,所以在驅(qū)動初始化時,必須對NAND FLASH中已經(jīng)存在的數(shù)據(jù)建立映射,空白區(qū)也要建立相關(guān)的維護信息,而這個映射表的建立是通過掃描NAND FLASH的所有扇區(qū)來實現(xiàn)的。

        Windows CE加載NAND FLASH的驅(qū)動程序時調(diào)用DSK_Init()函數(shù)進(jìn)行初始化,該函數(shù)調(diào)用FAL類的啟動函數(shù)Fal::StartupFAL()啟動FAL的功能。該函數(shù)首先對MappingTable進(jìn)行相關(guān)的初始化,緊接著就調(diào)用FAL類的Fal::BuildupMappingInfo()函數(shù)建立映射表。因此,這個建立過程是在文件系統(tǒng)加載之前,驅(qū)動程序初始化階段完成。驅(qū)動程序是在Windows CE系統(tǒng)啟動的時候由設(shè)備管理器Device.exe加載的,所以如果NAND FLASH掃描過程太慢,會直接影響到系統(tǒng)的啟動速度。FAL層的掃描過程如下:

        (1) 調(diào)用FMD_GetBlockStatus函數(shù)獲取塊信息,判斷是不是壞塊。如果是壞塊則繼續(xù)掃描下一個塊,否則對此塊上所有扇區(qū)進(jìn)行掃描。

        (2) 調(diào)用FMD_ReadSector函數(shù)讀每個塊的第一個扇區(qū)的Spare space區(qū)。如果該扇區(qū)是空扇區(qū),則將該塊內(nèi)所有扇區(qū)都加入空閑扇區(qū)鏈表。FAL層的垃圾回收器Compactor總是一整個塊回收,也即如果一個塊的第一個扇區(qū)是空的,則表明該塊的所有扇區(qū)都是空的。如果該塊的第一個扇區(qū)不是空扇區(qū),則要繼續(xù)掃描該塊其他扇區(qū)。

        (3) 如果所讀的扇區(qū)不是空扇區(qū),而是一個臟(dirty)扇區(qū),則將該扇區(qū)添加到臟(dirty)扇區(qū)鏈表中。

        (4) 如果所讀的扇區(qū)是已經(jīng)映射的扇區(qū),則以讀出的邏輯扇區(qū)號為索引在映射表的相應(yīng)位置填入此扇區(qū)的物理地址。

        (5) 如果掃描到扇區(qū)的邏輯扇區(qū)號已經(jīng)存在并填入映射表中,則將此扇區(qū)丟棄,并標(biāo)記為臟(dirty)扇區(qū)。

        (6) 循環(huán)掃描直到掃描結(jié)束。

        掃描過程的具體流程圖如圖3所示。

        從上文可以看出,在NAND FLASH容量較小時,掃描建立映射表的時間并不明顯,但是容量達(dá)到1 GB以上之后,掃描時間非常可觀。

        1.3 FLASH中的文件系統(tǒng)信息

        在NAND FLASH中,每個物理扇區(qū)的Spare區(qū)都保存一個SectorInfo的數(shù)據(jù)結(jié)構(gòu),當(dāng)文件系統(tǒng)加載時,讀入分散于每個扇區(qū)的SectorInfo的數(shù)據(jù)結(jié)構(gòu),獲得相應(yīng)的邏輯序號和版本號。SectorInfo的數(shù)據(jù)結(jié)構(gòu)如下所示:

        typedef struct _SectorInfo

        {

        DWORD logicalSectorAddr;

        BYTEbOEMReserved;

        BYTEbBadBlock;

        WORDwSignature;

        } SectorInfo,*PSectorInfo;

        其中l(wèi)ogicalSectorAddr用來表示此物理扇區(qū)對應(yīng)的邏輯序號;bOEMReserved為保留字節(jié);bBadBlock為壞塊標(biāo)識;wSignature為扇區(qū)屬性標(biāo)識,有保留扇區(qū)、只讀扇區(qū)、已寫扇區(qū)、空扇區(qū)4種類型。

        2 優(yōu)化方法和實現(xiàn)

        對于大容量Nand FLASH,掃描每個扇區(qū)獲得文件系統(tǒng)信息無疑是效率很低的,所以如果能將更多的文件系統(tǒng)信息集中存放,減少讀FLASH的次數(shù),將能使文件系統(tǒng)加載速度提高。為此需要解決以下問題:

        (1) 獲得需要保存的文件系統(tǒng)信息數(shù)據(jù)的大?。?/p>

        (2) 文件系統(tǒng)信息集中存放的位置;

        (3) 文件系統(tǒng)信息在集中保存位置的更新方法;

        (4) 盡量減小對原文件系統(tǒng)性能的影響。

        本文設(shè)計了如下方法:將每一個塊的最后一個扇區(qū)(稱為特殊扇區(qū))用于保存整個塊中所有扇區(qū)的spare信息,即SectorInfo的數(shù)據(jù)結(jié)構(gòu)。文件系統(tǒng)加載時對于每個塊只需讀取1個扇區(qū),從而大大提高了加載速度。原理示意圖如圖4所示。

        首先,文件系統(tǒng)信息數(shù)據(jù)的大小。以SAMSUNG K9G8G08U0M為例,這個FLASH每個扇區(qū)大小為2 kB,并有64 kB的Spare空間,每個塊有128個扇區(qū)。由上文可知每個扇區(qū)的文件系統(tǒng)信息由8 B的結(jié)構(gòu)保持,所以對于一個塊需要1 kB空間來存儲所有扇區(qū)的Spare信息,一個扇區(qū)足夠存放。

        其次,文件系統(tǒng)信息保存在塊的最后一個扇區(qū)。這是針對FLASH擦除和FAL層垃圾扇區(qū)回收都是以塊為單位的,這樣可以使優(yōu)化方法對原來的文件系統(tǒng)影響很小。

        最后,文件系統(tǒng)信息在寫滿一個塊后才將所有扇區(qū)Spare信息更新到最后一個扇區(qū)。由于NAND FLASH每次更新扇區(qū)數(shù)據(jù)的操作需要先擦除整個塊,實時更新每個扇區(qū)的信息會嚴(yán)重影響系統(tǒng)性能,同時也會增加FLASH的損耗。而根據(jù)FAL層均衡策略和垃圾回收策略的特點,數(shù)據(jù)會將一個塊的空扇區(qū)用完再跳至下一個塊,這就保證了本文提出的方法可以最大程度地集中存儲文件系統(tǒng)信息以提高加載速度。

        本文論述方案實現(xiàn)方法如下:

        為文件系統(tǒng)信息添加新的扇區(qū)標(biāo)識:特殊扇區(qū),用于標(biāo)識每塊最后一個扇區(qū),并修改FAL層代碼使得被標(biāo)識為特殊扇區(qū)的扇區(qū)不能用于存放其他數(shù)據(jù),主要修改類SectorMgr和類Compactor中相關(guān)函數(shù)。

        當(dāng)文件寫入FLASH時,如果一個塊除最后一個扇區(qū)外其他扇區(qū)已經(jīng)寫滿,則讀出其他所有扇區(qū)的Spare信息,將其存儲于最后一個扇區(qū),并將扇區(qū)標(biāo)識為特殊扇區(qū)。具體流程見圖5,虛線部分表示為優(yōu)化方案添加的部分。

        在文件系統(tǒng)加載時,首先檢查每個塊是否存在特殊扇區(qū),如果存在,則利用特殊扇區(qū)所記錄的文件系統(tǒng)信息建立映射表;如果沒有,則按原程序流程進(jìn)行加載。具體流程如圖3所示,虛線部分表示為優(yōu)化方案添加的部分。

        3 實驗結(jié)果及分析

        本文選用了基于Xscale PXA270的Windows CE5.0平臺,64 MB RAM,同時選取3種大小的Nand FLASH作為測試對象,分別為三星公司的K9K4G08U0M(512 MB),K9G8G08U0M(1 GB),K9GAG08U0M(2 GB),測試時滿載定義為FLASH所有可用存儲空間寫滿數(shù)據(jù)。因為文件系統(tǒng)加載時間是系統(tǒng)啟動時間的很重要的一部分,所以這里直接測試系統(tǒng)啟動時間。其測試結(jié)果參見圖6和圖7。

        可以看出,優(yōu)化后啟動速度明顯提高,尤其對于大容量FLASH,效果更加明顯。同時也使得文件系統(tǒng)的加載速度基本和存儲數(shù)據(jù)大小無關(guān)。

        優(yōu)化方法對文件系統(tǒng)的性能影響也應(yīng)該考慮在內(nèi)。本文對1 GB FLASH進(jìn)行了讀寫測試,每次讀寫的數(shù)據(jù)大小為860 MB。測試結(jié)果參見表1。

        可以看出,優(yōu)化后,讀出數(shù)據(jù)的速度基本沒有變化,但是寫入數(shù)據(jù)的速度有所降低,這是由于每寫一個塊數(shù)據(jù)多了讀出所有Spare信息的過程,從結(jié)果也可以看出優(yōu)化后對原系統(tǒng)的整體性能影響很小。

        在實際應(yīng)用中,文件系統(tǒng)的刪除、拷貝等基本操作也都表現(xiàn)正常。

        本文優(yōu)化方法的缺點在于會占用一定的FLASH可用空間,以SAMSUNG K9G8G08U0M為例,每個塊會占用1個扇區(qū)的空間,1 GB FLASH會被占用8 MB空間。這對一些對空間要求嚴(yán)格的嵌入式系統(tǒng)是不可忽略的。

        4 結(jié) 語

        FAT文件系統(tǒng)在Windows CE中應(yīng)用廣泛,適用性強,由于FAL層已經(jīng)在內(nèi)部實現(xiàn),使得開發(fā)也相對簡單。但是隨著FLASH容量逐漸增大,其加載速度也線性增長,這在實際產(chǎn)品中不能為用戶所接受。本文針對FAT文件系統(tǒng)提出了優(yōu)化加載速度的方法,經(jīng)優(yōu)化后加載速度提高明顯,這種方法代碼移植量小,適應(yīng)性廣,對文件系統(tǒng)的性能幾乎沒有影響,同時也能為其他嵌入式文件系統(tǒng)借鑒。

        參考文獻(xiàn)

        [1]傅曦.Windows CE嵌入式開發(fā)入門基于Xscale架構(gòu)[M].北京:人民郵電出版社,2006.

        [2]Microsoft.Microsoft Windows CE .NET HLEP[S].2003.

        [3]Intel Corporation.IntelRPXA27x Processor Family Developer′s Manual[S].2004.

        [4]Intel Corporation.IntelRFLASH File Systems Overview[S].2006.

        [5]SAMSUNG Electronics Corporation.K9K4G08U0A Product Manual[Z].2003,2.

        [6]SAMSUNG Electronics Corporation.K9G8G08U0M Product Manual[Z].2005,4.

        [7]SAMSUNG Electronics Corporation.K9GAG08U0M Product Manual[Z].2006,3.

        [8]Douglas Boling .Programming Microsoft Windows CE.NET[M].Third Edition.Microsoft Press,2003.

        [9]陳向群,王雷,馬洪兵,等.Windows CE.NET 系統(tǒng)分析及實驗教程 [M].北京:機械工業(yè)出版社,2003.

        [10]SAMSUNG Electronics Corporation .Nand Flash ECC Algorithm[S].2004.

        作者簡介 柳吉林 男,1983年出生,江蘇泰州,東南大學(xué)電子科學(xué)與工程學(xué)院國家專用集成電路工程技術(shù)研究中心碩士研究生。研究方向為微電子與固體電子學(xué)、嵌入式系統(tǒng)設(shè)計 。

        張 哲 男,1976年出生,東南大學(xué)電子工程系博士研究生、講師。

        欧美丰满大乳高跟鞋| 日本高清一道本一区二区| 国产成人av一区二区三区在线观看| 中国国语毛片免费观看视频| 亚洲熟女网站| 一区二区三区少妇熟女高潮| 偷拍一区二区三区四区| 国产又a又黄又潮娇喘视频| 在线观看91精品国产免费免费| 国产一区二区三区亚洲天堂| 亚洲不卡免费观看av一区二区| 无码一区二区三区免费视频| 乱码午夜-极品国产内射| 亚洲色拍拍噜噜噜最新网站| 视频区一区二在线观看| 狠狠躁18三区二区一区| 亚洲 高清 成人 动漫| 91极品尤物国产在线播放| 91精品国产九色综合久久香蕉| 国模冰莲自慰肥美胞极品人体图| 国产精品va在线播放我和闺蜜| 亚洲伦理一区二区三区| 亚洲av乱码国产精品观| 无码人妻精品一区二区三| 极品粉嫩嫩模大尺度无码| 国产福利一区二区三区视频在线看 | 精品少妇人妻久久免费| 男人的天堂一区二av| 女人被男人躁得好爽免费视频| 亚洲成av人片无码不卡播放器| 一区二区三区日本久久| av无码国产精品色午夜| 无码专区天天躁天天躁在线| 久久中文字幕久久久久91| 日本a级免费大片网站| 国产女人高潮叫床视频| 免费无码中文字幕A级毛片| 亚洲最大不卡av网站| 肉色欧美久久久久久久免费看| 国产精品第一二三区久久蜜芽| 日本道免费一区日韩精品|