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