CN117742588B - 使用Flash模拟EEPROM的数据存储方法及系统 - Google Patents
使用Flash模拟EEPROM的数据存储方法及系统 Download PDFInfo
- Publication number
- CN117742588B CN117742588B CN202311624432.5A CN202311624432A CN117742588B CN 117742588 B CN117742588 B CN 117742588B CN 202311624432 A CN202311624432 A CN 202311624432A CN 117742588 B CN117742588 B CN 117742588B
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- storage space
- flash
- space
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000013500 data storage Methods 0.000 title claims abstract description 20
- 238000004088 simulation Methods 0.000 title abstract description 9
- 230000004913 activation Effects 0.000 claims abstract description 20
- 230000002159 abnormal effect Effects 0.000 claims description 18
- 238000013524 data verification Methods 0.000 claims description 14
- 230000003213 activating effect Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 13
- 230000007547 defect Effects 0.000 description 2
- 230000002035 prolonged effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明公开一种使用Flash模拟EEPROM的数据存储方法及系统,方法包括:初始化Flash内预先划分好的两个存储空间,并确定两个所述存储空间的激活状态;在两个所述存储空间中查找所有的最新数据;在被写入的数据长度小于当前激活状态存储空间的剩余空间时,写入数据至当前激活状态存储空间的数据区;在被写入的数据长度大于当前激活状态存储空间的剩余空间时,交换两个存储空间的激活状态,写入数据至新激活状态存储空间的数据区。本发明通过管理两个存储空间的激活状态,交替地向两个存储数据区以特定的格式写入数据,并在初始化时仅记录数据标志头的首地址,解决当前Flash模拟EEPROM方法中Flash利用率低,且大量占用Sram问题。
Description
技术领域
本发明属于嵌入式软件设计领域,具体涉及一种使用Flash模拟EEPROM的数据存储方法及系统。
背景技术
在嵌入式领域,有大量的数据需要在掉电的情况下能够被保存,且这些数据可能会被频繁的修改。如果增加EEPROM去保存这些数据会导致成本上升,通常嵌入式领域会使用微控制器内部Flash模拟EEPROM。
现有技术一般通过使用Sram+Flash的方式模拟EEPROM。一个数据包包括72bit,bit[31:0]用于存储数据,Bit[63:32]用于存储目标地址(Sram)的地址+有效标志位,bit[71:64]用于存储错误纠正码(ECC),如图1所示。
同时考虑异常掉电后数据不会丢失,则需要额外再使用一倍的Flash空间用于备份数据,如图2所示,其中,Flash Bank0用于正常模拟EEPROM,Flash Bank1用于备份数据。但这样的方式导致Flash的利用率极低(低于25%)。
现有技术主要存在以下缺陷:
1、Flash利用率较低,模拟大空间的EEPROM,需要占用更多的Flash;
2、需要占用大量的Sram,例如模拟4KB EEPROM则需要消耗4KB Sram;
3、上电遍历数据时间较长,需要按照地址逐一遍历所有Flash内容,效率低;
4、未保存额外的数据信息(例如数据存储的次数、Flash擦除次数),不利于问题及故障分析。
上述缺陷对于资源有限的小型嵌入式系统来说是难以接受的。
发明内容
为克服上述现有技术的不足,本发明提供一种使用Flash模拟EEPROM的数据存储方法及系统,通过管理两个存储空间的激活状态,交替地向两个存储空间的数据区写入数据,以达到延长Flash使用寿命的目的。
根据本发明说明书的一方面,提供一种使用FLASH模拟EEPROM的数据存储方法,包括:
初始化Flash内预先划分好的两个存储空间,并确定两个所述存储空间的激活状态;
在两个所述存储空间中查找所有的最新数据;
在被写入的数据长度小于当前激活状态存储空间的剩余空间时,写入数据至当前激活状态存储空间的数据区;在被写入的数据长度大于当前激活状态存储空间的剩余空间时,交换两个存储空间的激活状态,写入数据至新激活状态存储空间的数据区。
上述技术方案使用微控制器内部Flash模拟EEPROM存储数据,节约了成本;并通过管理两个存储空间的激活状态,交替地向两个存储空间的数据区写入数据来使得Flash能够被均衡磨损,减少Flash擦除次数,延长整体Flash使用寿命。
作为进一步的技术方案,在初始化之前,还包括:将Flash结构划分为两个存储空间,每个所述存储空间均包括信息区和数据区,所述信息区用于存放每个存储空间的信息,所述数据区用于存放EEPROM数据。
可选地,所述信息区包括:PART状态编号、信息校验标志、CRC检验码和复制完成标志。所述数据区包括:数据校验标志头、数据段和数据校验标志尾。其中,所述数据校验标志头包括数据标志头、数据编号、数据长度和数据写入次数。所述数据段包括数据头和数据。所述数据校验标志尾包括数据标志尾、数据编号和数据长度。
上述技术方案通过信息区和数据区的特殊结构可以实现上电快速数据查找以及异常掉电数据恢复。进一步来说,所述数据区的特定格式可解决Flash模拟EEPROM中Flash利用率低的问题。
作为进一步的技术方案,每个所述存储空间均包括激活状态和非激活状态,且同一时刻仅有一个存储空间处于激活状态。
作为进一步的技术方案,在初始化时,还包括:
读取Flash内两个存储空间的信息区内容,并根据所述信息区内容确定存储空间是否正常;
在根据对比结果判断至少一个存储空间异常时,对异常存储空间进行恢复,并确定恢复后两个存储空间的激活状态。
作为进一步的技术方案,在根据对比结果判断两个存储空间均正常后,进一步包括:
查找最低的未被写入数据的地址,并基于查找到的最低的未被写入数据的地址后,查找所有的最新的有效数据。
作为进一步的技术方案,在查找最低的未被写入数据的地址时,还包括:从存储空间的高地址依次往低地址进行遍历,直到内容有数据或者读取到数据区域的起始地址。
作为进一步的技术方案,基于查找到的最低的未被写入数据的地址后,查找所有的最新的有效数据时,还包括:
根据最低的未被写入数据的地址中的内容,确定数据校验标志尾;
根据所述数据校验标志尾中的数据长度找到数据校验标志头地址,并读取数据校验标志头内容;
根据所述数据校验标志头中的数据编号、数据长度确定数据是否正确且完整;
在所述数据正确且完整时,将所述数据的校验标志头地址记录在Sram中。
上述技术方案仅将数据的首地址、写入次数、数据编号记录在Sram中,一个数据编号可对应大量的数据,大大的节约了Sram空间,解决了现有Flash模拟EEPROM方法需要大量占用Sram的问题。
作为进一步的技术方案,所述方法还包括:
判断被写入的数据长度是否大于存储空间的剩余空间;
在小于存储空间的剩余空间时,直接在激活状态存储空间的最低的未被写入数据的地址中依次写入数据的数据校验标志头、数据段、数据校验标志尾;
在大于存储空间的剩余空间时,则进行存储空间激活状态交换后,再进行数据写入。
作为进一步的技术方案,进行存储空间激活状态交换,进一步包括:
将当前激活存储空间的最新数据复制到非激活存储空间,并记录非激活存储空间的最低的未被写入数据的地址;
复制完成后擦除激活存储空间中的所有内容;
将新的存储空间状态编号、信息校验标志、CRC校验码重新写入到被擦除的存储空间信息区;
重新标记状态编号小的存储空间为激活状态,状态编号大的存储空间为非激活状态,存储空间激活状态交换完成。
根据本发明说明书的一方面,提供一种使用FLASH模拟EEPROM的数据存储系统,包括:
初始化模块,用于初始化Flash内预先划分好的两个存储空间,并确定两个所述存储空间的激活状态;
查找模块,用于在两个所述存储空间中查找所有的最新数据;
写入模块,用于在被写入的数据长度小于当前激活状态存储空间的剩余空间时,写入数据至当前激活状态存储空间的数据区;在被写入的数据长度大于当前激活状态存储空间的剩余空间时,交换两个存储空间的激活状态,写入数据至新激活状态存储空间的数据区。
与现有技术相比,本发明的有益效果在于:
1、本发明通过管理两个存储空间的激活状态,交替地向两个存储数据区以特定的格式写入数据,并在初始化时仅记录数据标志头的首地址,合理地管理了Flash中数据,提升了Flash的使用寿命,并解决了当前Flash模拟EEPROM方法中Flash利用率低,且大量占用Sram问题。
2、本发明可记录每份数据总共写入的次数以及Flash已被擦除次数,而且占用极少的Sram,且Flash利用率较高;同时有较强的鲁棒性,任意时刻发生异常掉电后,数据均不会丢失。
3、本发明节约了上电初始化时间。相对于现有遍历所有Flash内容来读取数据至RAM的方式而言,本发明仅读取数据标志头和数据标志尾,来记录数据起始地址,大大减少了遍历Flash的时间。
4、本发明占用极少的Sram资源。现对于现有使用Sram来保存所有的数据(例如模拟4KB EEPROM,需要4KB EEPROM Sram)而言,本发明仅仅将数据的首地址、写入次数、数据编号记录在Sram中,一个数据编号可对应大量(例如1KByte)的数据,大大的节约了Sram空间。
5、本发明易于问题的分析。除了数据外,还保存了数据的写入次数以及Flash的擦除次数,同时还可能存在历史数据,这些信息均有助于系统问题及故障的分析。
6、本发明Flash利用率高。现对于现有每个EEPROM地址对应1Byte数据而言,本发明采用抽象的方式(数据编号),每个数据编号可以对应任意长度(最大不超过用于模拟EEPROM的Flash大小除以2,再减512Byte)的数据,同样大小的Flash,利用该算法可以存储更多的数据。
附图说明
图1为现有技术使用Sram+Flash模拟EEPROM的数据存储方法示意图。
图2为现有技术考虑异常掉电的Sram+Flash模拟EEPROM数据存储方法示意图。
图3为根据本发明实施例的使用Flash模拟EEPROM的数据存储方法流程示意图。
图4为根据本发明实施例的Flash结构划分示意图。
图5为根据本发明实施例的信息区组成格式示意图。
图6为根据本发明实施例的数据区组成格式示意图。
图7为根据本发明实施例的初始化流程示意图。
图8为根据本发明实施例的数据查找示意图。
图9为根据本发明实施例的数据写入示意图。
图10为根据本发明实施例的复制最新有效数据至非激活状态示意图。
图11为根据本发明实施例的擦除激活PART的所有内容示意图。
图12为根据本发明实施例的写入激活PART的信息区示意图。
图13为根据本发明实施例的向非激活PART写入复制完成标志示意图。
图14为根据本发明实施例的切换PART的激活状态示意图。
具体实施方式
为了解决当前Flash模拟EEPROM方法中Flash利用率低且大量占用Sram的问题,本发明提出了一种新的Flash模拟EEPROM方法,该方法通过管理两个存储空间的激活状态,交替地向两个存储空间的数据区以特定的格式写入数据来使得Flash能够被均衡磨损,在存储数据的同时还能保证Flash寿命最大化。
以下将结合附图对本发明各实施例的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。
实施例1
如图3所示,本实施例提供一种使用Flash模拟EEPROM的数据存储方法,包括:
步骤1,初始化Flash内预先划分好的两个存储空间,并确定两个所述存储空间的激活状态;
步骤2,在两个所述存储空间中查找所有的最新数据;
步骤3,在被写入的数据长度小于当前激活状态存储空间的剩余空间时,写入数据至当前激活状态存储空间的数据区;在被写入的数据长度大于当前激活状态存储空间的剩余空间时,交换两个存储空间的激活状态,写入数据至新激活状态存储空间的数据区。
本发明在利用Flash模拟EEPROM存储之前,先进行Flash结构划分,得到两个存储空间(以下简称PART,如图4所示的PART0和PART1),其中,每个PART又可分为信息区和数据区。所述信息区用于存放每个PART的信息,所述数据区用于存放EEPROM数据。
需要说明的是,每个PART均包括激活状态和非激活状态。同一时刻仅有一块PART处于激活状态,而另一块PART处于非激活状态。处于激活状态的PART用于存放写入的数据,处于非激活状态的PART的数据区全部处于擦除状态。
如图5所示,所述信息区包括:PART状态编号、信息校验标志、CRC检验码和复制完成标志。
其中,所述PART状态编号用于判断PART激活状态。所述信息校验标志、CRC检验码和复制完成标志用于判断PART是否正常。这里的正常指的是PART正确且完整。
需要说明的是,每次擦除PART时,PART状态编号递增。在初次上电时,通过比较两个PART状态编号,即可判断当前哪个PART处于激活状态。同时通过PART状态编号也指示了Flash擦除的次数。
如图6所示,所述数据区包括:数据校验标志头、数据段和数据校验标志尾。其中,所述数据校验标志头包括数据标志头、数据编号、数据长度和数据写入次数。所述数据段包括数据头和数据。所述数据校验标志尾包括数据标志尾、数据编号和数据长度。
通过数据标志头、数据标志尾以及数据长度实现倒序扫描方法,能快速实现对有效数据的查找,而无需遍历所有数据。
所述数据区的设定抽象EEPROM地址,一个数据编号对应一段数据,这一段数据的长度可自定义。
除数据本身外,所述数据区还记录了数据的写入次数,可用于系统问题及故障的分析。
步骤1的初始化过程包括:读取Flash内两块PART的信息区,将两块PART的信息校验标志、CRC校验码、复制完成标志与预期值进行对比,以判断两块PART是否正常。
需要说明的是,所述预期值是指事先约定好的固定值。仅以示例说明,若规定信息校验标志为0xA6,在初始化时读取信息校验标志区域若为0xA6,则表示信息校验标志为预期值。换言之,对于未使用的Flash,所有地址的数据均为0xFFFFFFFF,那这个时候读取信息校验标志为0xFF,这就不是预期值。
如图7所示,具体地包括:
步骤1.1,判断两块PART的信息区内容是否正确;
步骤1.2,若信息区内容正确,则执行步骤1.3;若信息区内容不正确,则格式化Flash内容,初始化完成;
步骤1.3,判断两块PART的信息区内容是否完整;
步骤1.4,若信息区内容完整,则执行步骤1.5;若信息区内容不完整,则恢复信息区内容,初始化完成;
步骤1.5,查找所有的最新数据。
可选地,如果两块PART区域都是异常的,则认为这两个PART未被格式化,需要对这两个PART进行格式化,执行操作如下:
擦除两个PART中所有内容,分别将①PART状态编号(PART0写入“0”,PART1写入“1”)、②信息校验标志及③CRC检验码写入到这两个PART的信息区。
上述信息写入完成后,再将复制完成标志写入到PART0,并标记PART0为激活状态、PART1为非激活状态。完成上述所有操作后,格式化和初始化完成。
可选地,如果两块PART区域只有一块是正常的,则认为在PART交换的擦除过程中发生了异常掉电,需要重新恢复异常PART的信息区,执行操作如下:
擦除异常PART中所有内容,将PART状态编号(正常PART的状态编号+1)写入异常的PART信息区域,写入信息校验标志、CRC校验码至异常PART的信息区域。
上述操作完成后,重新标记状态编号较小的PART为激活状态,状态编号较大的PART为非激活状态,初始化完成。
可选地,如果两块PART区域都是正常的,且两块PART中都存在数据,且状态编号较大PART的复制完成标志已被写入,则也认为在PART交换的擦除中发生了异常掉电,也需要重新恢复异常PART的信息区,执行操作如下:
擦除状态编号较小PART中所有内容,将新的PART状态编号(未被擦除PART状态编号+1)、信息校验标志、CRC校验码重新写入到被擦除的PART信息区域。
可选地,如果两块PART区域都是正常的,且两块PART中都存在数据,且状态编号较大PART的复制完成标志未被写入,则认为在PART交换的复制中发生了异常掉电,需要重新复制数据,执行操作如下:
a,擦除编号较大PART中的所有内容;
b,重新将PART状态编号写入到编号较大PART的信息区域;
c,写入信息校验标志、CRC校验码至编号较大PART的信息区域;
d,将编号较小PART中所有的最新的有效数据复制到编号较大PART的数据区域;
e,步骤d完成后,将复制完成标志写入到编号较大PART的信息区域;
f,擦除编号较小PART的所有内容(包括信息区和数据区);
g,将PART状态编号(较大PART的状态编号+1)、信息校验标志、CRC校验码重新写入至被擦除的PART。
上述操作完成后,重新标记状态编号较小的PART为激活状态,状态编号较大的PART为非激活状态,初始化完成。
可选地,如果两块PART区域都是正常的,则在PART中查找所有的最新的有效数据。
可选地,在确定哪个PART处于激活状态后,步骤2进一步包括:
步骤2.1,查找最低的未被写入数据的地址;
步骤2.2,查找所有的最新的有效数据。
如图8所示,步骤2.1具体包括:从PART的高地址依次往低地址进行遍历,遍历以512Byte为单位,首先读取512Byte的前16Byte内容,如果内容是被擦除的,继续读取上一个512Byte的前16Byte内容,直到内容有数据或者读取到数据区域的起始地址。
可选地,如果前16Byte内容有数据,则读取后续8Byte内容,如果8Byte内容中有数据,继续读取后续的8Byte数据,直到读取到的地址内容是被擦除的,则记录最低的未被写入数据的地址为该地址。
可选地,如果读取到数据区域的起始地址,则记录最低的未被写入数据的地址为数据区域的起始地址。
可选地,步骤2.2具体包括:
如果最低的未被写入数据的地址不为数据区域的起始地址,则读取该地址的前8Byte内容,判断是否等于数据校验标志尾。如果不等于数据校验标志尾,则继续读取前8Byte数据,如果等于数据校验标志尾,则通过数据校验标志尾中的数据长度找到数据校验标志头地址,并读取数据校验标志头内容;
判断数据校验标志头中的数据编号、数据长度是否等于数据校验标志尾中的数据编号和数据长度。如果相等,则证明数据是正确的、完整的,并将数据的校验标志头地址记录在Sram中。如果不等则说明数据是被破坏的,数据无效;
重复上述过程,直到找到所有的数据或查找完所有的PART数据区域。
可选地,在查找所有的最新的有效数据时,如果最低的未被写入数据的地址为数据区域的起始地址,则该PART中没有存储数据,无需查找。
可选地,步骤3进一步包括:
判断写入的长度是否大于PART的剩余空间;
如果写入数据的长度小于剩余空间,则直接在激活PART的最低的未被写入数据的地址中依次写入数据的数据校验标志头、数据段、数据校验标志尾,如图9所示;
如果写入的数据长度大于剩余的空间,则需要进行PART交换后,再进行数据写入。
PART交换过程如图10至图14所示,具体包括:
(1)将激活PART的最新数据复制到非激活PART,并记录该PART的最低的未被写入数据的地址;
(2)复制完成后擦除激活PART中的所有内容;
(3)将新的PART状态编号(未被擦除PART状态编号+1)、信息校验标志、CRC校验码重新写入到被擦除的PART信息区域。
上述操作完成后,重新标记状态编号较小的PART为激活状态,状态编号较大的PART为非激活状态,PART交换完成。最后在激活PART的最低的未被写入数据的地址中依次写入数据的数据校验标志头、数据段、数据校验标志尾。
数据写入完成后,更新Sram保存的数据的起始地址,并记录下一个最低的未被写入数据的地址。
本发明在初始化、写入数据过程中,记录了所有数据的起始地址,则读取数据时,直接从对应数据的起始地址读取数据即可。
实施例2
基于与实施例相同的发明构思,本实施例提供一种使用FLASH模拟EEPROM的数据存储系统,包括:
初始化模块,用于初始化Flash内预先划分好的两个存储空间,并确定两个所述存储空间的激活状态;
查找模块,用于在两个所述存储空间中查找所有的最新数据;
写入模块,用于在被写入的数据长度小于当前激活状态存储空间的剩余空间时,写入数据至当前激活状态存储空间的数据区;在被写入的数据长度大于当前激活状态存储空间的剩余空间时,交换两个存储空间的激活状态,写入数据至新激活状态存储空间的数据区。
上述各模块可参数实施例的方法来实现,在此不做赘述,需要特别指出的是,在初始化之前,还包括:将Flash结构划分为两个存储空间,每个所述存储空间均包括信息区和数据区,所述信息区用于存放每个存储空间的信息,所述数据区用于存放EEPROM数据。
每个所述存储空间均包括激活状态和非激活状态,且同一时刻仅有一个存储空间处于激活状态。
综上实施例,本发明将Flash划分为两个PART,每个PART分为信息区和数据区,通过管理两个PART的激活状态,交替地向两个PART的数据区写入数据来使得Flash能够被均衡磨损,在存储数据的同时还能保证Flash寿命最大化。同时通过信息区和数据区的特殊结构可以实现上电快速数据查找以及异常掉电数据恢复。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案。
Claims (8)
1.使用FLASH模拟EEPROM的数据存储方法,其特征在于,包括:
初始化Flash内预先划分好的两个存储空间,并确定两个所述存储空间的激活状态;在初始化时,还包括:读取Flash内两个存储空间的信息区内容,并根据所述信息区内容确定存储空间是否正常;
在两个所述存储空间中查找所有的最新数据;在根据对比结果判断两个存储空间均正常后,查找最低的未被写入数据的地址,根据最低的未被写入数据的地址中的内容,确定数据校验标志尾;根据所述数据校验标志尾中的数据长度找到数据校验标志头地址,并读取数据校验标志头内容;根据所述数据校验标志头中的数据编号、数据长度确定数据是否正确且完整;在所述数据正确且完整时,将所述数据的校验标志头地址记录在Sram中;
在被写入的数据长度小于当前激活状态存储空间的剩余空间时,写入数据至当前激活状态存储空间的数据区;在被写入的数据长度大于当前激活状态存储空间的剩余空间时,交换两个存储空间的激活状态,写入数据至新激活状态存储空间的数据区。
2.根据权利要求1所述使用FLASH模拟EEPROM的数据存储方法,其特征在于,在初始化之前,还包括:将Flash结构划分为两个存储空间,每个所述存储空间均包括信息区和数据区,所述信息区用于存放每个存储空间的信息,所述数据区用于存放EEPROM数据。
3.根据权利要求1所述使用FLASH模拟EEPROM的数据存储方法,其特征在于,每个所述存储空间均包括激活状态和非激活状态,且同一时刻仅有一个存储空间处于激活状态。
4.根据权利要求2所述使用FLASH模拟EEPROM的数据存储方法,其特征在于,在初始化时,还包括:
在根据对比结果判断至少一个存储空间异常时,对异常存储空间进行恢复,并确定恢复后两个存储空间的激活状态。
5.根据权利要求1所述使用FLASH模拟EEPROM的数据存储方法,其特征在于,在查找最低的未被写入数据的地址时,还包括:从存储空间的高地址依次往低地址进行遍历,直到内容有数据或者读取到数据区域的起始地址。
6.根据权利要求1所述使用FLASH模拟EEPROM的数据存储方法,其特征在于,所述方法还包括:
判断被写入的数据长度是否大于存储空间的剩余空间;
在小于存储空间的剩余空间时,直接在激活状态存储空间的最低的未被写入数据的地址中依次写入数据的数据校验标志头、数据段、数据校验标志尾;
在大于存储空间的剩余空间时,则进行存储空间激活状态交换后,再进行数据写入。
7.根据权利要求6所述使用FLASH模拟EEPROM的数据存储方法,其特征在于,进行存储空间激活状态交换,进一步包括:
将当前激活存储空间的最新数据复制到非激活存储空间,并记录非激活存储空间的最低的未被写入数据的地址;
复制完成后擦除激活存储空间中的所有内容;
将新的存储空间状态编号、信息校验标志、CRC校验码重新写入到被擦除的存储空间信息区;
重新标记状态编号小的存储空间为激活状态,状态编号大的存储空间为非激活状态,存储空间激活状态交换完成。
8.使用FLASH模拟EEPROM的数据存储系统,其特征在于,包括:
初始化模块,用于初始化Flash内预先划分好的两个存储空间,并确定两个所述存储空间的激活状态;在初始化时,还包括:读取Flash内两个存储空间的信息区内容,并根据所述信息区内容确定存储空间是否正常;
查找模块,用于在两个所述存储空间中查找所有的最新数据;在根据对比结果判断两个存储空间均正常后,查找最低的未被写入数据的地址,根据最低的未被写入数据的地址中的内容,确定数据校验标志尾;根据所述数据校验标志尾中的数据长度找到数据校验标志头地址,并读取数据校验标志头内容;根据所述数据校验标志头中的数据编号、数据长度确定数据是否正确且完整;在所述数据正确且完整时,将所述数据的校验标志头地址记录在Sram中;
写入模块,用于在被写入的数据长度小于当前激活状态存储空间的剩余空间时,写入数据至当前激活状态存储空间的数据区;在被写入的数据长度大于当前激活状态存储空间的剩余空间时,交换两个存储空间的激活状态,写入数据至新激活状态存储空间的数据区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311624432.5A CN117742588B (zh) | 2023-11-30 | 2023-11-30 | 使用Flash模拟EEPROM的数据存储方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311624432.5A CN117742588B (zh) | 2023-11-30 | 2023-11-30 | 使用Flash模拟EEPROM的数据存储方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117742588A CN117742588A (zh) | 2024-03-22 |
CN117742588B true CN117742588B (zh) | 2024-06-04 |
Family
ID=90249904
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311624432.5A Active CN117742588B (zh) | 2023-11-30 | 2023-11-30 | 使用Flash模拟EEPROM的数据存储方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117742588B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118012355B (zh) * | 2024-04-10 | 2024-07-05 | 上海朔集半导体科技有限公司 | 模拟eeprom及其控制方法、模拟控制器、存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103823642A (zh) * | 2014-03-17 | 2014-05-28 | 深圳市道通科技有限公司 | 用于Flash均衡存储的方法及系统 |
CN111176579A (zh) * | 2019-12-30 | 2020-05-19 | 航天信息股份有限公司 | 使用norflash模拟eeprom的方法 |
CN112631516A (zh) * | 2020-12-22 | 2021-04-09 | 上海宏力达信息技术股份有限公司 | 一种具有寿命管理的flash文件管理系统 |
CN113383390A (zh) * | 2019-01-28 | 2021-09-10 | 日立安斯泰莫株式会社 | 电子控制装置以及程序更新方法 |
CN114816230A (zh) * | 2021-01-29 | 2022-07-29 | 深圳和而泰智能家电控制器有限公司 | 一种Flash数据存储方法、装置和家电设备 |
CN114840449A (zh) * | 2022-06-30 | 2022-08-02 | 广州万协通信息技术有限公司 | 基于MCU片内flash的数据存储方法、装置、设备及存储介质 |
CN114879913A (zh) * | 2022-05-30 | 2022-08-09 | 重庆大学 | 一种eeprom数据可靠存储的方法 |
CN116225985A (zh) * | 2022-12-17 | 2023-06-06 | 浙江凌骁能源科技有限公司 | Soc参数掉电非易失的存储方法、装置和计算机设备 |
WO2023179243A1 (zh) * | 2022-03-21 | 2023-09-28 | 上海美仁半导体有限公司 | 数据读写方法、系统及介质、设备 |
-
2023
- 2023-11-30 CN CN202311624432.5A patent/CN117742588B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103823642A (zh) * | 2014-03-17 | 2014-05-28 | 深圳市道通科技有限公司 | 用于Flash均衡存储的方法及系统 |
CN113383390A (zh) * | 2019-01-28 | 2021-09-10 | 日立安斯泰莫株式会社 | 电子控制装置以及程序更新方法 |
CN111176579A (zh) * | 2019-12-30 | 2020-05-19 | 航天信息股份有限公司 | 使用norflash模拟eeprom的方法 |
CN112631516A (zh) * | 2020-12-22 | 2021-04-09 | 上海宏力达信息技术股份有限公司 | 一种具有寿命管理的flash文件管理系统 |
CN114816230A (zh) * | 2021-01-29 | 2022-07-29 | 深圳和而泰智能家电控制器有限公司 | 一种Flash数据存储方法、装置和家电设备 |
WO2023179243A1 (zh) * | 2022-03-21 | 2023-09-28 | 上海美仁半导体有限公司 | 数据读写方法、系统及介质、设备 |
CN114879913A (zh) * | 2022-05-30 | 2022-08-09 | 重庆大学 | 一种eeprom数据可靠存储的方法 |
CN114840449A (zh) * | 2022-06-30 | 2022-08-02 | 广州万协通信息技术有限公司 | 基于MCU片内flash的数据存储方法、装置、设备及存储介质 |
CN116225985A (zh) * | 2022-12-17 | 2023-06-06 | 浙江凌骁能源科技有限公司 | Soc参数掉电非易失的存储方法、装置和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN117742588A (zh) | 2024-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10552311B2 (en) | Recovery for non-volatile memory after power loss | |
CN106407050B (zh) | 一种数据存储方法 | |
US8041884B2 (en) | Controller for non-volatile memories and methods of operating the memory controller | |
JP4948793B2 (ja) | バッドブロック管理部を含むフラッシュメモリシステム | |
JP4560408B2 (ja) | 不揮発性記憶装置の制御方法 | |
CN117742588B (zh) | 使用Flash模拟EEPROM的数据存储方法及系统 | |
US8296503B2 (en) | Data updating and recovering methods for a non-volatile memory array | |
US9213629B2 (en) | Block management method, memory controller and memory stoarge apparatus | |
CN102063380B (zh) | 一种向非易失性存储器写入数据的方法及装置 | |
EP1036364A1 (en) | Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory | |
CN112596668A (zh) | 一种存储器的坏块处理方法及系统 | |
TW201316167A (zh) | 電子系統及其記憶體管理方法 | |
US8230302B2 (en) | Data protection method for memory | |
TW201407614A (zh) | 資料儲存方法、記憶體控制器與記憶體儲存裝置 | |
US7962810B2 (en) | Recording medium structure capable of displaying defect rate | |
CN113434086B (zh) | 数据存储方法、装置、非易失性存储器件和存储器 | |
CN113204316B (zh) | 一种使用flash进行高效数据存储的方法 | |
JP2003196165A (ja) | 不揮発性メモリ及びそのデータ更新方法 | |
JPH11272569A (ja) | フラッシュメモリを使用した外部記憶装置のデータ回復方式 | |
CN115878033A (zh) | 一种固态硬盘及其映射表管理方法 | |
CN111258498B (zh) | 一种flash存储器管理方法 | |
CN110633056B (zh) | 在操作系统层面的Flash芯片的页面管理方法及存储设备 | |
CN111813706A (zh) | 一种实现MCU Flash存储器擦写损耗均衡的方法 | |
CN113885791A (zh) | Flash存储器的数据写入方法、读取方法和装置 | |
US20240118812A1 (en) | Memory chip, operating method thereof, and judging method |
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 |