CN112466371B - 一种循环利用闪存模拟字节擦除功能的方法 - Google Patents

一种循环利用闪存模拟字节擦除功能的方法 Download PDF

Info

Publication number
CN112466371B
CN112466371B CN202011494274.2A CN202011494274A CN112466371B CN 112466371 B CN112466371 B CN 112466371B CN 202011494274 A CN202011494274 A CN 202011494274A CN 112466371 B CN112466371 B CN 112466371B
Authority
CN
China
Prior art keywords
data
state
block
valid
storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011494274.2A
Other languages
English (en)
Other versions
CN112466371A (zh
Inventor
陶芳芳
朱俊
王祥
刘金行
金军
郑鸿云
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ningbo Tuopu Group Co Ltd
Original Assignee
Ningbo Tuopu Group Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ningbo Tuopu Group Co Ltd filed Critical Ningbo Tuopu Group Co Ltd
Priority to CN202011494274.2A priority Critical patent/CN112466371B/zh
Publication of CN112466371A publication Critical patent/CN112466371A/zh
Application granted granted Critical
Publication of CN112466371B publication Critical patent/CN112466371B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically

Abstract

本发明涉及一种循环利用闪存模拟字节擦除功能的方法,包括以下步骤:将闪存分为若干存储区块,每个存储区块包括:用于存储模拟字节擦除功能的状态信息的状态存储区域和用于存储数据的数据存储区域;将状态机状态分为稳定状态和不稳定状态,在稳定状态下,按照存储区块的顺序向模拟字节擦除功能中写入数据并标记当前存储区块的工作状态;在不稳定状态下,将上一个有效的存储区块中所有有效的数据进行复制搬移到下一个有效的存储区块中,同时擦除上一个存储区块中所有的数据,等待下一次写数据的过程。本发明能够在最大程度上保证数据存储的灵活性并有效延长flash的擦写寿命。

Description

一种循环利用闪存模拟字节擦除功能的方法
技术领域
本发明涉及嵌入式系统技术领域,特别是涉及一种循环利用闪存模拟字节擦除功能的方法。
背景技术
目前已知的字节擦除存储器是EEPROM,闪存(简称flash)可以按字节写入,但必须按block擦除,因此,单flash往往无法实现对单字节或多字节的更新操作。目前常用的单字节存储方式有下面3种:
一种是使用MCU内部自带EEPROM,实现字节擦除功能,通过对片内EEPROM划分区域,数据按照区域存储,某个数据需要更新时,将新数据写入该数据对应的区域;
一种是使用片外EEPROM芯片,将片外字节擦除功能划分区域,数据按照预驱存储,某个数据需要更新时,通过通讯总线与片外字节擦除功能芯片通过,将新数据写入片外对应区域;
一种是使用MCU片上DFlash,每个扇区存储一种数据,某个数据更新时,先将这个数据对应的扇区擦除,然后新数据写入该扇区。
以上三种技术存在的问题是:前两种存储方法为真实EEPROM存储法,成本依赖于EEPROM大小,当EEPROM空间较大时,成本也随之增大;并且第二种方案需要外部EEPROM芯片,硬件电路复杂,并且需要通讯总线与EEPROM芯片通讯,软件程序也随之复杂;第三种方法数据存储数据种类依赖于DFlash扇区数量,当扇区数量较少时,无法满足数据种类较多的场合,并且数据更新一次数据就需要擦除整个扇区,当数据更新频繁时,DFlash擦除寿命快速减少,可靠性较差。
发明内容
本发明所要解决的技术问题是提供一种循环利用闪存模拟字节擦除功能的方法,在最大程度上保证数据存储的灵活性并有效延长flash的擦写寿命。
本发明解决其技术问题所采用的技术方案是:提供一种循环利用闪存模拟字节擦除功能的方法,包括以下步骤:
(1)将闪存分为若干存储区块,每个存储区块包括:用于存储模拟字节擦除功能的状态信息的状态存储区域和用于存储数据的数据存储区域;
(2)将状态机状态分为稳定状态和不稳定状态,在稳定状态下,按照存储区块的顺序向模拟字节擦除功能中写入数据并标记当前存储区块的工作状态;在不稳定状态下,将上一个有效的存储区块中所有有效的数据进行复制搬移到下一个有效的存储区块中,同时擦除上一个存储区块中所有的数据,等待下一次写数据的过程。
所述步骤(1)中模拟字节擦除功能的状态信息包括:Active,用于反映存储区块是否处于工作状态;EraseCycle,用于反映存储区块是否处于擦除状态;Dead,用于反映存储区块是否已经损坏;CopyDone,用于反映存储区块是否完成数据搬移。
所述有效数据复制搬移到下一个有效的存储区块中时有效数据的ID不变。
在上一个有效的存储区块中查找有效数据时只取当前有效的存储区块和下一个有效的存储区块中没有的ID的数据块以确保被转移的永远都是存储的最新值。
所述步骤(2)中若处于不稳定状态下发生异常下电,在下一次上电时工作在不稳定状态。
当有效数据的ID有更新需求时,在有效的存储区块中找到最近的空白区域,新建一个数据块并存储其ID和实际数据,此时该数据块就成为该ID有效数据存储在存储区块中的最新数据。
有益效果
由于采用了上述的技术方案,本发明与现有技术相比,具有以下的优点和积极效果:本发明可以在系统没有真实EEPROM时仍然可以实现字节擦写功能,通过若干个存储区块(简称block)的空间循环存储数据,可以在最大程度上保证数据存储的灵活性并有效延长flash的擦写寿命,由于没有用到真实EEPROM,也降低了系统的成本。
附图说明
图1是本发明的block的数据格式示意图;
图2是本发明在工作时的状态机流程示意图。
具体实施方式
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
本发明的实施方式涉及一种循环利用闪存模拟字节擦除功能的方法,包括其block的数据格式设计(见图1)以及其状态机设计(见图2)。所述flash可以是任意的flash存储空间。在本实施方式中设定的用于模拟字节擦除功能的flash内存为64Kbyte,分别分为16Kbyte,16Kbyte,32Kbyte作为block0,block1和block2。所述block的数据格式,是对于每个block而言,模拟字节擦除功能中的每个block的前4个32个字节都分别用于存储模拟字节擦除功能的状态信息,从第5个32字节开始,开始存储实际写入的数据。所述状态机流程是模拟字节擦除功能在写数据过程中的具体流程,也是本设计的核心所在,状态机流程中的所有状态包括stable states(稳定状态)和unstable states(不稳定状态)都属于模拟字节擦除功能工作时处于的正常状态。
本实施方式中block的状态信息分别为Active,EraseCycle,Dead和CopyDone,分别反映当前block的工作状态,擦除状态,是否坏死及搬移状态,设计者可根据实际需要进行设置。对于接下来的数据的存储,在本实施方式针对每一个数据都设置了四个字节的flag(用于判断数据是否有效),两个字节的id(用于标记相同用途的数据),两个字节的size(用于表示数据的长度),以上即本实施方式中设定的在模拟字节擦除功能中数据的存储方式。
以下说明状态机流程的具体思路。如图2所示,由状态I开始,状态I时,所有block均处于擦除状态,即当前模拟字节擦除功能中没有数据;按照顺序(block0至block1)向模拟字节擦除功能中写入数据并标记当前block工作状态,此过程表现为状态E至状态S0,当正在工作的两个bock(例如block0和block1)中的剩余空间不足以存入下一个数据时,开始进入swap过程,即将最先开始工作的block(例如block0)中的数据搬移至未处于工作状态的block(例如block2),搬移成功后将原block(例如block0)中的数据擦除,这个过程表现为状态A至状态D,最后重新回到下一个稳定状态(例如状态S2)。接下来的操作流程都是同一思路,在三个block中实现数据的转移,由稳定状态到不稳定状态最终回到稳定状态。需要注意的是,如果正常工作没有发生异常下电就会转移到下一个稳定状态;如果在不稳定状态时发生异常掉电,会使流程卡死在不稳定状态,可根据实际需要进行处理例如可增加上电检测等操作,使得在下一次上电时处于不稳定状态。
本实施方式中,所述swap转移过程即将上一个有效的(工作的)block中所有有效的数据进行复制搬移到下一个有效的block中,同时擦除上一个block中所有的数据,等待下一次写数据的过程。注意:在上一个有效的(工作的)block中查找有效数据时只取当前有效的(工作的)block和下一个有效的(工作的)block中没有的ID的数据块,这可以保证被swap的永远都是存储的最新值。
由于每一个有效数据都会被分配一个数据ID,有效数据在搬移至新block中时ID不变,这样,通过循环查询block的状态并且找到排列在最后的有效数据块ID,就可以读出存储在三个block中的最新的目标数据。该有效数据ID有更新需求时,只需要在active的block中找到最近的空白区域,新建一个数据块并存储其ID和实际数据,此时该数据块就成为该ID数据存储在block中的最新数据。
数据不断更新会造成active的block的剩余空间越用越小,当小到一定程度后,就执行一个swap动作,将active的block存储的最新数据搬至下一个已经准备好的EraseCycle状态block,原来active的block会被擦除后重新标记为EraseCycle状态,如此循环往复,对于这套机制的用户而言,只需要记住一个数据ID和其长度,然后就可以不断更新存储和读取它,flash的block擦除、数据搬移以及擦除好的block进行重新标记,都在本实施方式中自动完成。
不难发现,本实施方式通过循环利用flash空间,实现了数据单字节下或多字节的擦写效果,在保证了数据存储灵活性的同时,由于flash block每次都是全部用完后再擦除,其对个体ID数据的实际擦写寿命远大于flash本身的擦写寿命。

Claims (5)

1.一种循环利用闪存模拟字节擦除功能的方法,其特征在于,包括以下步骤:
(1)将闪存分为若干存储区块,每个存储区块包括:用于存储模拟字节擦除功能的状态信息的状态存储区域和用于存储数据的数据存储区域;
(2)将状态机状态分为稳定状态和不稳定状态,在稳定状态下,按照存储区块的顺序向模拟字节擦除功能中写入数据并标记当前存储区块的工作状态;在不稳定状态下,将上一个有效的存储区块中所有有效的数据进行复制搬移到下一个有效的存储区块中,同时擦除上一个存储区块中所有的数据,等待下一次写数据的过程;
当有效数据的ID有更新需求时,在有效的存储区块中找到最近的空白区域,新建一个数据块并存储其ID和实际数据,此时该数据块就成为该ID有效数据存储在存储区块中的最新数据。
2.根据权利要求1所述的循环利用闪存模拟字节擦除功能的方法,其特征在于,所述步骤(1)中模拟字节擦除功能的状态信息包括:Active,用于反映存储区块是否处于工作状态;EraseCycle,用于反映存储区块是否处于擦除状态;Dead,用于反映存储区块是否已经损坏;CopyDone,用于反映存储区块是否完成数据搬移。
3.根据权利要求1所述的循环利用闪存模拟字节擦除功能的方法,其特征在于,所述有效数据复制搬移到下一个有效的存储区块中时有效数据的ID不变。
4.根据权利要求1所述的循环利用闪存模拟字节擦除功能的方法,其特征在于,在上一个有效的存储区块中查找有效数据时只取当前有效的存储区块和下一个有效的存储区块中没有的ID的数据块以确保被转移的永远都是存储的最新值。
5.根据权利要求1所述的循环利用闪存模拟字节擦除功能的方法,其特征在于,所述步骤(2)中若处于不稳定状态下发生异常下电,在下一次上电时工作在不稳定状态。
CN202011494274.2A 2020-12-17 2020-12-17 一种循环利用闪存模拟字节擦除功能的方法 Active CN112466371B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011494274.2A CN112466371B (zh) 2020-12-17 2020-12-17 一种循环利用闪存模拟字节擦除功能的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011494274.2A CN112466371B (zh) 2020-12-17 2020-12-17 一种循环利用闪存模拟字节擦除功能的方法

Publications (2)

Publication Number Publication Date
CN112466371A CN112466371A (zh) 2021-03-09
CN112466371B true CN112466371B (zh) 2022-09-09

Family

ID=74802899

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011494274.2A Active CN112466371B (zh) 2020-12-17 2020-12-17 一种循环利用闪存模拟字节擦除功能的方法

Country Status (1)

Country Link
CN (1) CN112466371B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117707434A (zh) * 2024-02-02 2024-03-15 深圳曦华科技有限公司 一种Flash的数据写入方法、装置、车辆以及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933845A (en) * 1994-09-30 1999-08-03 Alcatel Sel Aktiengesellschaft Flash memory management method including shifting or copying data to other blocks to optimize storage space and allow entire blocks to be erased
JP2010231416A (ja) * 2009-03-26 2010-10-14 Denso Corp フラッシュメモリのデータ処理方法及び記憶装置
CN101923516A (zh) * 2009-05-15 2010-12-22 旺宏电子股份有限公司 以区块为基础的快闪存储装置及其操作方法
CN102521146A (zh) * 2011-11-08 2012-06-27 福建新大陆通信科技股份有限公司 一种flash存储器块细分的数据寻址存储方法
CN107256197A (zh) * 2017-05-18 2017-10-17 深圳市晟碟半导体有限公司 一种数据存储方法、存储装置及智能终端
CN109753443A (zh) * 2019-01-12 2019-05-14 湖南国科微电子股份有限公司 一种数据处理方法、装置及电子设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933845A (en) * 1994-09-30 1999-08-03 Alcatel Sel Aktiengesellschaft Flash memory management method including shifting or copying data to other blocks to optimize storage space and allow entire blocks to be erased
JP2010231416A (ja) * 2009-03-26 2010-10-14 Denso Corp フラッシュメモリのデータ処理方法及び記憶装置
CN101923516A (zh) * 2009-05-15 2010-12-22 旺宏电子股份有限公司 以区块为基础的快闪存储装置及其操作方法
CN102521146A (zh) * 2011-11-08 2012-06-27 福建新大陆通信科技股份有限公司 一种flash存储器块细分的数据寻址存储方法
CN107256197A (zh) * 2017-05-18 2017-10-17 深圳市晟碟半导体有限公司 一种数据存储方法、存储装置及智能终端
CN109753443A (zh) * 2019-01-12 2019-05-14 湖南国科微电子股份有限公司 一种数据处理方法、装置及电子设备

Also Published As

Publication number Publication date
CN112466371A (zh) 2021-03-09

Similar Documents

Publication Publication Date Title
CN103914393B (zh) 一种基于mcu的flash不丢失更新存储方法
TWI457940B (zh) 區塊為基礎快閃記憶體之位元組存取
CN101673226B (zh) Nand错误管理
US6327639B1 (en) Method and apparatus for storing location identification information within non-volatile memory devices
US7461198B2 (en) System and method for configuration and management of flash memory
JP3708047B2 (ja) フラッシュメモリの管理方法
CN110998550B (zh) 存储器寻址
JP2007280428A (ja) メモリ管理
CN101231617B (zh) 闪存设备的数据处理方法
WO2007058624A1 (en) A controller for non-volatile memories, and methods of operating the memory controller
CN103106143A (zh) 固态储存装置及其逻辑至实体对应表建立方法
KR20000070451A (ko) 기억장치 및 액세스방법
CN103268294A (zh) 一种存取数据的操作方法和数据处理设备
CN107045423B (zh) 存储器装置及其数据存取方法
CN104933051A (zh) 文件存储空间回收方法和装置
CN111061649A (zh) 一种存储器的存储空间自适应分配方法
CN112466371B (zh) 一种循环利用闪存模拟字节擦除功能的方法
CN104461384A (zh) 一种数据写入方法及存储设备
TW200814088A (en) Method for increasing read/write lifespan of flash memory
CN113568579A (zh) 一种存储器、数据存储方法以及数据读取方法
JPH113287A (ja) 記憶装置およびそれに用いられる記憶領域管理方法
JPH11272569A (ja) フラッシュメモリを使用した外部記憶装置のデータ回復方式
CN109002265B (zh) 一种数据处理的方法以及相关装置
US10559359B2 (en) Method for rewriting data in nonvolatile memory and semiconductor device
US6898680B2 (en) Minimization of overhead of non-volatile memory operation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant