欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種壽命均衡的NandFlash存儲器讀寫方法與流程

文檔序號:11294939閱讀:2616來源:國知局
一種壽命均衡的NandFlash存儲器讀寫方法與流程

本發(fā)明涉及一種大容量存儲控制技術(shù),具體地說是涉及一種壽命均衡的NandFlash存儲器讀寫方法。



背景技術(shù):

現(xiàn)有絕大部分的Nandflash讀寫驅(qū)動,是為了適應(yīng)通用的文件系統(tǒng)而設(shè)立的,如支持幾乎無限制數(shù)量的文件寫入到存儲器中,文件讀寫格式也是準(zhǔn)備格式,因此這類文件系統(tǒng)驅(qū)動通常要求軟硬件資源較多,比如linux操作系統(tǒng)中的YAFFS文件系統(tǒng),是一種公認(rèn)優(yōu)秀的能完善支持Nandflash存儲器的文件系統(tǒng),移植該系統(tǒng)需要RAM通常為存儲器容量的百分之一,如Nandflash存儲器容量為1GB,則RAM容量需要10MB,此外對CPU運算速度也有要求,否則無法適應(yīng)對文件讀寫的速度要求。

有一類嵌入式系統(tǒng)組成的應(yīng)用系統(tǒng),如長時間數(shù)據(jù)數(shù)據(jù)采集記錄儀器,其每次開機(jī)運行時間長,文件數(shù)量少,單個文件容量大。這類系統(tǒng)資源相對緊張,比如CPU運行速度幾十MHz,RAM容量幾十乃至幾百KB,無法移植YAFFS這類標(biāo)準(zhǔn)文件驅(qū)動系統(tǒng)。大容量數(shù)據(jù)記錄系統(tǒng)中通常將NandFlash作為的數(shù)據(jù)存儲器。這種存儲器寫入以塊(block)為基本單元,存在寫入次數(shù)有限的缺點,如5000-10000次。在出廠時,就可能存在已經(jīng)已做標(biāo)記的壞塊(有壞塊的存儲器的其他塊仍然可以正常寫入、讀出),在寫入過程中也會產(chǎn)生新的壞塊。因此,對這種存儲器進(jìn)行讀寫時,需要識別壞塊、躲避壞塊、均衡寫入(盡可能保證所有的塊的寫入次數(shù)一致),以保證整個存儲器的壽命。

人們設(shè)計了多種文件系統(tǒng),以支持對NandFlash的讀寫,其基本思路是建立一張映射表和一個數(shù)據(jù)緩沖區(qū),定期更新寫入次數(shù)記錄和壞塊記錄,并依此調(diào)整數(shù)據(jù)寫入的塊位置。在數(shù)據(jù)寫入開始時,先將數(shù)據(jù)緩存在緩沖區(qū)中,等前述判斷完成后再寫入NandFlash中。



技術(shù)實現(xiàn)要素:

為了解決上述技術(shù)問題,本發(fā)明的目的是提供一種對存儲器進(jìn)行讀寫時,可識別壞塊、躲避壞塊、均衡寫入,保證所有的塊的寫入次數(shù)一致,以保證整個存儲器的壽命的壽命均衡的NandFlash存儲器讀寫方法。

本發(fā)明的技術(shù)方案是:一種壽命均衡的NandFlash存儲器讀寫方法,所述方法具體包括以下步驟:

寫入步驟為:

第一步:在NandFlash地址空間內(nèi)建立一張新的文件信息表,讀取其他所有文件信息表,確定新的文件的寫入起始地址;

第二步:判斷文件寫入起始地址是否正好處于一個塊的起始地址,如果是則要對其擦除,判斷擦除操作返回狀態(tài),如果返回錯誤,則表明該塊為壞塊,需要在交換區(qū)找出一個塊來替換,并更新壞塊登記表;

第三步:待寫入的數(shù)據(jù)存入內(nèi)存的數(shù)據(jù)緩沖區(qū),若已存夠一頁內(nèi)容,則寫入存儲器中(一次寫滿一頁),判斷寫操作返回狀態(tài),如果返回錯誤,則表明該頁所處的塊為壞塊,需要在交換區(qū)找出一個塊來替換,更新壞塊登記表,并將壞塊當(dāng)前頁和它之前頁的內(nèi)容復(fù)制到新塊中;

第四步:頁寫入成功后,更新文件信息表,包含文件存儲起始和結(jié)束地址、文件大小、文件更新時間;

第五步,重復(fù)第三步,直到用戶結(jié)束寫操作,檢查數(shù)據(jù)緩沖區(qū)中是否還有剩余數(shù)據(jù),若有則將緩沖區(qū)中所有數(shù)據(jù)寫入到存儲器(緩沖區(qū)未填滿的內(nèi)容用特定字節(jié)填充);

第六步:更新文件信息表,結(jié)束文件寫入操作;

讀取步驟為:

第一步:讀取文件信息表,已確定文件存儲的起始地址和結(jié)束地址;

第二步:判斷起始地址是否為新的塊地址,若是則執(zhí)行第三步,否則執(zhí)行第四步;

第三步:判斷準(zhǔn)備讀入的塊是否為壞塊,若是,則查找其替換塊的地址;

第四步:以頁為單位讀出,根據(jù)文件信息表判斷文件是否讀入完畢,若完畢則結(jié)束,否則繼續(xù);

第五步:判斷塊內(nèi)容是否全部頁都讀出,若沒有則將頁地址加1,繼續(xù)執(zhí)行第四步,否則執(zhí)行第六步;

第六步:將塊地址加1,繼續(xù)執(zhí)行第三步。

進(jìn)一步,所述方法還包括文件刪除操作:文件刪除操作是刪除信息文件信息表,若被刪除文件在數(shù)據(jù)區(qū)的起始地址之前尚存有文件,則將起始地址之前的文件依次復(fù)制,并存儲到最后1個文件的末尾起始地址,即保證數(shù)據(jù)區(qū)中保存有文件內(nèi)容的區(qū)域地址連貫。

進(jìn)一步,所述方法還包括文件追加寫入操作,即在文件的尾部繼續(xù)寫入,若被追加寫入的文件后面沒有其他文件,則直接繼續(xù)寫入即可,而如果該文件后面有其他文件,則先執(zhí)行的文件移動過程,將被追加寫入的文件移動到一用存儲空間的最尾端,然后在文件尾部繼續(xù)寫入。

進(jìn)一步,所述NandFlash地址空間分為存儲信息區(qū)、文件信息區(qū)、數(shù)據(jù)區(qū)和交換區(qū);

存儲信息區(qū),用于存儲壞塊登記交換表,位于文件信息區(qū)之后;所述存儲信息區(qū)分成若干小塊,每塊可以存儲一份完整存儲信息,每個小塊輪流使用;

文件信息區(qū),用于存儲壞文件信息表,位于存儲器物理地址的前幾個塊;文件信息區(qū)內(nèi)部分成若干小塊,每塊可以存儲一份完整文件信息,每個小塊輪流使用;

數(shù)據(jù)區(qū),用于存儲數(shù)據(jù)內(nèi)容本身,位于存儲器物理地址的中間部分;

交換區(qū),用于對壞塊的交換,位于存儲器物理地址的最后若干個塊,若數(shù)據(jù)區(qū)中某塊無法寫入,則將其用交換區(qū)中的塊替換。

進(jìn)一步,所述存儲信息區(qū)和文件信息區(qū)均有若干相同大小的小塊存儲單元組成,每小塊存儲單元均存儲一份完整存儲信息,每小塊存儲單元輪流使用。

本發(fā)明的有益效果是:由于采用上述技術(shù)方案,本發(fā)明的方法具有計算量小、需要內(nèi)存小的特點,適合適用于同一時間單一文件操作的應(yīng)用場合,對系統(tǒng)硬件、軟件需求低,能為這種低成本、低功耗的嵌入式系統(tǒng)的操作提供完整的文件系統(tǒng)方案。

附圖說明

圖1為本發(fā)明的文件寫入方法流程框圖。

圖2為本發(fā)明的文件讀取方法流程框圖。

圖3為本發(fā)明的存儲區(qū)結(jié)構(gòu)示意圖。

圖4為本發(fā)明的文件移動邏輯框圖。

具體實施方式

下面結(jié)合附圖和具體實施例對本發(fā)明的技術(shù)方案做進(jìn)一步說明。

如圖1和圖2所示,本發(fā)明一種壽命均衡的NandFlash存儲器讀寫方法,所述方法具體包括以下步驟:

寫入步驟為:

第一步:在NandFlash地址空間內(nèi)建立一張新的文件信息表,讀取其他所有文件信息表,確定新的文件的寫入起始地址;

第二步:判斷文件寫入起始地址是否正好處于一個塊的起始地址,如果是則要對其擦除,判斷擦除操作返回狀態(tài),如果返回錯誤,則表明該塊為壞塊,需要在交換區(qū)找出一個塊來替換,并更新壞塊登記表;

第三步:待寫入的數(shù)據(jù)存入內(nèi)存的數(shù)據(jù)緩沖區(qū),若已存夠一頁內(nèi)容,則寫入存儲器中(一次寫滿一頁),判斷寫操作返回狀態(tài),如果返回錯誤,則表明該頁所處的塊為壞塊,需要在交換區(qū)找出一個塊來替換,更新壞塊登記表,并將壞塊當(dāng)前頁和它之前頁的內(nèi)容復(fù)制到新塊中;

第四步:頁寫入成功后,更新文件信息表,包含文件存儲起始和結(jié)束地址、文件大小、文件更新時間;

第五步,重復(fù)第三步,直到用戶結(jié)束寫操作,檢查數(shù)據(jù)緩沖區(qū)中是否還有剩余數(shù)據(jù),若有則將緩沖區(qū)中所有數(shù)據(jù)寫入到存儲器(緩沖區(qū)未填滿的內(nèi)容用字節(jié)填充,如十六進(jìn)制字節(jié)AA);

第六步:更新文件信息表,結(jié)束文件寫入操作;

讀取步驟為:

第一步:讀取文件信息表,已確定文件存儲的起始地址和結(jié)束地址;

第二步:判斷起始地址是否為新的塊地址,若是則執(zhí)行第三步,否則執(zhí)行第四步;

第三步:判斷準(zhǔn)備讀入的塊是否為壞塊,若是,則查找其替換塊的地址;

第四步:以頁為單位讀出,根據(jù)文件信息表判斷文件是否讀入完畢,若完畢則結(jié)束,否則繼續(xù);

第五步:判斷塊內(nèi)容是否全部頁都讀出,若沒有則將頁地址加1,繼續(xù)執(zhí)行第四步,否則執(zhí)行第六步;

第六步:將塊地址加1,繼續(xù)執(zhí)行第三步。

如圖3所示,本發(fā)明所述NandFlash地址空間分為存儲信息區(qū)、文件信息區(qū)、數(shù)據(jù)區(qū)和交換區(qū);

存儲信息區(qū),用于存儲壞塊登記交換表,位于文件信息區(qū)之后;所述存儲信息區(qū)分成若干小塊,每塊可以存儲一份完整存儲信息,每個小塊輪流使用;

文件信息區(qū),用于存儲壞文件信息表,位于存儲器物理地址的前幾個塊;文件信息區(qū)內(nèi)部分成若干小塊,每塊可以存儲一份完整文件信息,每個小塊輪流使用;

數(shù)據(jù)區(qū),用于存儲數(shù)據(jù)內(nèi)容本身,位于存儲器物理地址的中間部分;

交換區(qū),用于對壞塊的交換,位于存儲器物理地址的最后若干個塊,若數(shù)據(jù)區(qū)中某塊無法寫入,則將其用交換區(qū)中的塊替換。

如圖4(a)所示,所述方法還包括文件刪除操作:文件刪除操作是刪除信息文件信息表,若被刪除文件在數(shù)據(jù)區(qū)的起始地址之前尚存有文件,則將起始地址之前的文件依次復(fù)制,并存儲到最后1個文件的末尾起始地址,即保證數(shù)據(jù)區(qū)中保存有文件內(nèi)容的區(qū)域地址連貫。

如圖4(b)所示,所述方法還包括文件追加寫入操作,即在文件的尾部繼續(xù)寫入,若被追加寫入的文件后面沒有其他文件,則直接繼續(xù)寫入即可,而如果該文件后面有其他文件,則先執(zhí)行的文件移動過程,將被追加寫入的文件移動到一用存儲空間的最尾端,然后在文件尾部繼續(xù)寫入。

以上對本發(fā)明的一個實施例進(jìn)行了詳細(xì)說明,但所述內(nèi)容僅為本發(fā)明的較佳實施例,不能被認(rèn)為用于限定本發(fā)明的實施范圍。凡依本發(fā)明申請范圍所作的均等變化與改進(jìn)等,均應(yīng)仍歸屬于本發(fā)明的專利涵蓋范圍之內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
噶尔县| 康乐县| 长垣县| 蓬安县| 华蓥市| 容城县| 监利县| 武隆县| 肃宁县| 涞源县| 望江县| 汤阴县| 巴彦淖尔市| 若尔盖县| 布尔津县| 尼勒克县| 甘德县| 聂荣县| 漳浦县| 洛川县| 揭阳市| 景东| 珠海市| 西乌| 海城市| 资溪县| 修武县| 赤壁市| 景东| 明溪县| 穆棱市| 青阳县| 铁力市| 太白县| 顺昌县| 长垣县| 蛟河市| 新巴尔虎左旗| 宾川县| 台山市| 常德市|