專利名稱:一種實(shí)現(xiàn)nor flash壞塊管理的方法及其控制電路的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及FLASH閃存技術(shù)領(lǐng)域,特別是一種用于嵌入式系統(tǒng)或 FLASH壞塊進(jìn)行管理的方法及其控制電路。
背景技術(shù):
FLASH又叫閃存,是非易失存儲(chǔ)器,以頁(yè)(SECTOR)或塊(BLOCK) 為單位對(duì)存儲(chǔ)器單元進(jìn)行擦寫(xiě)和再編程。任何FLASH器件的寫(xiě)入操 作只能在空或已擦除的單元內(nèi)進(jìn)行,大多數(shù)情況下,在進(jìn)行寫(xiě)入操作 之前必須先執(zhí)行擦除。
NOR和NAND是現(xiàn)在市場(chǎng)上兩種主要的非易失閃存技術(shù)。Intel 于1988年首先開(kāi)發(fā)出NOR FLASH技術(shù),徹底改變了原先由EPROM 和EEPROM —統(tǒng)天下的局面。緊接著,1989年,東芝公司發(fā)表了 NAND FLASH結(jié)構(gòu),強(qiáng)調(diào)降低每比特的成本,更高的性能,并且象 磁盤(pán)一樣可以通過(guò)接口輕松升級(jí)。大多數(shù)情況下閃存只是用來(lái)存儲(chǔ)少 量的代碼,這時(shí)NOR閃存更適合一些。而NAND則是高數(shù)據(jù)存儲(chǔ)密 度的理想解決方案。
NOR的特點(diǎn)是芯片內(nèi)執(zhí)行(XIP, execute In Place),這樣應(yīng)用程序 可以直接在FLASH閃存內(nèi)運(yùn)行,不必再把代碼讀到系統(tǒng)RAM中。 NOR的傳輸效率很高,在1 4MB的小容量時(shí)具有很高的成本效益, 但是很低的寫(xiě)入和擦除速度大大影響了它的性能。NAND結(jié)構(gòu)能提供存儲(chǔ)密度,并且寫(xiě)入和擦除的速度也很
快。應(yīng)用NAND的困難在于FLASH的管理和需要特殊的系統(tǒng)接口 。 NOR FLASH主要應(yīng)用在代碼存儲(chǔ)介質(zhì)中,占據(jù)了容量為l 16MB閃存市場(chǎng)的大部分,而NAND FLASH主要用在更大容量的產(chǎn) 品當(dāng)中。NOR的擦寫(xiě)次數(shù)是十萬(wàn)次,應(yīng)付一般的應(yīng)用足以。但在很 多應(yīng)用中,往往有部分?jǐn)?shù)據(jù)需要常常更新維護(hù),這部分?jǐn)?shù)據(jù)就需要頻 繁擦寫(xiě),它要求比十萬(wàn)次更高的擦寫(xiě)耐力,而用軟件來(lái)實(shí)現(xiàn)壞的數(shù)據(jù) 塊的管理和更新備份會(huì)很煩瑣,也會(huì)占用大量系統(tǒng)執(zhí)行時(shí)間。
發(fā)明內(nèi)容
針對(duì)上述現(xiàn)有技術(shù)中存在的不足,本發(fā)明的目的是提供一種實(shí)現(xiàn) NOR FLASH壞塊管理的方法及其控制電路。它通過(guò)對(duì)FLASH進(jìn)行 物理上的配置分區(qū),對(duì)壞塊進(jìn)行記錄和擦寫(xiě)替換以及上電糾錯(cuò),實(shí)現(xiàn) 系統(tǒng)邏輯地址訪問(wèn)NOR FLASH時(shí),有不同擦寫(xiě)耐力。
為了實(shí)現(xiàn)上述發(fā)明的目的,本發(fā)明的技術(shù)方案以如下方式實(shí)現(xiàn) 一種實(shí)現(xiàn)NOR FLASH壞塊管理的方法,將FLASH分為普通區(qū)、 常用區(qū)和替換區(qū),其主要步驟為
① 系統(tǒng)上電時(shí),上電糾錯(cuò)單元檢査索引存儲(chǔ)單元信息,如有損壞, 校驗(yàn)索弓I存儲(chǔ)單元的錯(cuò)誤信息并對(duì)其進(jìn)行糾正;
② 系統(tǒng)訪問(wèn)NOR FLASH普通區(qū)時(shí),如出現(xiàn)壞塊不做替換;當(dāng)系 統(tǒng)擦常用區(qū)發(fā)現(xiàn)有壞塊時(shí),擦替換控制單元通過(guò)FLASH接口單元在 索引存儲(chǔ)單元的信息里找到替換區(qū)己被替換的地址索引的最大值,然 后改寫(xiě)索引存儲(chǔ)單元;③系統(tǒng)訪問(wèn)常用區(qū)壞塊地址時(shí),控制電路將通過(guò)索引存儲(chǔ)單元自 動(dòng)找到替換區(qū)的替換數(shù)據(jù)塊。
在上述實(shí)現(xiàn)NOR FLASH壞塊管理的方法中,所述索引存儲(chǔ)單元 被分為Ax和Ay兩個(gè)存儲(chǔ)區(qū)域,存取同樣的數(shù)據(jù);系統(tǒng)上電時(shí)依次 掃描兩個(gè)存儲(chǔ)區(qū)域中對(duì)應(yīng)單元的值,如果發(fā)現(xiàn)兩者的值不相等,則記 錄此Ax和Ay單元的位置,待掃描完Ax和Ay,找到了當(dāng)前已使用
過(guò)的替換區(qū)的最大地址,再將該最大值加1的地址索引值改寫(xiě)入相應(yīng) 的Ax和Ay對(duì)應(yīng)單元達(dá)到糾錯(cuò)的目的。
在上述實(shí)現(xiàn)NOR FLASH壞塊管理的方法中,所述索引存儲(chǔ)單元 用一個(gè)或多個(gè)字節(jié),對(duì)應(yīng)一個(gè)常用區(qū)的數(shù)據(jù)塊地址,每個(gè)字節(jié)存儲(chǔ)對(duì) 應(yīng)常用區(qū)數(shù)據(jù)塊是否已被替換的信息,以及對(duì)應(yīng)的替換區(qū)的地址信 息。
在上述實(shí)現(xiàn)NOR FLASH壞塊管理的方法中,所述替換區(qū)的數(shù)據(jù) 塊邏輯地址對(duì)應(yīng)于索引存儲(chǔ)單元里的數(shù)據(jù),替換區(qū)的物理地址為替換 區(qū)基地址加上索引數(shù)據(jù)。
在上述實(shí)現(xiàn)NOR FLASH壞塊管理的方法中,所述索引存儲(chǔ)單元 可以是FLASH的數(shù)據(jù)存儲(chǔ)單元或OTP區(qū),也可以是其他在系統(tǒng)無(wú)電 源時(shí)仍能保持存儲(chǔ)數(shù)據(jù)的非易失性存儲(chǔ)器,如EEPROM。
對(duì)上述實(shí)現(xiàn)NOR FLASH壞塊管理方法的控制電路,其結(jié)構(gòu)特點(diǎn) 是,它包括分為普通區(qū)、常用區(qū)和替換區(qū)的FLASH。普通區(qū)和常用 區(qū)為系統(tǒng)總線可訪問(wèn)區(qū)域,普通區(qū)不可被替換。常用區(qū)可通過(guò)替換區(qū) 對(duì)壞塊的邏輯地址進(jìn)行替換。替換區(qū)為常用區(qū)的替換備份區(qū)。還包括控制FLASH擦替換的擦替換控制單元、系統(tǒng)上電時(shí)用來(lái)檢查并校驗(yàn) 寫(xiě)錯(cuò)誤的上電糾錯(cuò)單元、索引存儲(chǔ)單元以及控制FLASH擦寫(xiě)時(shí)序的 FLASH接口單元。所述擦替換控制單元、上電糾錯(cuò)單元相互連接并 分別與FLASH接口單元相互連接,F(xiàn)LASH接口單元和索引存儲(chǔ)單 元、FLASH相互連接。
在上述控制電路中,所述擦替換控制單元包括擦寫(xiě)單元和回讀校 驗(yàn)單元。擦寫(xiě)單元控制FLASH的寫(xiě)操作和擦操作,回讀校驗(yàn)單元用 于擦結(jié)束回讀校驗(yàn)。
在上述控制電路中,所述索引存儲(chǔ)單元可以是FLASH的數(shù)據(jù)存儲(chǔ) 單元或OTP區(qū),也可以是其他在系統(tǒng)無(wú)電源時(shí)仍能保持存儲(chǔ)數(shù)據(jù)的 非易失性存儲(chǔ)器,如EEPROM。
在上述控制電路中,所述索引存儲(chǔ)單元被分為Ax和Ay兩個(gè)存儲(chǔ) 區(qū)域,存取同樣的數(shù)據(jù)。
本發(fā)明由于采用了上述的管理方法和與其適應(yīng)的控制回路,通過(guò) 對(duì)FLASH進(jìn)行物理上的配置分區(qū),實(shí)現(xiàn)FLASH在某一區(qū)域產(chǎn)生數(shù) 據(jù)壞塊情況下,系統(tǒng)還能對(duì)該FLASH區(qū)域進(jìn)行訪問(wèn)。也就是說(shuō),在 系統(tǒng)軟件不做更改,也不對(duì)數(shù)據(jù)進(jìn)行備份的情況下,本發(fā)明實(shí)現(xiàn)了壞 塊的數(shù)據(jù)備份,也就實(shí)現(xiàn)了系統(tǒng)對(duì)FLASH訪問(wèn)的高擦寫(xiě)耐力。
下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明做進(jìn)一步說(shuō)明。
圖l為本發(fā)明的控制電路結(jié)構(gòu)示意圖2為本發(fā)明實(shí)施例中索引存儲(chǔ)單元的分配示意圖;圖3為本發(fā)明FLASH的擦操作以及替換程序流程圖; 圖4為本發(fā)明的在系統(tǒng)中的應(yīng)用示例圖。
具體實(shí)施例方式
參看圖l,本發(fā)明包括分為普通區(qū)、常用區(qū)和替換區(qū)的FLASH。 普通區(qū)和常用區(qū)為系統(tǒng)總線可訪問(wèn)區(qū)域,普通區(qū)不可被替換。常用區(qū) 可通過(guò)替換區(qū)對(duì)壞塊的邏輯地址進(jìn)行替換,替換區(qū)為常用區(qū)的替換備 份區(qū)。本發(fā)明還包括控制FLASH擦替換的擦替換控制單元、系統(tǒng)上 電時(shí)用來(lái)檢査并校驗(yàn)寫(xiě)錯(cuò)誤的上電糾錯(cuò)單元、索引存儲(chǔ)單元以及控制 FLASH擦寫(xiě)時(shí)序的FLASH接口單元。擦替換控制單元、上電糾錯(cuò)單 元相互連接并分別與FLASH接口單元相互連接,F(xiàn)LASH接口單元和 索引存儲(chǔ)單元、FLASH相互連接。擦替換控制單元包括擦寫(xiě)單元和 回讀校驗(yàn)單元,擦寫(xiě)單元控制FLASH的寫(xiě)操作和擦操作,回讀校驗(yàn) 單元用于擦結(jié)束回讀校驗(yàn)。索引存儲(chǔ)單元可以是FLASH的數(shù)據(jù)存儲(chǔ) 單元或OTP區(qū),也可以是其他在系統(tǒng)無(wú)電源時(shí)仍能保持存儲(chǔ)數(shù)據(jù)的 非易失性存儲(chǔ)器,如EEPROM。索引存儲(chǔ)單元被分為Ax和Ay兩個(gè) 存儲(chǔ)區(qū)域,存取同樣的數(shù)據(jù)。
參看圖2,本發(fā)明使用時(shí),假設(shè)常用區(qū)有128個(gè)數(shù)據(jù)塊,并且常用 區(qū)數(shù)據(jù)最多可被替換2次,則Ax區(qū)和Ay區(qū)分別為256字節(jié),Ax就 有AxO Ax127。每個(gè)Ax的位置就代表一個(gè)常用區(qū)地址,這個(gè)地址是 相對(duì)于常用區(qū)的起始地址而言。每個(gè)Ax對(duì)應(yīng)兩個(gè)字節(jié),每個(gè)字節(jié)的 數(shù)據(jù)代表每一次替換的信息。每一個(gè)字節(jié)的定義為,bit[6:0]指的替換 區(qū)數(shù)據(jù)塊的索引地址,這個(gè)地址是相對(duì)于替換區(qū)的起始地址而言,實(shí)際訪問(wèn)替換區(qū)的地址是替換區(qū)起始地址加上此索引地址;bit[7]指的是
常用區(qū)是否已經(jīng)被替換,定義如果沒(méi)被替換此位為1,已被替換此位為0。
參看圖3, FLASH的擦操作及替換程序流程的方法步驟為 系統(tǒng)開(kāi)始工作,當(dāng)訪問(wèn)NOR FLASH普通區(qū)時(shí),如出現(xiàn)壞塊不做 替換。系統(tǒng)擦常用區(qū)時(shí),當(dāng)常用區(qū)地址為O的數(shù)據(jù)塊擦壽命第一次耗 盡時(shí),即經(jīng)回讀檢查發(fā)現(xiàn)為壞塊,會(huì)找到Ax區(qū)的AxO位置。先查看 第一個(gè)字節(jié),第一個(gè)字節(jié)的內(nèi)容為FF。擦替換控制單元通過(guò)FLASH 接口單元在索引存儲(chǔ)單元的信息里找到替換區(qū)已被替換的地址索引
的最大值,然后將該最大值加1的地址索引值寫(xiě)入Ax0的第一個(gè)字 節(jié)。此后,當(dāng)系統(tǒng)訪問(wèn)常用區(qū)第一個(gè)數(shù)據(jù)塊時(shí),系統(tǒng)邏輯地址訪問(wèn)的 還是常用區(qū)第一個(gè)數(shù)據(jù)塊,但其物理地址將訪問(wèn)Ax0中第一個(gè)字節(jié) 所指向的替換區(qū)的地址。
當(dāng)常用區(qū)地址為0的數(shù)據(jù)塊擦壽命第二次耗盡時(shí),會(huì)找到Ax0位 置。先查看第一個(gè)字節(jié),第一個(gè)字節(jié)的內(nèi)容已經(jīng)改寫(xiě),于是查看第二 個(gè)字節(jié)。擦替換控制單元通過(guò)FLASH接口單元在索引存儲(chǔ)單元的信 息里找到替換區(qū)已被替換的地址索引的最大值,然后將該最大值加1 的地址索引值寫(xiě)入Ax0的第二個(gè)字節(jié)。此后,當(dāng)系統(tǒng)訪問(wèn)常用區(qū)地 址為0的數(shù)據(jù)塊時(shí),系統(tǒng)邏輯地址訪問(wèn)的還是常用區(qū)地址為0的數(shù)據(jù) 塊,但其物理地址將訪問(wèn)Ax0中第二個(gè)字節(jié)所代表的替換區(qū)的地址。
這樣就實(shí)現(xiàn)了常用區(qū)壽命結(jié)束被替換區(qū)所替換的功能,其他數(shù)據(jù) 塊以此類推。圖4為本發(fā)明在系統(tǒng)中的應(yīng)用示例圖,系統(tǒng)中的Cpu通過(guò)本發(fā)明 控制電路訪問(wèn)NOR FLASH。 Cpu將地址和控制信號(hào)經(jīng)控制電路傳達(dá) 到NOR FLASH,并經(jīng)控制電路與NOR FLASH進(jìn)行數(shù)據(jù)交換。
權(quán)利要求
1、一種實(shí)現(xiàn)NOR FLASH壞塊管理的方法,將FLASH分為普通區(qū)、常用區(qū)和替換區(qū),其主要步驟為①系統(tǒng)上電時(shí),上電糾錯(cuò)單元檢查索引存儲(chǔ)單元信息,如有損壞,校驗(yàn)索引存儲(chǔ)單元的錯(cuò)誤信息并對(duì)其進(jìn)行糾正;②系統(tǒng)訪問(wèn)NOR FLASH普通區(qū)時(shí),如出現(xiàn)壞塊不做替換;當(dāng)系統(tǒng)擦常用區(qū)發(fā)現(xiàn)有壞塊時(shí),擦替換控制單元通過(guò)FLASH接口單元在索引存儲(chǔ)單元的信息里找到替換區(qū)已被替換的地址索引的最大值,然后改寫(xiě)索引存儲(chǔ)單元;③系統(tǒng)訪問(wèn)常用區(qū)壞塊地址時(shí),控制電路將通過(guò)索引存儲(chǔ)單元自動(dòng)找到替換區(qū)的替換數(shù)據(jù)塊。
2、 如權(quán)利要求1所述的實(shí)現(xiàn)NOR FLASH壞塊管理的方法,其 特征在于,所述索引存儲(chǔ)單元被分為Ax和Ay兩個(gè)存儲(chǔ)區(qū)域,存取 同樣的數(shù)據(jù);系統(tǒng)上電時(shí)依次掃描兩個(gè)存儲(chǔ)區(qū)域中對(duì)應(yīng)單元的值,如 果發(fā)現(xiàn)兩者的值不相等,則記錄此Ax和Ay單元的位置,待掃描完 Ax和Ay,找到了當(dāng)前已使用過(guò)的替換區(qū)的最大地址,再將該最大值 加1的地址索引值改寫(xiě)入相應(yīng)的Ax和Ay對(duì)應(yīng)單元達(dá)到糾錯(cuò)的目的。
3、 如權(quán)利要求1或2所述的實(shí)現(xiàn)NOR FLASH壞塊管理的方 法,其特征在于,所述索引存儲(chǔ)單元用一個(gè)或多個(gè)字節(jié),對(duì)應(yīng)一個(gè)常 用區(qū)的數(shù)據(jù)塊地址,每個(gè)字節(jié)存儲(chǔ)對(duì)應(yīng)常用區(qū)數(shù)據(jù)塊是否已被替換的 信息,以及對(duì)應(yīng)的替換區(qū)的地址信息。
4、 如權(quán)利要求3所述的實(shí)現(xiàn)NOR FLASH壞塊管理的方法, 其特征在于,所述替換區(qū)的數(shù)據(jù)塊邏輯地址對(duì)應(yīng)于索弓I存儲(chǔ)單元里的 數(shù)據(jù),替換區(qū)的物理地址為替換區(qū)基地址加上索引數(shù)據(jù)。
5、 如權(quán)利要求4所述的實(shí)現(xiàn)NOR FLASH芯片壞塊管理的方 法,其特征在于,所述索引存儲(chǔ)單元可以是FLASH的數(shù)據(jù)存儲(chǔ)單元 或OTP區(qū),也可以是其他在系統(tǒng)無(wú)電源時(shí)仍能保持存儲(chǔ)數(shù)據(jù)的非易 失性存儲(chǔ)器,如EEPROM。
6、 一種對(duì)如權(quán)利要求1所述的實(shí)現(xiàn)NOR FLASH壞塊管理方法 的控制電路,其特征在于,它包括分為普通區(qū)、常用區(qū)和替換區(qū)的 FLASH,普通區(qū)和常用區(qū)為系統(tǒng)總線可訪問(wèn)區(qū)域,普通區(qū)不可被替換, 常用區(qū)可通過(guò)替換區(qū)對(duì)壞塊的邏輯地址進(jìn)行替換,替換區(qū)為常用區(qū)的 替換備份區(qū);還包括控制FLASH擦替換的擦替換控制單元、系統(tǒng)上 電時(shí)用來(lái)檢查并校驗(yàn)寫(xiě)錯(cuò)誤的上電糾錯(cuò)單元、索引存儲(chǔ)單元以及控制 FLASH擦寫(xiě)時(shí)序的FLASH接口單元,所述擦替換控制單元、上電糾 錯(cuò)單元相互連接并分別與FLASH接口單元相互連接,F(xiàn)LASH接口單 元和索引存儲(chǔ)單元、FLASH相互連接。
7、 如權(quán)利要求6所述的控制電路,其特征在于,所述擦替換控 制單元包括擦寫(xiě)單元和回讀校驗(yàn)單元,擦寫(xiě)單元控制FLASH的寫(xiě)操 作和擦操作,回讀校驗(yàn)單元用于擦結(jié)束回讀校驗(yàn)。
8、 如權(quán)利要求6或7所述的控制電路,其特征在于,所述索引 存儲(chǔ)單元可以是FLASH的數(shù)據(jù)存儲(chǔ)單元或OTP區(qū),也可以是其他在 系統(tǒng)無(wú)電源時(shí)仍能保持存儲(chǔ)數(shù)據(jù)的非易失性存儲(chǔ)器,如EEPROM。
9、 如權(quán)利要求8所述的控制電路,其特征在于,所述索引存儲(chǔ)單元被分為Ax和Ay兩個(gè)存儲(chǔ)區(qū)域,存取同樣的數(shù)據(jù)。
全文摘要
一種實(shí)現(xiàn)NOR FLASH壞塊管理的方法及其控制電路,涉及FLASH閃存技術(shù)領(lǐng)域。本發(fā)明控制電路包括分為普通區(qū)、常用區(qū)和替換區(qū)的FLASH。普通區(qū)和常用區(qū)為系統(tǒng)總線可訪問(wèn)區(qū)域,普通區(qū)不可被替換。常用區(qū)可通過(guò)替換區(qū)對(duì)壞塊的邏輯地址進(jìn)行替換。替換區(qū)為常用區(qū)的替換備份區(qū)。本發(fā)明控制電路還包括控制FLASH擦替換的擦替換控制單元、系統(tǒng)上電時(shí)用來(lái)檢查并校驗(yàn)寫(xiě)錯(cuò)誤的上電糾錯(cuò)單元、索引存儲(chǔ)單元以及控制FLASH擦寫(xiě)時(shí)序的FLASH接口單元。同現(xiàn)有技術(shù)相比,本發(fā)明通過(guò)對(duì)FLASH進(jìn)行物理上的配置分區(qū),對(duì)壞塊進(jìn)行記錄和擦寫(xiě)替換以及上電糾錯(cuò),實(shí)現(xiàn)系統(tǒng)邏輯地址訪問(wèn)NOR FLASH時(shí),有不同擦寫(xiě)耐力。
文檔編號(hào)G11C29/00GK101425334SQ20071017650
公開(kāi)日2009年5月6日 申請(qǐng)日期2007年10月30日 優(yōu)先權(quán)日2007年10月30日
發(fā)明者瑛 喬, 亮 劉, 萍 宗, 磊 徐, 剛 李, 越 殷, 岡 陳, 震 陳, 鈞 黃 申請(qǐng)人:北京同方微電子有限公司