新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Nand+Flash存儲管理在DSP系統中的實現

        Nand+Flash存儲管理在DSP系統中的實現

        作者: 時間:2010-04-13 來源:網絡 收藏

          根據上表的設計,塊擦除次數最大為224 ? 1 = 16777215 ,遠大于的最大擦除次數10到100萬次;塊狀態標記字節,0xFF代表其為空閑塊,0xFD代表其為保留塊,0xFC代表其為有效塊,0xF0代表其為無效塊,0x00則表明當前塊為壞塊,在壞塊表中其對應位為0。

          3.3磨損均衡與無效塊回收

          如圖2所示,當上電后,如不存在壞塊表則應首先應建立相應的壞塊表, 參照壞塊表根據每一塊的第517字節建立各個鏈表Free_List,Valid_List,Invalid_List, Reserved_List,初始化并按擦除次數非遞減序排列各鏈表。當無效塊因擦除成為新的空閑塊時,根據塊擦除次數插入到空閑鏈表中相應位置,當需要寫入數據到新的空閑塊時則取用空 閑鏈表的鏈首所指空閑塊,寫入數據有效后則標識該塊為有效塊,否則標識為無效塊,通過 這樣的管理方式保證每次都是使用空閑鏈表中擦除次數最小的塊,從而使磨損達到均衡。

        Flash存儲管理流程示意圖

        圖2 管理流程示意圖

          對于靜態數據塊(指的是的不經常被修改的數據)[3],在本文中采用的處 理方法是當空閑塊中的最大擦除次數與有效塊中的最小擦除次數之差大于某一設定閥值(該 閥值不能過小,否則數據搬遷將過于頻繁),則遷移該有效塊中數據至空閑鏈表中擦除次數 最大的塊中,從而避免因某些數據塊被靜態數據長時間占用而使得其它數據塊的磨損加劇, 進而可使得整個Flash的磨損趨于平衡。

          對于無效塊的擦除回收本文的設計是在有足夠空閑塊的情況下一般是在空閑或上 電時進行,這樣能節約更多寶貴的資源以進行更重要的工作,當在系統運行過程中,如果空閑塊塊數與無效塊塊數的比值超出一個閥值(本系統取50),則啟動程序回收所有無效 塊。這個閥值應取得適中,如太大則使得回收過于頻繁,太少的話一方面使空閑空間過少, 另一方面一旦啟動回收程序,因要回收塊數過多,從而使采集數據的實時輸入受到影響,本 系統中取空閑塊與無效塊的比值作為閥值,好處是只要空閑塊塊數足夠,無效塊回收基本在系統初始化是進行,即使在采集過程中回收占用的時間也是十分微小,這樣的設計對實時性要求極高的嵌入式系統是很有好處的。

          3.4 Flash管理的程序

          對于 Flash在嵌入式系統中的使用,其接口方式與讀寫方法與在其他單片機中的方法都是一樣的,參考[1]中提供的流程圖就可以完成,其難點在于如何管理,在其管理中,對鏈表數據結構的操作是最重要的,下面將給出本文系統中用 TMS320F28x如何 Flash存儲管理的鏈表操作的關鍵程序代碼,結合具體的要求只需要進行簡單的修改即可滿足在新系統中的應用。

          在系統工程中的CMD文件中,對于段的定義一定要為.systemmem分配一定的可用RAM空間[ 4 ],這個大小跟系統后面malloc函數要分配的動態內存空間有關,以便在產生一個新的結點時申請一個結點類型大小的空間,在結點銷毀時可對空間進行釋放,定義系統中鏈表結點的類型為:

        程序

          通過這樣的定義就可以得到四個帶頭結點的鏈表,頭結點的數庫域中是沒有信息的,每 一個鏈表的頭結點都指向該鏈表的首元素,如不存在則指向NULL,程序中必須初始化指針, 否則會造成致命的系統錯誤。下面給出鏈表的初始化程序,結點生成及銷毀程序,其他的函 數就不一一列舉,只給出其相應函數名及功能介紹。

        程序

          4 結論

          本文創新點在于:從 Flash的特性出發,深入討論了基于磨損均衡算法的Flash存儲 管理在DSP系統中采用鏈表結構的程序,改進了無效塊的回收方式及動靜態數據塊的磨 損平衡。經實踐證明,有效延長了Flash的使用壽命,進一步提高了其存儲效率和數據安全性, 從而更有利于在嵌入式系統中的應用。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 沙湾县| 南宁市| 湘阴县| 崇信县| 成安县| 大兴区| 米泉市| 通山县| 沈阳市| 且末县| 宁海县| 揭阳市| 东宁县| 班戈县| 阿巴嘎旗| 高要市| 巴南区| 青海省| 军事| 富宁县| 剑河县| 来安县| 兴安县| 泸定县| 荆州市| 黑河市| 迭部县| 喀喇沁旗| 松阳县| 栾川县| 古丈县| 南木林县| 门源| 宜城市| 丹凤县| 柘荣县| 富宁县| 安龙县| 奎屯市| 裕民县| 青海省|