專利名稱:一種flash存儲(chǔ)器的數(shù)據(jù)擦寫方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種FLASH存儲(chǔ)器的數(shù)據(jù)擦寫方法。
背景技術(shù):
FLASH存儲(chǔ)器是一種半導(dǎo)體存儲(chǔ)器,具有集成度高、讀取速度快、單一供電、再編程次數(shù)多等顯著優(yōu)點(diǎn)。FLASH存儲(chǔ)器作為非易失數(shù)據(jù)存儲(chǔ)設(shè)備,被廣泛地應(yīng)用于嵌入式系統(tǒng)中。單片機(jī)內(nèi)的FLASH可以在線編程,也可以存儲(chǔ)程序運(yùn)行時(shí)的數(shù)據(jù),但修改FLASH中的數(shù)據(jù)時(shí)需要先進(jìn)行擦除,即修改一個(gè)字節(jié)的數(shù)據(jù)也要先擦除這個(gè)字節(jié)所在扇區(qū)的全部數(shù)據(jù), 然后再寫入數(shù)據(jù)。傳統(tǒng)的數(shù)據(jù)寫入方法采用如下的過程1.先將整個(gè)扇區(qū)的數(shù)據(jù)讀出到緩存中;2。在緩存中修改數(shù)據(jù);3.擦除扇區(qū),將緩存中修改后的數(shù)據(jù)寫回該扇區(qū)內(nèi)。這種傳統(tǒng)的方法存在以下不足每改動(dòng)扇區(qū)中的一個(gè)字節(jié)都要擦除整個(gè)扇區(qū)的數(shù)據(jù),而某些數(shù)據(jù)需要頻繁修改,該數(shù)據(jù)所在的扇區(qū)會(huì)被頻繁擦除。由此可知傳統(tǒng)的FLASH寫入方法需要頻繁的擦除數(shù)據(jù),但是FLASH的擦除次數(shù)是有限的,使用傳統(tǒng)方法進(jìn)行上數(shù)據(jù)的寫入和修改會(huì)大大降低FLASH的使用壽命。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種FLASH存儲(chǔ)器的數(shù)據(jù)擦寫方法,有效降低FLASH存儲(chǔ)器的擦除次數(shù),延長FLASH存儲(chǔ)器的使用壽命。本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)的。一種FLASH存儲(chǔ)器的數(shù)據(jù)擦寫方法,包括
在需要向扇區(qū)中寫入數(shù)據(jù)時(shí),首先判斷該扇區(qū)的剩余空間是否足夠存放當(dāng)前待寫入的數(shù)據(jù),若足夠,則將數(shù)據(jù)直接寫入該扇區(qū)的空閑空間;若不夠,則擦除該扇區(qū)后再寫入數(shù)據(jù); 寫入完成后記錄本次寫入數(shù)據(jù)的起始及結(jié)束地址信息,并更新有效數(shù)據(jù)地址信息為本次寫入數(shù)據(jù)的首地址。優(yōu)選地,上述方法中,在每次向扇區(qū)中寫入數(shù)據(jù)的過程中,將數(shù)據(jù)順序?qū)懭肷葏^(qū)的空閑空間的最低地址。優(yōu)選地,判斷扇區(qū)的剩余空間是否足夠存放當(dāng)前待寫入的數(shù)據(jù)的方法為讀取上次寫入數(shù)據(jù)的地址信息記錄,將扇區(qū)的結(jié)束地址減去上次寫入數(shù)據(jù)的結(jié)束地址得到扇區(qū)的剩余空間大小,比較剩余空間和當(dāng)前待寫入的數(shù)據(jù)的大小,若前者大于后者,則認(rèn)定剩余空間足夠存放當(dāng)前待寫入的數(shù)據(jù),否則不夠存放當(dāng)前待寫入的數(shù)據(jù)。優(yōu)選地,上述方法中,在判斷出扇區(qū)的剩余空間足夠存放當(dāng)前待寫入數(shù)據(jù)時(shí),讀取上次寫入數(shù)據(jù)的地址信息記錄,以上次寫入數(shù)據(jù)的結(jié)束地址的下一字節(jié)開始寫入當(dāng)前待寫入數(shù)據(jù)。優(yōu)選地,上述方法還包括在第一次寫入數(shù)據(jù)時(shí),擦除整個(gè)扇區(qū),從該扇區(qū)的起始位置開始寫入。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例具有以下有益效果本發(fā)明在扇區(qū)中順序?qū)懭霐?shù)據(jù),以最后一次寫入數(shù)據(jù)的地址為有效數(shù)據(jù)地址,而在扇區(qū)中剩余空間不足夠?qū)懭霐?shù)據(jù)時(shí)才擦除整個(gè)扇區(qū)并從其初始位置開始寫入,這樣明顯大大減少了扇區(qū)的擦除次數(shù),不僅提高了效率,而且延長了 FLASH存儲(chǔ)器的使用壽命。
圖1是本發(fā)明實(shí)施例中FLASH存儲(chǔ)器的數(shù)據(jù)擦寫方法流程。圖2是本發(fā)明實(shí)施例中扇區(qū)中數(shù)據(jù)的存放布局。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。請參閱圖1所示,本實(shí)施例中FLASH存儲(chǔ)器的數(shù)據(jù)擦寫方法包括以下步驟。101、在需要寫入更新扇區(qū)中的信息時(shí),判斷上一次存放數(shù)據(jù)的記錄是否存在,若存在,則執(zhí)行步驟102 ;若不存在,則執(zhí)行步驟103。102、由于是第一次寫入數(shù)據(jù),按照普通流程,擦除整個(gè)扇區(qū),并從該扇區(qū)的起始位置開始寫入數(shù)據(jù),記錄本次寫入數(shù)據(jù)的起始地址和結(jié)束地址,并更新有效數(shù)據(jù)地址信息為本次寫入數(shù)據(jù)的首地址。103、讀取上次寫入數(shù)據(jù)的地址信息記錄,據(jù)此計(jì)算當(dāng)前扇區(qū)中的剩余空間。計(jì)算方法為將扇區(qū)的結(jié)束地址減去上次寫入數(shù)據(jù)的結(jié)束地址記得到當(dāng)前扇區(qū)的剩余空間大小。104、判斷剩余空間是否足夠存放本次要寫入的數(shù)據(jù),若足夠,則執(zhí)行步驟105 ;若不夠,則執(zhí)行步驟106。105、以上次寫入數(shù)據(jù)的結(jié)束地址的下一字節(jié)為起始位置開始寫入本次要寫入的數(shù)據(jù),記錄本次寫入數(shù)據(jù)的起始地址和結(jié)束地址信息,并更新有效數(shù)據(jù)地址信息為本次寫入數(shù)據(jù)的首地址。106、擦除整個(gè)扇區(qū),從該扇區(qū)的開始位置寫入數(shù)據(jù),寫入完成之后記錄本次寫入數(shù)據(jù)的起始地址和結(jié)束地址信息,并更新有效數(shù)據(jù)地址信息為本次寫入數(shù)據(jù)的首地址。107、等待下一次寫入數(shù)據(jù)時(shí),返回步驟101。請參閱圖2所示,該圖示出了本實(shí)施例中在FLASH存儲(chǔ)器中的一個(gè)扇區(qū)sector中的數(shù)據(jù)存放布局,其中,recordl、record2、…、last record是依次寫入的數(shù)據(jù),其中,last record是最后一次寫入的數(shù)據(jù),其數(shù)據(jù)地址即為有效數(shù)據(jù)地址。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種FLASH存儲(chǔ)器的數(shù)據(jù)擦寫方法,其特征在于,該方法包括在需要向扇區(qū)中寫入數(shù)據(jù)時(shí),首先判斷該扇區(qū)的剩余空間是否足夠存放當(dāng)前待寫入的數(shù)據(jù),若足夠,則將數(shù)據(jù)直接寫入該扇區(qū)的空閑空間;若不夠,則擦除該扇區(qū)后再寫入數(shù)據(jù); 寫入完成后記錄本次寫入數(shù)據(jù)的起始及結(jié)束地址信息,并更新有效數(shù)據(jù)地址信息為本次寫入數(shù)據(jù)的首地址。
2.如權(quán)利要求1所述的FLASH存儲(chǔ)器的數(shù)據(jù)擦寫方法,其特征在于,該方法中,在每次向扇區(qū)中寫入數(shù)據(jù)的過程中,將數(shù)據(jù)順序?qū)懭肷葏^(qū)的空閑空間的最低地址。
3.如權(quán)利要求2所述的FLASH存儲(chǔ)器的數(shù)據(jù)擦寫方法,其特征在于,判斷扇區(qū)的剩余空間是否足夠存放當(dāng)前待寫入的數(shù)據(jù)的方法為讀取上次寫入數(shù)據(jù)的地址信息記錄,將扇區(qū)的結(jié)束地址減去上次寫入數(shù)據(jù)的結(jié)束地址得到扇區(qū)的剩余空間大小,比較剩余空間和當(dāng)前待寫入的數(shù)據(jù)的大小,若前者大于后者,則認(rèn)定剩余空間足夠存放當(dāng)前待寫入的數(shù)據(jù),否則不夠存放當(dāng)前待寫入的數(shù)據(jù)。
4.如權(quán)利要求2所述的FLASH存儲(chǔ)器的數(shù)據(jù)擦寫方法,其特征在于,該方法中,在判斷出扇區(qū)的剩余空間足夠存放當(dāng)前待寫入數(shù)據(jù)時(shí),讀取上次寫入數(shù)據(jù)的地址信息記錄,以上次寫入數(shù)據(jù)的結(jié)束地址的下一字節(jié)開始寫入當(dāng)前待寫入數(shù)據(jù)。
5.如權(quán)利要求1至4任一所述的FLASH存儲(chǔ)器的數(shù)據(jù)擦寫方法,其特征在于,該方法還包括在第一次寫入數(shù)據(jù)時(shí),擦除整個(gè)扇區(qū),從該扇區(qū)的起始位置開始寫入。
全文摘要
本發(fā)明提供了一種FLASH存儲(chǔ)器的數(shù)據(jù)擦寫方法,該方法包括在需要向扇區(qū)中寫入數(shù)據(jù)時(shí),首先判斷該扇區(qū)的剩余空間是否足夠存放當(dāng)前待寫入的數(shù)據(jù),若足夠,則將數(shù)據(jù)直接寫入該扇區(qū)空閑空間的最低地址;若不夠,則擦除該扇區(qū)后再寫入數(shù)據(jù)到該扇區(qū)的最低地址;寫入完成后記錄本次寫入數(shù)據(jù)的開始及結(jié)束地址信息,并更新有效數(shù)據(jù)地址信息為本次寫入數(shù)據(jù)的首地址。本發(fā)明在扇區(qū)中順序?qū)懭霐?shù)據(jù),以最后一次寫入數(shù)據(jù)的首地址為有效數(shù)據(jù)首地址,而在扇區(qū)中剩余空間不足夠?qū)懭霐?shù)據(jù)時(shí)才擦除整個(gè)扇區(qū)并從其初始位置開始寫入,這樣明顯大大減少了扇區(qū)的擦除次數(shù),不僅提高了效率,而且延長了FLASH存儲(chǔ)器的使用壽命。
文檔編號(hào)G06F12/02GK102306125SQ201110235360
公開日2012年1月4日 申請日期2011年8月17日 優(yōu)先權(quán)日2011年8月17日
發(fā)明者汪瀾, 王志波, 閆瑞軒 申請人:深圳市共進(jìn)電子股份有限公司