本發(fā)明涉及高速大容量存儲(chǔ)技術(shù)領(lǐng)域,特別涉及一種nandflash陣列寫失敗的處理方法。
背景技術(shù):
nandflash作為一種新興的存儲(chǔ)設(shè)備,由于存儲(chǔ)容量大及成本低等特點(diǎn),在許多領(lǐng)域已經(jīng)替代了norflash。但是由于nandflash的特性,nandflash存儲(chǔ)經(jīng)常會(huì)出現(xiàn)壞塊,導(dǎo)致數(shù)據(jù)無(wú)法寫入。
基于上述情況,本發(fā)明提出了一種nandflash陣列寫失敗的處理方法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明為了彌補(bǔ)現(xiàn)有技術(shù)的缺陷,提供了一種簡(jiǎn)單高效的nandflash陣列寫失敗的處理方法。
本發(fā)明是通過(guò)如下技術(shù)方案實(shí)現(xiàn)的:
一種nandflash陣列寫失敗的處理方法,其特征在于:當(dāng)nandflash陣列在寫過(guò)程中出現(xiàn)寫錯(cuò)誤時(shí),從備用塊ram表中查找一個(gè)可替換塊的地址,并將數(shù)據(jù)搬移到新的替換塊中。
所述nandflash陣列寫失敗的處理方法,包括以下步驟:
(1)首先,當(dāng)nandflash陣列出現(xiàn)寫錯(cuò)誤時(shí),page計(jì)數(shù)器指針初始化為0,并記錄當(dāng)前出錯(cuò)時(shí)nandflash的寫入page地址;
(2)根據(jù)nandflash陣列的行列號(hào),確定出現(xiàn)錯(cuò)誤的nandflash,并從對(duì)應(yīng)的備用塊ram表中查找替換塊,確定新的block地址;
(3)向出錯(cuò)的nandflash發(fā)送讀cache命令,將未寫入nandflash中的數(shù)據(jù)寫入ram中保存下來(lái);
(4)判讀當(dāng)前的page指針是否等于出錯(cuò)時(shí)的page地址,如果不相等,則發(fā)送copybackread命令,讀取page指針對(duì)應(yīng)地址的數(shù)據(jù)到cache中,然后通過(guò)copybackwrite命令將cache數(shù)據(jù)寫入新的block對(duì)應(yīng)page指針的地址,然后page指針加1,繼續(xù)判斷page指針是否等于出錯(cuò)時(shí)的page地址;如果page指針等于出錯(cuò)時(shí)的page地址,則將ram中保存的內(nèi)容通過(guò)普通寫命令寫入新的block的對(duì)應(yīng)page地址,否則繼續(xù)執(zhí)行相應(yīng)的copyback命令進(jìn)行數(shù)據(jù)搬移。
所述步驟(3)中,ram大小須能存儲(chǔ)nandflashcache內(nèi)容。
本發(fā)明的有益效果是:該nandflash陣列寫失敗的處理方法,能夠?qū)崿F(xiàn)nandflash陣列壞塊的替換及數(shù)據(jù)搬移,保證了數(shù)據(jù)的完整。
附圖說(shuō)明
附圖1為本發(fā)明nandflash陣列寫失敗的處理方法示意圖。
具體實(shí)施方式
為了使本發(fā)明所要解決的技術(shù)問(wèn)題、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明進(jìn)行詳細(xì)的說(shuō)明。應(yīng)當(dāng)說(shuō)明的是,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
該nandflash陣列寫失敗的處理方法,當(dāng)nandflash陣列在寫過(guò)程中出現(xiàn)寫錯(cuò)誤時(shí),從備用塊ram表中查找一個(gè)可替換塊的地址,并將數(shù)據(jù)搬移到新的替換塊中。
該nandflash陣列寫失敗的處理方法,包括以下步驟:
(1)首先,當(dāng)nandflash陣列出現(xiàn)寫錯(cuò)誤時(shí),page計(jì)數(shù)器指針初始化為0,并記錄當(dāng)前出錯(cuò)時(shí)nandflash的寫入page地址;
(2)根據(jù)nandflash陣列的行列號(hào),確定出現(xiàn)錯(cuò)誤的nandflash,并從對(duì)應(yīng)的備用塊ram表中查找替換塊,確定新的block地址;
(3)向出錯(cuò)的nandflash發(fā)送讀cache命令,將未寫入nandflash中的數(shù)據(jù)寫入ram中保存下來(lái);
(4)判讀當(dāng)前的page指針是否等于出錯(cuò)時(shí)的page地址,如果不相等,則發(fā)送copybackread命令,讀取page指針對(duì)應(yīng)地址的數(shù)據(jù)到cache中,然后通過(guò)copybackwrite命令將cache數(shù)據(jù)寫入新的block對(duì)應(yīng)page指針的地址,然后page指針加1,繼續(xù)判斷page指針是否等于出錯(cuò)時(shí)的page地址;如果page指針等于出錯(cuò)時(shí)的page地址,則將ram中保存的內(nèi)容通過(guò)普通寫命令寫入新的block的對(duì)應(yīng)page地址,否則繼續(xù)執(zhí)行相應(yīng)的copyback命令進(jìn)行數(shù)據(jù)搬移。
所述步驟(3)中,ram大小須能存儲(chǔ)nandflashcache內(nèi)容。