记录指针处理方法与流程

文档序号:13164416阅读:454来源:国知局
记录指针处理方法与流程

本发明涉及物联网设备技术领域,尤其涉及一种记录指针处理方法。



背景技术:

norflash因具有易擦除、读写速度快、性价比高等优点,广泛应用于嵌入式数据存储解决方案。如华邦w25系列flash芯片,该芯片存储空间为4m字节,划分为64块,每块16扇区,每扇区4k字节,总计1024扇区。

由于flash写操作只能将存储单元由1变为0,因此写数据前必须先进行擦除操作(即将存储单元变为1)。以上提到的flash芯片只支持扇区擦除,假设要写一段100字节的数据到第n扇区,存储位置为该扇区第1000到1099字节,先将该扇区所有数据读入cpu内存,然后将第1000到1099字节的内容替换为想要写入的数据,再将flash该扇区4k字节全部擦除,最后将内存中经过替换的该扇区的数据写入flash,这就相当于将100字节的数据写入flash特定地址而该扇区其他数据不变。若写数据时不用考虑该扇区原有数据保留问题的话,可以只擦一次,然后连续写入,所以通常的做法是先不擦除写一遍,若不成功则先擦除再重写。

显而易见,flash只适用于数据变动不太频繁的存储,因为flash的擦写次数是有限的。现有的数据存储方式多采用固定分区,将芯片存储空间按地址人为划分为若干个区,每个区存储指定类别的数据,每次更新数据均从分区的起始地址开始擦除,同时写入数据,如下载程序、字库时都是采用这种方式。但是对于实时存储读取的记录数据,如适用于电子刷卡设备,每刷一次卡,按一次键都要保存记录,一天可以产生数百条记录,靠近分区起始地址的存储单元擦写次数会明显多于其他位置,造成部分坏区,影响芯片的使用效果。



技术实现要素:

本发明为解决传统flash芯片擦写不均,使用寿命短的技术问题,提供了一种记录指针处理方法。

本发明提供了一种记录指针处理方法,包括以下步骤:

步骤s12,将每条数据记录的字节长度设定为m,数据纪录区最大存储n条数据记录,当前数据记录总数量为x;

步骤s13,进行写操作,写每条数据记录前先擦除m长度的数据记录区;

步骤s14,从数据纪录区的首地址开始写入数据记录;

步骤s15,写完成后将数据记录区的首地址设为读记录指针p1,本次写的最后一条数据记录的首地址设为写记录指针p2;

步骤s16,将写记录指针p2减去读记录指针p1,然后除以每条数据记录的字节长度m,再加上1,算出总写的数据记录的条数x,即x=(p2-p1)/m+1;

步骤s17,再次写操作,写每条数据记录前先擦除m长度的数据记录区;

步骤s18,将上次记录指针中包含的写记录指针p2所对应的地址设为本次的读记录指针p1对应的地址;

步骤s19,将读记录指针p1对应的地址加上m长度,所得地址为本次写数据记录的首地址d1;

步骤s20,从首地址d1开始写入数据记录,将本次所有数据记录的最后一条数据记录对应的首地址设为本次写的写记录指针p2;

步骤s21,将记录指针p2减去读记录指针p1,然后除以每条数据记录的长度m,算出本次写的数据记录的条数x1,即x1=(p2-p1)/m;

步骤s22,计算总写的数据记录的条数x,即x=x+x1;

步骤s23,若x<n,执行步骤s17,反之,执行步骤s13。

进一步地,还包括在步骤s12之前的以下步骤:

步骤s11,将存储空间按照地址分为多个存储区域。

进一步地,所述存储区域包括:程序存储区、字库存储区、系统参数区和数据记录区以及记录指针区。

进一步地,所述n=9990,所述m=50字节。

进一步地,还包括在步骤s13之前的以下步骤:

步骤31,将每条记录指针的字节长度设定为h,记录指针区最大存储p条记录指针,当前记录指针存储总数量为k且初始值k=1。

进一步地,所述记录指针包含写记录指针、读记录指针、有效指针标识及指针备份;所述有效指针标识用于识别当前记录指针,所述指针备份用于校验指针信息是否出错。

进一步地,还包括步骤s17前的以下步骤:

步骤s32,若k>p或k=p,执行步骤s33,反之执行步骤s34;

步骤s33,从记录指针区的首地址开始写入记录指针,写入记录指针前先擦除h长度的记录指针区,且将k赋值为1,执行步骤s17;

步骤s34,从上次记录指针的地址后面继续写入记录指针,写入记录指针前先擦除h长度的记录指针区;

步骤s35,计算当前记录指针的总数量,即k=k+1,执行步骤s17。

进一步地,还包括在步骤s23前的以下步骤:

步骤s36,若k>p或k=p,执行步骤s37,反之执行步骤s38;

步骤s37,从记录指针区的首地址开始写入记录指针,写入记录指针前先擦除h长度的记录指针区,且将k赋值为1,执行步骤s23;

步骤s38,从上次记录指针的地址后面继续写入记录指针,写入记录指针前先擦除h长度的记录指针区;

步骤s39,计算当前记录指针的总数量,即k=k+1,执行步骤s23。

进一步地,所述h=28,所述p=432。

本发明的有益效果是:本发明实施例通过采用记录指针的方式,使得每次存储的地址是动态变化的,避免了传统的使用都是从数据纪录区的首地址开始擦写,导致flash芯片存在擦写不均的现象,使得flash芯片每个存储区都能进行均匀的擦写,有效提高flash芯片的使用寿命和空间利用率。

附图说明

图1为本发明记录指针处理方法一个实施例的流程步骤图。

图2为本发明记录指针处理方法又一个实施例的流程步骤图。

图3为本发明记录指针处理方法另一个实施例的流程步骤图。

图4为本发明记录指针处理方法再一个实施例的流程步骤图。

图5为本发明记录指针处理方法又再一个实施例的流程步骤图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

在本发明中,除非另有明确的规定和限定,第一特征在第二特征之“上”或之“下”可以包括第一和第二特征直接接触,也可以包括第一和第二特征不是直接接触而是通过它们之间的另外的特征接触。而且,第一特征在第二特征“之上”、“上方”和“上面”包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”包括第一特征在第二特征正下方和斜下方,或仅仅表示第一特征水平高度小于第二特征。

下面通过具体实施方式结合附图对本发明作进一步详细说明。

如图1所示,本发明实施例提供一种记录指针处理方法,包括以下步骤:

步骤s12,将每条数据记录的字节长度设定为m,数据纪录区最大存储n条数据记录,当前数据记录总数量为x;

步骤s13,进行写操作,写每条数据记录前先擦除m长度的数据记录区;

步骤s14,从数据纪录区的首地址开始写入数据记录;

步骤s15,写完成后将数据记录区的首地址设为读记录指针p1,本次写的最后一条数据记录的首地址设为写记录指针p2;

步骤s16,将写记录指针p2减去读记录指针p1,然后除以每条数据记录的字节长度m,再加上1,算出总写的数据记录的条数x,即x=(p2-p1)/m+1;

步骤s17,再次写操作,写每条数据记录前先擦除m长度的数据记录区;

步骤s18,将上次记录指针中包含的写记录指针p2所对应的地址设为本次的读记录指针p1对应的地址;

步骤s19,将读记录指针p1对应的地址加上m长度,所得地址为本次写数据记录的首地址d1;

步骤s20,从首地址d1开始写入数据记录,将本次所有数据记录的最后一条数据记录对应的首地址设为本次写的写记录指针p2;

步骤s21,将记录指针p2减去读记录指针p1,然后除以每条数据记录的长度m,算出本次写的数据记录的条数x1,即x1=(p2-p1)/m;

步骤s22,计算总写的数据记录的条数x,即x=x+x1;

步骤s23,若x<n,执行步骤s17,反之,执行步骤s13。

本发明实施例通过采用记录指针的方式,使得每次存储的地址是动态变化的,避免了传统的使用都是从数据纪录区的首地址开始擦写,导致flash芯片存在擦写不均的现象,使得flash芯片每个存储区都能进行均匀的擦写,有效提高flash芯片的使用寿命和空间利用率。

如图2所示,在一个可选实施例中,还包括在步骤s12之前的以下步骤:

步骤s11,将存储空间按照地址分为多个存储区域,具体地,所述存储区域包括:程序存储区、字库存储区、系统参数区和数据记录区以及记录指针区。对存储空间进行分区存储,能有效提高存储空间的利用率。

在一个可选实施例中,所述n=9990,所述m=50字节。

如图3所示,在一个可选实施例中,还包括在步骤s13之前的以下步骤:

步骤31,将每条记录指针的字节长度设定为h,记录指针区最大存储p条记录指针,当前记录指针存储总数量为k且初始值k=1。具体地,所述h=28,所述p=432。

本实施例中,对记录指针的字节长度、最大存储数量进行设定,便于对记录指针进行与数据记录同样的存储方式。

在一个可选实施例中,所述记录指针包含写记录指针、读记录指针、有效指针标识及指针备份;所述有效指针标识用于识别当前记录指针,所述指针备份用于校验指针信息是否出错,写记录指针即上一条写入的数据记录的地址信息,包括所在页码和页内位置,读记录指针类似。

如图4所示,在一个可选实施例中,还包括步骤s17前的以下步骤:

步骤s32,若k>p或k=p,执行步骤s33,反之执行步骤s34;

步骤s33,从记录指针区的首地址开始写入记录指针,写入记录指针前先擦除h长度的记录指针区,且将k赋值为1,执行步骤s17;

步骤s34,从上次记录指针的地址后面继续写入记录指针,写入记录指针前先擦除h长度的记录指针区;

步骤s35,计算当前记录指针的总数量,即k=k+1,执行步骤s17。

本实施例中,便于对记录指针在记录指针区的擦写,有效提高记录指针区的空间利用率,简单快捷。

如图5所示,在一个可选实施例中,还包括在步骤s23前的以下步骤:

步骤s36,若k>p或k=p,执行步骤s37,反之执行步骤s38;

步骤s37,从记录指针区的首地址开始写入记录指针,写入记录指针前先擦除h长度的记录指针区,且将k赋值为1,执行步骤s23;

步骤s38,从上次记录指针的地址后面继续写入记录指针,写入记录指针前先擦除h长度的记录指针区;

步骤s39,计算当前记录指针的总数量,即k=k+1,执行步骤s23。

本实施例中,便于对记录指针在记录指针区的擦写,有效提高记录指针区的空间利用率,简单快捷。

本发明实施例通过每次开机后首先提取记录指针,采用查询的方式,即按记录指针的字节长度逐段读取flash记录指针区,每读取一段判断有效指针标识,正确则该指针有效,然后根据该指针判断上次保存的数据记录的地址。

在本说明书的描述中,参考术语“一个实施方式”、“一些实施方式”、“一个实施例”、“一些实施例”、“在一个可选实施例中”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1