專利名稱:一種flash存儲(chǔ)器的擦寫(xiě)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲(chǔ)介質(zhì),更具體地說(shuō),涉及一種FLASH存儲(chǔ)器的擦寫(xiě)方法。
技術(shù)背景
FLASH存儲(chǔ)器是一種在EPROM和EEPROM的制造基礎(chǔ)上發(fā)展起來(lái)的一種可擦除、非 易失性存儲(chǔ)元件,具有速度塊、價(jià)格便宜的特點(diǎn),得到了越來(lái)越多的應(yīng)用。FLASH和EEPROM 都能斷電保存數(shù)據(jù),F(xiàn)LASH的數(shù)據(jù)擦除是以固定的區(qū)塊為單位進(jìn)行擦除的,區(qū)塊大小一般為 256KB到20MB,而EEPROM則可以按單個(gè)字節(jié)進(jìn)行擦寫(xiě)。因此,F(xiàn)LASH的更新的速度比EEPROM 要快,F(xiàn)LASH和EEPROM都有擦寫(xiě)次數(shù)的限制,但FLASH的擦寫(xiě)次數(shù)卻只有EEPROM的1/10 左右(在制作工藝等相當(dāng)?shù)那闆r下),如果頻繁地擦寫(xiě)FLASH存儲(chǔ)器的固定區(qū)域,就會(huì)使該 區(qū)域在較短的時(shí)間達(dá)到使用壽命,從而降低FLASH存儲(chǔ)器的使用壽命,所以在FLASH中保 存頻繁操作的數(shù)據(jù)時(shí)一般都采用寫(xiě)入多次擦除一次的方法,有效彌補(bǔ)了 FLASH擦寫(xiě)次數(shù)比 EEPROM少的缺點(diǎn)。同等大小,F(xiàn)LASH的存儲(chǔ)容量比EEPROM大,單個(gè)字的寫(xiě)入FLASH比EEPROM 快。FLASH常用來(lái)存儲(chǔ)程序和不發(fā)生改變的數(shù)據(jù),EEPROM常用來(lái)存儲(chǔ)用戶設(shè)置以及會(huì)發(fā)生 改變的數(shù)據(jù),一般情況下,F(xiàn)LASH和EEPROM同時(shí)存在,在PCB上占用的空間多、線路設(shè)計(jì)相對(duì) 復(fù)雜、成本高,因此,并不是對(duì)所有的需要保存程序代碼和用戶設(shè)置數(shù)據(jù)的情況都最優(yōu)化。發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題在于,針對(duì)現(xiàn)有技術(shù)的上述缺陷,提供一種對(duì)需要保存 程序代碼和用戶設(shè)置數(shù)據(jù)最優(yōu)化的FLASH存儲(chǔ)器擦寫(xiě)方法。
本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是構(gòu)造一種FLASH存儲(chǔ)器擦寫(xiě)方法, 包括,
Al.取FLASH存儲(chǔ)器相同容量的分塊NfdSSB^O ^ i < N,;
Bi.把&等分成11個(gè),編號(hào)分別為、,其中,0彡1<隊(duì)0彡]_<11,、用來(lái)存儲(chǔ) 一數(shù)據(jù)幀,所述數(shù)據(jù)幀包含8倍字節(jié)數(shù);
Cl. Bi的最后一個(gè)數(shù)據(jù)幀所在的為Bi的當(dāng)前塊,記為cu,N個(gè)Cu的j各不相 同;
Dl.判斷Cij的j是否等于M-I,若是,則轉(zhuǎn)El;若否則轉(zhuǎn)Fl;
El. Bi執(zhí)行擦除,Cij為biQ,轉(zhuǎn)步驟Gl ;
FLcij為bi(J+1);
Gl.往Cij內(nèi)寫(xiě)入數(shù)據(jù)幀;
Hl.判斷是否結(jié)束,若否,則轉(zhuǎn)步驟Dl。
在本發(fā)明所述的FLASH存儲(chǔ)器擦寫(xiě)方法中,所述N為2,分別為B” Bp
在本發(fā)明所述的FLASH存儲(chǔ)器擦寫(xiě)方法中,所述M為8。
在本發(fā)明所述的FLASH存儲(chǔ)器擦寫(xiě)方法中,在步驟Cl中,Btl的當(dāng)前塊為1 ,B1的 當(dāng)前塊為b
實(shí)施本發(fā)明的FLASH存儲(chǔ)器擦寫(xiě)方法,具有以下有益效果
1、用FLASH的N塊來(lái)存儲(chǔ)數(shù)據(jù),一是為了防止意外情況下數(shù)據(jù)丟失。例如在擦寫(xiě) FLASH時(shí)突然斷電,其余各塊的數(shù)據(jù)必然是保存完好,因此不會(huì)造成數(shù)據(jù)丟失;二是為了保 證數(shù)據(jù)的完整性,如果在擦寫(xiě)EEPROM過(guò)程中遇到突然斷電,由于EEPROM是按單個(gè)字節(jié)擦寫(xiě) 的,因此不能將所有要改變的數(shù)據(jù)改變,于是失去了數(shù)據(jù)的完整性,而用本發(fā)明的方法,在 擦寫(xiě)過(guò)程中突然斷電就不會(huì)破壞數(shù)據(jù)的完整性;
2、數(shù)據(jù)寫(xiě)入Bi (0彡i < N)時(shí)是錯(cuò)開(kāi)寫(xiě)入,因此Bi (0彡i < N)寫(xiě)滿的時(shí)刻并不一 致,擦除操作也是錯(cuò)開(kāi)進(jìn)行的,這樣避免了 BiO) < i < N)的擦除在同一次寫(xiě)入中進(jìn)行而影 響速度;
3、此方法保留了 FLASH存儲(chǔ)器的單個(gè)字節(jié)寫(xiě)入方法,因此速度要比EEPROM的單個(gè) 字節(jié)寫(xiě)入快;
基于上述優(yōu)點(diǎn),在線路設(shè)計(jì)時(shí),可以去掉線路中的EEPR0M,既節(jié)省了 PCB的空間, 又節(jié)省了成本,優(yōu)化了所有需要同時(shí)保存程序代碼和用戶設(shè)置數(shù)據(jù)的情況。
下面將結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,附圖中
圖1是本發(fā)明FLASH存儲(chǔ)器的擦寫(xiě)方法的流程圖2A是本發(fā)明FLASH存儲(chǔ)器擦寫(xiě)方法中數(shù)據(jù)幀被寫(xiě)入前的FLASH存儲(chǔ)器的示意 圖2B是本發(fā)明FLASH存儲(chǔ)器擦寫(xiě)方法中第1個(gè)數(shù)據(jù)幀被寫(xiě)入后的FLASH存儲(chǔ)器 的示意圖2C是本發(fā)明FLASH存儲(chǔ)器擦寫(xiě)方法中第7個(gè)數(shù)據(jù)幀被寫(xiě)入后的FLASH存儲(chǔ)器 的示意圖2D是本發(fā)明FLASH存儲(chǔ)器擦寫(xiě)方法中第8個(gè)數(shù)據(jù)幀被寫(xiě)入后的FLASH存儲(chǔ)器 的示意圖2E是本發(fā)明FLASH存儲(chǔ)器擦寫(xiě)方法中第9個(gè)數(shù)據(jù)幀被寫(xiě)入后的FLASH存儲(chǔ)器 的示意圖。
具體實(shí)施方式
如圖1所示,在本發(fā)明的FLASH存儲(chǔ)器的擦寫(xiě)方法中,該方法包括以下步驟
S101.取FLASH存儲(chǔ)器相同容量的分塊N個(gè),記為BiOXi <N),之所以取相等容 量的塊,是因?yàn)樵谙旅娌襟E中錯(cuò)開(kāi)寫(xiě)入數(shù)據(jù)幀時(shí),保證Bi (0 ^ i <N)永遠(yuǎn)不會(huì)同時(shí)寫(xiě)滿;
S102.把&等分成1個(gè),編號(hào)分別為、(0彡1<隊(duì)0彡」<10,、用來(lái)存儲(chǔ)一 數(shù)據(jù)幀,所述數(shù)據(jù)幀包含8倍字節(jié)數(shù);
S103. Bi的最后一個(gè)數(shù)據(jù)幀所在的為Bi的當(dāng)前塊,記為Cij,N個(gè)Cij的j各不相 同;
S104.判斷Cij的j是否等于M-I,若是,則轉(zhuǎn)步驟S105 ;若否則轉(zhuǎn)步驟S106 ;
S105. Bi執(zhí)行擦除,Cij為bi(1,然后轉(zhuǎn)步驟S107 ;
S106.Cij*bi(j+1);
S107.往Cij內(nèi)寫(xiě)入數(shù)據(jù)幀;
S108.判斷是否結(jié)束,若是,則結(jié)束FLASH存儲(chǔ)器的操作;若否,則轉(zhuǎn)步驟S104。
圖2A至圖2E是本發(fā)明FLASH存儲(chǔ)器擦寫(xiě)方法實(shí)施例一的示意圖。
圖2A是本發(fā)明FLASH存儲(chǔ)器擦寫(xiě)方法中數(shù)據(jù)幀被寫(xiě)入前的FLASH存儲(chǔ)器的示意 圖,取FLASH存儲(chǔ)器的相等容量的分塊2塊,分別為B。B1,設(shè)容量為64Kbyte,Bi等分成8 塊,記為、(0彡i < 2,0彡j < 8),每個(gè)存儲(chǔ)一個(gè)數(shù)據(jù)幀,每個(gè)數(shù)據(jù)幀為8KBye。
圖2B是本發(fā)明FLASH存儲(chǔ)器擦寫(xiě)方法中第1個(gè)數(shù)據(jù)幀被寫(xiě)入后的FLASH存儲(chǔ)器 的示意圖,當(dāng)?shù)谝粋€(gè)數(shù)據(jù)幀D1 (大小8Kbyte)到來(lái)時(shí),在FLASH存儲(chǔ)器中進(jìn)行第一次寫(xiě)入, 將D1寫(xiě)在b00和bn,即B0, B1錯(cuò)開(kāi)寫(xiě)入。
圖2C是本發(fā)明FLASH存儲(chǔ)器擦寫(xiě)方法中第7個(gè)數(shù)據(jù)幀被寫(xiě)入后的FLASH存儲(chǔ)器 的示意圖,當(dāng)數(shù)據(jù)幀D^2《k彡7)到來(lái)時(shí),寫(xiě)入、、1^+1)中(1彡k彡6)。
圖2D是本發(fā)明FLASH存儲(chǔ)器擦寫(xiě)方法中第8個(gè)數(shù)據(jù)幀被寫(xiě)入后的FLASH存儲(chǔ)器 的示意圖,當(dāng)數(shù)據(jù)幀D8到來(lái)時(shí),開(kāi)始進(jìn)行寫(xiě)入,對(duì)于Btl,直接寫(xiě)入bOT,對(duì)于B1,此時(shí)判斷b17已 經(jīng)寫(xiě)入了 D7,即B1已經(jīng)寫(xiě)滿,因此將B1擦除,再把D8寫(xiě)入b1Q。
圖2E是本發(fā)明FLASH存儲(chǔ)器擦寫(xiě)方法中第9個(gè)數(shù)據(jù)幀被寫(xiě)入后的FLASH存儲(chǔ)器 的示意圖,當(dāng)數(shù)據(jù)幀D9到來(lái)時(shí),開(kāi)始進(jìn)行寫(xiě)入,對(duì)于B1,直接寫(xiě)入bn,對(duì)于Btl,此時(shí)判斷‘已 經(jīng)寫(xiě)入了 D8,即Btl已經(jīng)寫(xiě)滿,因此將Btl擦除,再把D9寫(xiě)入b。。。
綜合圖2A至圖2E,當(dāng)一個(gè)新的數(shù)據(jù)幀到來(lái)時(shí),同時(shí)寫(xiě)入Bc^B1,Bi寫(xiě)滿時(shí)再進(jìn)行擦 除操作,而且數(shù)據(jù)幀在被寫(xiě)入B。B1時(shí)是錯(cuò)開(kāi)的,即Bp B1是不同時(shí)被寫(xiě)滿的,因此B。B1的 擦除時(shí)刻也不一致,這樣,就可以防止意外情況下數(shù)據(jù)丟失,而且保證了數(shù)據(jù)的完整性。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技 術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修 改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的權(quán)利要求范圍之內(nèi)。
權(quán)利要求
1.一種FLASH存儲(chǔ)器擦寫(xiě)方法,其特征在于,Al.取FLASH存儲(chǔ)器相同容量的分塊N個(gè),記為Bi, 0 ^ i <N; Bi.把&等分成M個(gè),編號(hào)分別為,其中,0彡i <N,0< j <M,用來(lái)存儲(chǔ)一數(shù) 據(jù)幀,所述數(shù)據(jù)幀包含8倍字節(jié)數(shù);Cl. Bi的最后一個(gè)數(shù)據(jù)幀所在的為Bi的當(dāng)前塊,記為cu,N個(gè)的j各不相同;Dl.判斷Cij的j是否等于M-I,若是,則轉(zhuǎn)El ;若否則轉(zhuǎn)Fl ;El. Bi執(zhí)行擦除,Cij為biQ,轉(zhuǎn)步驟Gl ;Fl. Cij 為 bi(J+1);Gl.往Cij內(nèi)寫(xiě)入數(shù)據(jù)幀;Hl.判斷是否結(jié)束,若否,則轉(zhuǎn)步驟D1。
2.根據(jù)權(quán)利要求1所述的FLASH存儲(chǔ)器擦寫(xiě)方法,其特征在于,所述N為2,分別為BpB1 ο
3.根據(jù)權(quán)利要求2所述的FLASH存儲(chǔ)器擦寫(xiě)方法,其特征在于,所述M為8。
4.根據(jù)權(quán)利要求3所述的FLASH存儲(chǔ)器擦寫(xiě)方法,其特征在于,在步驟Cl中,B0的當(dāng) 前塊為b0J,B1的當(dāng)前塊為b1((J+1)%iS或131((」+7)%0。
全文摘要
本發(fā)明涉及一種FLASH存儲(chǔ)器的擦寫(xiě)方法,該方法包括A1.取FLASH存儲(chǔ)器相同容量的分塊N個(gè),記為Bi(0≤i<N);B1.把Bi等分成M個(gè),編號(hào)分別為bij(0≤i<N,0≤j<M),bij用來(lái)存儲(chǔ)一數(shù)據(jù)幀;C1.Bi的最后一個(gè)數(shù)據(jù)幀所在的bij為Bi的當(dāng)前塊,記為cij,N個(gè)cij的j各不相同;D1.判斷cij的j是否等于M-1,若是,則轉(zhuǎn)E1;若否則轉(zhuǎn)F1;E1.Bi執(zhí)行擦除,cij為bi0,轉(zhuǎn)步驟G1;F1.cij為bi(j+1);G1.往cij內(nèi)寫(xiě)入數(shù)據(jù)幀;H1.判斷是否結(jié)束,若否,則轉(zhuǎn)步驟D1。實(shí)施本發(fā)明的技術(shù)方案,優(yōu)化了所有需要同時(shí)保存程序代碼和用戶設(shè)置數(shù)據(jù)的情況。
文檔編號(hào)G06F12/06GK102033813SQ20091019028
公開(kāi)日2011年4月27日 申請(qǐng)日期2009年9月24日 優(yōu)先權(quán)日2009年9月24日
發(fā)明者鄭巧紅, 陳恒, 饒麗光 申請(qǐng)人:深圳市九洲電器有限公司