减少flash擦除次数的方法

文档序号:8498652阅读:1693来源:国知局
减少flash擦除次数的方法
【技术领域】
[0001]本发明涉及数据存储领域,尤其涉及一种减少FLASH(闪存)擦除次数的方法。
【背景技术】
[0002]在工业仪表如智能配电仪表的设计中,有时会出现1 口资源太少,无法外接EEPRom芯片存储设置参数,而MCU的FLASH存储空间没有用完,可以用来保存数据。但由于FLASH的擦写次数有限,无法满足工业仪表如智能配电仪表中电能数据的不断更改且需要掉电不丢失的要求。例如,常用的MCU的FLASH的擦写次数只有9万次,远远无法满足需要不断更改并且需要掉电不丢失的数据的存储要求,尤其是在工业仪表中。在智能配电仪表中,要保存的参数可分为两类,一类是参数包括设置参数和校准参数,这些数据很少改变,FLASH本身的存储寿命可以满足要求;而另一类是电能计量数据,这些数据要不断的进行存储,若每5分钟一次,则每年要写入的次数达到10万次,MCU中FLASH的擦写寿命常常无法满足需求。

【发明内容】

[0003]根据本发明的一个方面,提供了一种减少FLASH擦除次数的方法,通过利用FLASH的存储空间来减少FLASH的擦写次数,延长FLASH的使用寿命,满足掉电不丢失的数据的存储要求。该方法包括:
[0004]A、在FLASH的存储空间分别设置参数页和记录页,各页面的存储空间包括多个存储单元;
[0005]B、将要存储的数据记录依次写入记录页的空存储单元,直到记录页的数据记录存储量达到预设值;
[0006]C、当参数页的数据记录存储量小于预设值时,将要存储的数据记录依次写入参数页的空数据记录备份存储单元,并擦除记录页,返回步骤B ;
[0007]当参数页的数据记录存储量达到预设值时,擦除所述参数页与所述记录页。
[0008]上述方法通过利用FLASH的存储空间减少闪存的擦写次数,能够有效提高FLASH的擦写寿命,满足需要不断存储的数据的写入需求。同时,该算法使用两个页面,能够进行数据备份,避免页面擦除时数据丢失的风险。
[0009]在一些实施方式中,步骤A包括:
[0010]根据扇区、需要存储的参数和数据的量,设置页面的大小;
[0011]根据单条数据记录和所设置的页面的大小,将页面的空间分区为多个存储单元,每个存储单元对应存储一条数据记录;
[0012]把参数设置为默认值写入页面的对应存储单元,并设置该页面的页面状态标识为参数页标识;
[0013]把数据写入到另一个页面的对应存储单元,并设置该页面的页面状态标识为记录页标识。
[0014]由此,将存储的单条数据记录放置在页面中的对应存储单元中,可以实现依次循环写满一个页面才进行一次擦除操作,从而减少FLASH空间的擦写次数。而将变化较少的参数数据和不断变化的数据记录分开存放,能够借助变化较少的参数数据页面的空间,有效减少数据记录页面的擦写次数,并且能够实现数据备份,避免擦除时和掉电时数据的丢失。
[0015]在一些实施方式中,页面的大小为512个字节,存储单元为32个,每个存储单元的大小为16个字节,每次写入的一条数据记录占用一个存储单元。由此,实现仪表中16个字节的电能数据记录的依次写入,并且32个存储单元能够将擦写次数减低为写入30次擦除一次记录页。
[0016]在一些实施方式中,参数页的存储单元存储有状态标识、校准参数、设置参数及数据记录备份,状态标识占用一个存储单元,校准参数占用二个存储单元,设置参数占用八个存储单元,剩余存储单元用于存放数据记录备份;记录页的存储单元设置为存放状态标识和数据记录,状态标识占用一个存储单元,数据记录占用二十九个存储单元,剩余存储单元作为保留空间。由此,通过状态标识的设置,可以判断页面和记录的当前状态,为依次写入数据记录和进行页面数据备份提供保障。
[0017]在一些实施方式中,状态标识包括页面状态标识和存储单元使用状态标识,页面状态标识占用一个字节,存储单元使用状态标识占用四个字节,四个字节的三十二个位每一位对应标识一个存储单元的使用状态。由此,可以通过读取状态标识判断页面和存储单元的当前状态。
[0018]在一些实施方式中,页面状态标识包括空页标识、记录页标识、参数页标识、正把该页的参数备份到另一页标识和正在往该页上备份参数标识。由此,页面可以通过状态标识进行页面交换,能够有效标识页面状态,区分页面功能,也能够实现在掉电时状态的记录,有利于上电时有效数据的读取和页面数据的初始化,防止掉电数据丢失的情况。
[0019]在一些实施方式中,步骤B包括:
[0020]S1、接收一条数据记录,根据记录页的记录状态标识判断是否有空的数据记录存储单元,是则继续步骤S2,否则跳转至步骤S3 ;
[0021]S2、向记录页的空存储单元中写入当前数据记录,跳转至步骤SI ;
[0022]步骤C包括:
[0023]S3、根据参数页的记录状态标识判断是否有空的数据记录备份存储单元,是则进行步骤S4,否则跳转至步骤S6 ;
[0024]S4、向参数页的空的数据记录备份存储单元中写入当前数据记录;
[0025]S5、擦除记录页,跳转至步骤SI ;
[0026]S6、擦除参数页与记录页。
[0027]通过将数据记录循环写入空存储单元,可以实现在页面满或存储到一定数据量时才擦除一次页面,实现存储空间的充分利用,减少擦写次数,提高FLASH的使用寿命。
[0028]在一些实施方式中,步骤C还包括:
[0029]当所述参数页的数据记录存储量达到预设值时,备份参数页的数据,交换参数页与记录页。由此,可以实现页面擦除时数据的备份,防止擦除时页面数据的丢失。
[0030]在一些实施方式中,备份参数页的数据,交换参数页与记录页的方法包括:
[0031]a、擦除记录页;
[0032]b、将参数页的参数部分写入到记录页的对应存储单元,进行备份;
[0033]C、更改记录页的页面状态标识为参数页标识;
[0034]d、擦除参数页;
[0035]e、更改参数页的页面状态标识为记录页标识;
[0036]f、记录页转化为参数页,参数页转化为记录页,跳转至步骤B。
[0037]由此,可以实现页面功能的交换。而通过备份和页面功能交换,能够有效避免在设置参数擦除后写入前掉电,导致设置参数丢失。
[0038]在一些实施方式中,还包括:
[0039]在上电时首先读取Flash存储空间的参数页和记录页的页面状态标识;
[0040]根据页面状态标识判断掉电时的页面状态,以确定页面的有效数据;
[0041]根据掉电时的页面状态和有效数据,对FLASH的参数页和记录页进行页面初始化操作。
[0042]通过在上电时,首先读取页面状态标识进行掉电时状态的判断,能够避免掉电时正在备份或擦除数据,导致数据丢失或重复无效数据或备份不完整,从而有效的实现数据的备份、存储和页面交换。
【附图说明】
[0043]图1为本发明一实施方式的减少FLASH擦除次数的方法流程图;
[0044]图2为图1所示方法中的页面空间存储结构图;
[0045]图3为图1所示方法中的页面的状态记录的存储结构图;
[0046]图4为本发明另一实施方式的减少FLASH擦除次数的方法流程图;
[0047]图5为图4所示方法中页面交换过程的流程图;
[0048]图6为本发明一实施方式的上电时FLASH存储页面的初始化方法的流程图。
【具体实施方式】
[0049]下面结合附图对本发明作进一步详细的说明。
[0050]图1示意性地显示了根据本发明的一种实施方式的减少FLASH擦除次数的方法的流程图。下面以在智能配电仪表中利用FLASH存储空间来减少闪存的擦写次数延长FLASH的擦写寿命,以满足不断存储电能计量数据的需求为例,进行详细说明。如图1所示,该方法包括:
[0051]步骤SlOl:将FLASH的存储空间分为两个页面,并将每个页面的空间划分为多个存储单元。
[0052]以往要改写FLASH里的数据,必须先擦除整个页面,电度改写的比较频繁,为了延长FLASH的寿命,本发明该例中将FLASH的整个页面按电度数据的数量级或所占字节数(如本例中一条电度数据占用16个字节)进行存储单元的划分,每次的电度数据作为一条数据记录依次存储在一个存储单元。这样就可以在页面存满时(此种情况适用于扇区的存储空间较小,设置的页面大小刚好满足电度数据的存储量要求时)或可以预设为达到例如页面容量的四分之三或写满32个存储单元时(此种情况适用于扇区的存储空间远大于电度数据的存储量时)再擦除,可以对一个页面进行循环利用。
[0053]另外,在擦除页面时,为了避免数据丢失,同时使用两个页面,还可以在擦除电度数据时,进一步进行数据备份。
[0054]页面的大小受限于MCU的一个扇区的大小和保存参数的多少及单个电能记录的大小。例如有些MCU的扇区大小为1024字节或2048字节,在这种情况下,即使一个页面512个字节就可以满足要求,也要把一个页面的大小设置为MCU单个扇区的大小,此时可以设置页面存储量达到预
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1