Nand+Flash存儲管理在DSP系統(tǒng)中的實現(xiàn)_第1頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、nand+flash存儲管理在dsp系統(tǒng)中的實現(xiàn)2所示,當(dāng)系統(tǒng)上電后,如不存在壞塊管理表則應(yīng)首先應(yīng)建立相應(yīng)的壞塊管理表, 參照壞塊表按照每一塊的第517字節(jié)建立各個鏈表free_list,valid_list,invalid_list, reserved_list,初始化并按擦除次數(shù)非遞減序羅列各鏈表。當(dāng)無效塊因擦除成為新的空閑塊 時,按照塊擦除次數(shù)插入到空閑鏈表中相應(yīng)位置,當(dāng)需要寫入數(shù)據(jù)到新的空閑塊時則取用空 閑鏈表的鏈?zhǔn)姿缚臻e塊,寫入數(shù)據(jù)有效后則標(biāo)識該塊為有效塊,否則標(biāo)識為無效塊,通過 這樣的管理方式保證每次都是用法空閑鏈表中擦除次數(shù)最小的塊,從而使磨損達(dá)到均衡。對于靜態(tài)數(shù)據(jù)塊(指的是f

2、lash中存儲的不常常被修改的數(shù)據(jù))3,在本文中采納的處 理辦法是當(dāng)空閑塊中的最大擦除次數(shù)與有效塊中的最小擦除次數(shù)之差大于某一設(shè)定閥值(該 閥值不能過小,否則數(shù)據(jù)搬遷將過于頻繁),則遷移該有效塊中數(shù)據(jù)至空閑鏈表中擦除次數(shù) 最大的塊中,從而避開因某些數(shù)據(jù)塊被靜態(tài)數(shù)據(jù)長時光占用而使得其它數(shù)據(jù)塊的磨損加劇, 進而可使得囫圇flash的磨損趨于平衡。對于無效塊的擦除回收本文的設(shè)計是在有足夠空閑塊的狀況下普通是在系統(tǒng)空閑或上 電時舉行,這樣能節(jié)省更多珍貴的系統(tǒng)資源以舉行更重要的工作,當(dāng)在系統(tǒng)運行過程中,如 果空閑塊塊數(shù)與無效塊塊數(shù)的比值超出一個閥值(本系統(tǒng)取50),則啟動程序回收全部無效 塊。這個閥值應(yīng)

3、取得適中,如太大則使得回收過于頻繁,太少的話一方面使空閑空間過少, 另一方面一旦啟動回收程序,因要回收塊數(shù)過多,從而使采集數(shù)據(jù)的實時輸入受到影響,本 系統(tǒng)中取空閑塊與無效塊的比值作為閥值,益處是只要空閑塊塊數(shù)足夠,無效塊回收基本在系統(tǒng)初始化是舉行,即使在采集過程中回收占用的時光也是非常極小,這樣的設(shè)計對實時性要求極高的嵌入式系統(tǒng)是很有益處的。3.4 flash存儲管理的程序?qū)崿F(xiàn)對于nand flash在dsp嵌入式系統(tǒng)中的用法,其接口方式與讀寫辦法與在其他中的辦法都是一樣的,參考1中提供的流程圖就可以完成,其難點在于如何管理,在其管理中,對鏈表數(shù)據(jù)結(jié)構(gòu)的操作是最重要的,下面將給出本文系統(tǒng)中用d

4、sp tms320f28x如何實現(xiàn)nand flash存儲管理的鏈表操作的關(guān)鍵程序代碼,結(jié)合詳細(xì)的要求只需要舉行容易的修改即可滿足在新系統(tǒng)中的應(yīng)用。在dsp系統(tǒng)工程中的cmd文件中,對于段的定義一定要為.systemmem分配一定的可用ram空間 4 ,這個大小跟系統(tǒng)后面malloc函數(shù)要分配的動態(tài)內(nèi)存空間有關(guān),以便在產(chǎn)生一個新的結(jié)點時申請一個結(jié)點類型大小的空間,在結(jié)點銷毀時可對空間舉行釋放,定義系統(tǒng)中鏈表結(jié)點的類型為:typedef struct list_dataunsigned int block_ld; /用以存儲該結(jié)點對應(yīng)的flash物理塊地址0-1023unsigned long

5、erase_data; /用以存儲該結(jié)點對應(yīng)的flash物理塊的擦除次數(shù)struct list_data *next; /指向下一個結(jié)點taglist, tagnode; /兩種變量類型,區(qū)別鏈表與結(jié)點taglist, free_list, valid_list,reserved_list; /按照名稱依次對應(yīng)四個鏈表通過這樣的定義就可以得到四個帶頭結(jié)點的鏈表,頭結(jié)點的數(shù)庫域中是沒有信息的,每 一個鏈表的頭結(jié)點都指向該鏈表的首元素,如不存在則指向null,程序中必需初始化指針, 否則會造成致命的系統(tǒng)錯誤。下面給出鏈表的初始化程序,結(jié)點生成及銷毀程序,其他的函 數(shù)就不一一列舉,只給出其相應(yīng)函數(shù)名

6、及功能介紹。void initlist(taglist * list)/-帶頭結(jié)點的鏈表初始化-/list->next=null;tagnode * newnode (unsigned int newblock_id, unsigned long newerase_count)/-由塊號與擦除次數(shù)生成一個鏈表結(jié)點-/tagnode *pnew=null;pnew=(tagnode *)malloc(sizeof(tagnode);if(pnew!=null)pnew->block_id=newblock_id;pnew->erase_data=newerase_count;p

7、new->next=null;retuen pnew;void deletefirst(taglist *list)/-刪除鏈表中首元素-/tagnode *pcur=null;pcur=list->next;if(pcur)list->next=pcur->next;free(pcur);void insertnode(taglist *list, tagnode *pnew)/-按塊擦除次數(shù)非遞減次序?qū)⑿曼c插入鏈表-/.tagnode * getnode(taglist * list, unsigned int position)/-按取指定位置元素如超出鏈表長度則返回最后一個-/.unsigned int getlistlength(taglist *list)/-獵取鏈表長度-/.4 結(jié)論本文創(chuàng)新點在于:從nand flash的特性動身,深化研究了基于磨損均衡算法的flash存儲

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論