<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Nand+Flash存儲(chǔ)管理在DSP系統(tǒng)中的實(shí)現(xiàn)

          Nand+Flash存儲(chǔ)管理在DSP系統(tǒng)中的實(shí)現(xiàn)

          作者: 時(shí)間:2010-04-13 來源:網(wǎng)絡(luò) 收藏

            根據(jù)上表的設(shè)計(jì),塊擦除次數(shù)最大為224 ? 1 = 16777215 ,遠(yuǎn)大于的最大擦除次數(shù)10到100萬次;塊狀態(tài)標(biāo)記字節(jié),0xFF代表其為空閑塊,0xFD代表其為保留塊,0xFC代表其為有效塊,0xF0代表其為無效塊,0x00則表明當(dāng)前塊為壞塊,在壞塊表中其對(duì)應(yīng)位為0。

            3.3磨損均衡與無效塊回收

            如圖2所示,當(dāng)上電后,如不存在壞塊表則應(yīng)首先應(yīng)建立相應(yīng)的壞塊表, 參照壞塊表根據(jù)每一塊的第517字節(jié)建立各個(gè)鏈表Free_List,Valid_List,Invalid_List, Reserved_List,初始化并按擦除次數(shù)非遞減序排列各鏈表。當(dāng)無效塊因擦除成為新的空閑塊時(shí),根據(jù)塊擦除次數(shù)插入到空閑鏈表中相應(yīng)位置,當(dāng)需要寫入數(shù)據(jù)到新的空閑塊時(shí)則取用空 閑鏈表的鏈?zhǔn)姿缚臻e塊,寫入數(shù)據(jù)有效后則標(biāo)識(shí)該塊為有效塊,否則標(biāo)識(shí)為無效塊,通過 這樣的管理方式保證每次都是使用空閑鏈表中擦除次數(shù)最小的塊,從而使磨損達(dá)到均衡。

          Flash存儲(chǔ)管理流程示意圖

          圖2 管理流程示意圖

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

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

            3.4 Flash管理的程序

            對(duì)于 Flash在嵌入式系統(tǒng)中的使用,其接口方式與讀寫方法與在其他單片機(jī)中的方法都是一樣的,參考[1]中提供的流程圖就可以完成,其難點(diǎn)在于如何管理,在其管理中,對(duì)鏈表數(shù)據(jù)結(jié)構(gòu)的操作是最重要的,下面將給出本文系統(tǒng)中用 TMS320F28x如何 Flash存儲(chǔ)管理的鏈表操作的關(guān)鍵程序代碼,結(jié)合具體的要求只需要進(jìn)行簡單的修改即可滿足在新系統(tǒng)中的應(yīng)用。

            在系統(tǒng)工程中的CMD文件中,對(duì)于段的定義一定要為.systemmem分配一定的可用RAM空間[ 4 ],這個(gè)大小跟系統(tǒng)后面malloc函數(shù)要分配的動(dòng)態(tài)內(nèi)存空間有關(guān),以便在產(chǎn)生一個(gè)新的結(jié)點(diǎn)時(shí)申請(qǐng)一個(gè)結(jié)點(diǎn)類型大小的空間,在結(jié)點(diǎn)銷毀時(shí)可對(duì)空間進(jìn)行釋放,定義系統(tǒng)中鏈表結(jié)點(diǎn)的類型為:

          程序

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

          程序

            4 結(jié)論

            本文創(chuàng)新點(diǎn)在于:從 Flash的特性出發(fā),深入討論了基于磨損均衡算法的Flash存儲(chǔ) 管理在DSP系統(tǒng)中采用鏈表結(jié)構(gòu)的程序,改進(jìn)了無效塊的回收方式及動(dòng)靜態(tài)數(shù)據(jù)塊的磨 損平衡。經(jīng)實(shí)踐證明,有效延長了Flash的使用壽命,進(jìn)一步提高了其存儲(chǔ)效率和數(shù)據(jù)安全性, 從而更有利于在嵌入式系統(tǒng)中的應(yīng)用。


          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();