• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    一種基于DSP的可循環(huán)讀寫文件系統(tǒng)設(shè)計

    2014-07-03 03:33:28殷杰波
    關(guān)鍵詞:登記表緩沖區(qū)存儲器

    殷杰波

    (江蘇自動化研究所,連云港222061)

    引 言

    在以DSP為核心的嵌入式系統(tǒng)中,尤其在需要處理和存儲大量數(shù)據(jù)的應(yīng)用領(lǐng)域,提供必要的文件管理功能顯得尤為重要,但大多基于DSP的嵌入式系統(tǒng)一般不提供文件管理功能。目前,以DSP為核心的嵌入式系統(tǒng)中文件的存儲一般采用FLASH存儲器,而FLASH存儲器都有自己的容量限制,不可能無限制地將所有采集到的數(shù)據(jù)全部記錄到存儲器中。針對上述問題,本文設(shè)計并實(shí)現(xiàn)了一種基于DSP的可循環(huán)讀寫的文件系統(tǒng)。其中DSP采用TI公司的TMS320C6678,存儲載體采用16片三星公司的FLASH 芯片 K9WAG08U1M,單片容量2 GB,共32 GB。該文件系統(tǒng)具有以下幾個特點(diǎn):

    ①統(tǒng)一管理FLASH存儲器存儲空間,實(shí)施存儲空間的分配與回收;

    ②實(shí)現(xiàn)文件的按名存取,使用方便、直觀;

    ③向用戶提供方便使用的接口,提供對文件系統(tǒng)以及文件的操作命令。

    1 文件系統(tǒng)的基本架構(gòu)與存儲空間管理

    1.1 文件系統(tǒng)的基本架構(gòu)

    文件系統(tǒng)中的FLASH以塊為單位組織,讀寫的最小單位是頁,每塊512頁,每頁8 192字節(jié),按塊擦除。該文件系統(tǒng)參考FAT文件系統(tǒng)設(shè)計,F(xiàn)LASH開始部分4個數(shù)據(jù)塊為系統(tǒng)數(shù)據(jù)區(qū),用來存儲文件系統(tǒng)信息。

    存儲器操作的時間瓶頸不在于數(shù)據(jù)傳遞,而是FLASH存儲器內(nèi)部的擦除和寫操作等待。FLASH存儲器讀出的速度和DSP處理數(shù)據(jù)的速度都很快,因此雖然將頁面作為讀寫操作的基本容量單位,但額外增加的操作時間很短。

    為了使文件系統(tǒng)的結(jié)構(gòu)更加清晰,同時便于文件系統(tǒng)的維護(hù)、升級和移植,將文件系統(tǒng)劃分為三層[1]:文件管理層、文件邏輯層和驅(qū)動層。各層的主要功能如下:

    ①文件管理層對整個文件系統(tǒng)進(jìn)行封裝,為應(yīng)用層提供統(tǒng)一的、標(biāo)準(zhǔn)的API接口,將用戶對文件操作的請求提交給文件邏輯層進(jìn)行處理。為了增強(qiáng)文件系統(tǒng)在不同存儲器上的移植能力,選取幾個最基本的操作作為文件系統(tǒng)與FLASH存儲器設(shè)備的應(yīng)用接口。本文件系統(tǒng)提供的基本API函數(shù)見表1。

    ②文件邏輯層為文件管理層提供服務(wù),把文件管理層對文件的操作轉(zhuǎn)換為物理邏輯上的操作,并提交給驅(qū)動層處理。

    ③驅(qū)動層實(shí)現(xiàn)對存儲設(shè)備的物理操作,包括壞塊管理、區(qū)塊擦除、頁面寫入、頁面讀出等功能。

    表1 文件系統(tǒng)API函數(shù)

    1.2 文件系統(tǒng)的存儲空間管理

    本文件系統(tǒng)的存儲結(jié)構(gòu)類似于MS-DOS的FAT文件系統(tǒng)結(jié)構(gòu),分別由系統(tǒng)記錄、文件登記表、文件分配表和文件數(shù)據(jù)區(qū)域等組成[2],其基本結(jié)構(gòu)如圖1所示。

    (1)系統(tǒng)記錄(SR)

    系統(tǒng)記錄(SR)存放存儲器物理信息和文件系統(tǒng)分區(qū)信息。存儲器物理信息包括存儲器的類型、容量、劃分成多少個區(qū)塊、每區(qū)塊包含多少個頁面等。文件系統(tǒng)分區(qū)信息包括分區(qū)的起始塊和結(jié)束塊、分區(qū)的起始頁和結(jié)束頁、分區(qū)大小、可用空間等信息。系統(tǒng)記錄占用256字節(jié),其中前48字節(jié)為存儲器物理信息,有效數(shù)據(jù)40字節(jié);后208字節(jié)為文件系統(tǒng)分區(qū)信息,有效數(shù)據(jù)168字節(jié)。具體的存儲定義見表2、表3。

    (2)文件登記表(FRT)

    文件登記表(FRT)存放文件系統(tǒng)中每一個文件的文件代號、文件長度、文件屬性以及該文件的存儲鏈在文件分配表中的入口??紤]到嵌入式系統(tǒng)的應(yīng)用范圍,本文件系統(tǒng)不支持子目錄結(jié)構(gòu)。文件登記表占用15.75 KB,每個文件節(jié)點(diǎn)占用32字節(jié),因此,該文件系統(tǒng)可管理15.75 KB/32 B=504個文件。文件登記表數(shù)據(jù)結(jié)構(gòu)見表4。

    圖1 文件系統(tǒng)存儲結(jié)構(gòu)圖

    表2 存儲器物理信息數(shù)據(jù)結(jié)構(gòu)

    表3 系統(tǒng)分區(qū)信息數(shù)據(jù)結(jié)構(gòu)

    表4 文件登記表數(shù)據(jù)結(jié)構(gòu)

    (3)文件分配表(FAT)

    文件分配表(FAT)是整個文件系統(tǒng)的核心,存放著存儲器上所有區(qū)塊的占用與空閑情況以及每個文件的存儲鏈接結(jié)構(gòu)??紤]到在嵌入式處理器上實(shí)現(xiàn)的方便性并權(quán)衡文件系統(tǒng)應(yīng)用的規(guī)模,選擇將文件分配表固定為16字節(jié)的FAT標(biāo)識,16 KB可標(biāo)識8K個塊,每塊占用2字節(jié),共可管理32 GB的FLASH。

    (4)數(shù)據(jù)區(qū)域(Data Aera)

    數(shù)據(jù)區(qū)域(Data Aera)用于存放文件的數(shù)據(jù)內(nèi)容。本文件系統(tǒng)中,數(shù)據(jù)分配的最小單位是存儲器的一個基本擦除單位,即一個物理區(qū)塊,大小為4 MB。也就是說,文件所占用的存儲空間必須為一個物理區(qū)塊的整數(shù)倍,即使文件只有1字節(jié),也要占用一個物理區(qū)塊的存儲空間。

    2 文件系統(tǒng)的實(shí)現(xiàn)

    2.1 文件系統(tǒng)的初始化

    當(dāng)文件系統(tǒng)被加載時,系統(tǒng)首先掃描整個存儲介質(zhì)。將存儲在介質(zhì)中的系統(tǒng)信息表、文件登記表、文件分配表從存儲介質(zhì)中讀取到內(nèi)存,建立臨時系統(tǒng)信息表和臨時文件列表,創(chuàng)建一個臨時文件分配表。這樣,文件系統(tǒng)對文件登記表和文件分配表的操作轉(zhuǎn)換成對內(nèi)存中兩個臨時表的操作。因?yàn)閮?nèi)存的讀寫效率遠(yuǎn)遠(yuǎn)高于FLASH,因此可以大幅提高文件系統(tǒng)的操作效率。文件系統(tǒng)初始化流程圖如圖2所示。

    圖2 文件系統(tǒng)初始化流程圖

    2.2 降低文件系統(tǒng)的資源消耗

    基于DSP的FLASH文件系統(tǒng)的資源消耗[3],主要包括程序代碼開銷、處理器占用時間、運(yùn)行時內(nèi)存開銷以及額外的FLASH存儲器消耗。其中,運(yùn)行時內(nèi)存開銷很大程度上限制了FLASH文件系統(tǒng)的應(yīng)用;而設(shè)計結(jié)構(gòu)的改善與運(yùn)行時內(nèi)存開銷直接相關(guān),因此針對資源消耗的結(jié)構(gòu)優(yōu)化主要著重于減小運(yùn)行時的內(nèi)存開銷。

    FLASH存儲器的擦除單位是區(qū)塊,這是本文件系統(tǒng)中數(shù)據(jù)存儲分配的最小單元。如果不采用任何措施,運(yùn)行時內(nèi)存開銷中將至少包括備份一個完整區(qū)塊數(shù)據(jù)的緩沖區(qū);而一個FLASH存儲器的區(qū)塊可能很大,這在很多嵌入式系統(tǒng)中都是過大的資源[4]。

    為此,采用交換緩沖區(qū)(Swap Buffer)技術(shù)來解決這個困難。當(dāng)需要向某一個區(qū)塊寫入數(shù)據(jù)時,并不直接向該區(qū)塊寫入,而是首先擦除用于做交換緩沖區(qū)的區(qū)塊,然后逐步向交換緩沖區(qū)填入目的數(shù)據(jù)內(nèi)容。此時任何有用數(shù)據(jù)內(nèi)容都未被破壞,所以運(yùn)行內(nèi)存中的緩沖就較小。當(dāng)交換緩沖區(qū)填寫完成后,再擦除目的區(qū)塊,拷貝交換緩沖區(qū)內(nèi)容到目的區(qū)塊。

    采用交換緩沖區(qū)后,對內(nèi)存中的緩沖區(qū)大小沒有特別要求,考慮到FLASH存儲器的操作特性,選取FLASH存儲器的頁面容量作為內(nèi)存緩沖區(qū)大小。在結(jié)構(gòu)上做了上述改進(jìn)后,可大幅降低文件系統(tǒng)在運(yùn)行時的內(nèi)存消耗。在一般的FLASH存儲器中都有一個特別制作的區(qū)塊,該區(qū)塊保證不會損壞,適用于做交換緩沖區(qū)。這樣可以省去中間交換緩沖過程的數(shù)據(jù)完整性檢驗(yàn),加快寫操作的速度。

    2.3 文件系統(tǒng)的可循環(huán)讀寫

    由于FLASH具有讀寫速度較快而擦除較慢的特點(diǎn)[5],寫入過程中,當(dāng)系統(tǒng)存儲空間不足需要擦除數(shù)據(jù)時,將出現(xiàn)擦除過程尚未結(jié)束而再次申請寫入的情況,導(dǎo)致數(shù)據(jù)寫入錯誤。為了避免這一錯誤,在該文件系統(tǒng)中設(shè)計了一個擦除隊列,并保留一定的存儲空間。當(dāng)檢測到系統(tǒng)的剩余存儲空間小于保留空間的大小時,把舊的數(shù)據(jù)塊放入待擦除隊列,在寫入數(shù)據(jù)的間隙擦除數(shù)據(jù),同時緩存待寫入數(shù)據(jù),擦除完成后繼續(xù)寫入過程。文件系統(tǒng)的循環(huán)讀寫流程圖如圖3所示。

    圖3 循環(huán)讀寫流程圖

    2.4 文件系統(tǒng)的高可靠性設(shè)計

    在多數(shù)嵌入式文件系統(tǒng)中,僅僅對數(shù)據(jù)區(qū)域提供壞損管理,而對于系統(tǒng)記錄、文件分配表和文件登記表這3個極重要的文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)卻未做任何保護(hù)。一旦這些區(qū)域的內(nèi)容失效,必然將導(dǎo)致文件數(shù)據(jù)的大量損失。

    針對FLASH存儲器的寫操作異常終止問題(如非正常關(guān)電),本文件系統(tǒng)中將系統(tǒng)記錄、文件分配表和文件登記表這3個文件系統(tǒng)重要數(shù)據(jù)結(jié)構(gòu)采用冗余存儲的方法進(jìn)行處理。這樣可以避免因它們的操作異常,而導(dǎo)致的整個文件系統(tǒng)失效。

    具體做法是:將本次對文件操作所對應(yīng)的系統(tǒng)信息記錄標(biāo)記為最新,以此類推,則上次所做操作對應(yīng)的系統(tǒng)記錄為次新記錄。對系統(tǒng)記錄定義4個系統(tǒng)記錄保留區(qū)塊,將系統(tǒng)記錄、文件分配表和文件登記表順序存放在這個區(qū)域 內(nèi),確切 的 位置 在文 件 系統(tǒng) 初 始化 時通 過 掃描找到最新的系統(tǒng)記錄。

    如此可確保FLASH存儲器上總是存有一整套完好的較新的系統(tǒng)記錄表、文件分配表和文件登記表。在系統(tǒng)啟動運(yùn)行時,文件系統(tǒng)首先確定每一張表備份的合法性和時效性,判斷出上次系統(tǒng)關(guān)閉時是否存在操作異常終止并及時更正。通過這樣的設(shè)計,即使文件系統(tǒng)在使用中出現(xiàn)了寫操作異常終止的情況,錯誤也只涉及當(dāng)時被操作的文件數(shù)據(jù),不會擴(kuò)散給FLASH文件系統(tǒng)中的其他文件,更不會因此損壞3個文件系統(tǒng)表結(jié)構(gòu)而造成整個文件系統(tǒng)的癱瘓。

    結(jié) 語

    本文介紹了一種在DSP環(huán)境下開發(fā)文件系統(tǒng)的方法,并最終在項目中實(shí)現(xiàn)了該文件系統(tǒng)。經(jīng)實(shí)際應(yīng)用,很好地滿足了項目在數(shù)據(jù)存儲和文件管理方面的需求。

    本系統(tǒng)軟件主體代碼以C語言寫成,使用一個非常小的存儲器設(shè)備驅(qū)動接口,具有較好的可擴(kuò)展及可移植能力。另外,本文件系統(tǒng)針對FLASH本身的特性,采用冗余存儲和三層結(jié)構(gòu)設(shè)計,提高了文件系統(tǒng)的可靠性和操作效率,并具有良好的可維護(hù)性。

    [1]郁玉蘭.基于DSP平臺的嵌入式文件系統(tǒng)的研究與設(shè)計[D].上海:上海交通大學(xué),2005.

    [2]高永占.基于SD卡的嵌入式文件系統(tǒng)的設(shè)計與實(shí)現(xiàn)[D].北京:北京交通大學(xué),2010.

    [3]Tanenbaum A S.操作系統(tǒng)設(shè)計與實(shí)現(xiàn)[M].王鵬,尤晉元,朱鵬,等譯.北京:電子工業(yè)出版社,1998.

    [4]張堯?qū)W.計算機(jī)操作系統(tǒng)教程[M].北京:清華大學(xué)出版社,1994.

    [5]董明.適宜于嵌入式多媒體應(yīng)用的Flash文件系統(tǒng)[J].電子技術(shù)應(yīng)用,2002(9):24-27.

    猜你喜歡
    登記表緩沖區(qū)存儲器
    嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設(shè)計與實(shí)現(xiàn)
    靜態(tài)隨機(jī)存儲器在軌自檢算法
    2021年山西省對口升學(xué)考試獎勵照顧考生登記表
    山西省成人高校招生錄取照顧對象登記表
    2020年山西省對口升學(xué)考試獎勵照顧考生登記表
    山西省對口升學(xué)考試獲獎考生照顧加分登記表
    關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
    存儲器——安格爾(墨西哥)▲
    基于Nand Flash的高速存儲器結(jié)構(gòu)設(shè)計
    地理信息系統(tǒng)繪圖緩沖區(qū)技術(shù)設(shè)計與實(shí)現(xiàn)
    尼玛县| 平顶山市| 禹城市| 苏尼特右旗| 含山县| 五大连池市| 尤溪县| 鱼台县| 大宁县| 祁门县| 玉环县| 民县| 惠东县| 尼木县| 定结县| 福贡县| 麻江县| 紫金县| 武功县| 南溪县| 枣阳市| 会东县| 潮安县| 乃东县| 田林县| 贡觉县| 东港市| 永胜县| 武夷山市| 开鲁县| 林芝县| 汶川县| 凤山市| 巴彦县| 西昌市| 昌图县| 营山县| 鄂托克前旗| 石屏县| 泰来县| 镇赉县|