一种先入先出的FLASH数据存储方法、系统及终端与流程

文档序号:19679552发布日期:2020-01-14 17:09阅读:354来源:国知局
一种先入先出的FLASH数据存储方法、系统及终端与流程

本发明涉及汽车电子和车联网技术领域,具体涉及一种先入先出的flash数据存储方法、系统及终端。



背景技术:

在汽车电子和车联网领域,tbox行车盒子设备会实时把产生的数据上报给远程服务器。但是当无线网络不畅通的时候,需要将期间产生的数据临时以循环覆盖方式保存在设备上的flash存储芯片上。flash存在擦写次数限制,这就需要一套合理的策略来使用flash,否则就会因为部分页面过早损坏而导致整片故障。

现有技术中对flash管理的策略包括fat等文件系统;它们未能很好地使flash存储器各个块均匀使用,导致部分块早衰;另外,管理部分的内容占用的空间比重过大,挤占了数据存储的空间。

为解决上述问题,本发明提供了一种先入先出的flash数据存储方法、系统及终端。



技术实现要素:

本发明解决的技术问题是,提供了一种先入先出的flash数据存储方法、系统及终端。所述的一种先入先出的flash数据存储方法、系统及终端能够使flash存储器各个块均匀使用,导致部分块早衰。

为了解决上述技术问题,本发明提供的技术方案为:

一种先入先出的flash数据存储方法,包括:

定义一种变长的数据块;

查找空白区域,将数据块写入空白区域的最前端,并标记为有效;

写入完成后读回检查是否写入成功;

若不成功,将整块数据区重新写为0;

若成功,将再录入数据顺延写入下一个空白区域。

优选地,所述的数据块的组成为:一个指定内容的开头、中间包含数据块的总长度、数据块的有效标志、数据内容,以数据校验码结尾。定义一种数据块的优点在于,方便数据的插入,通过查找数据块,便于实现查找过程。

优选地,所述的数据存储方法还包括数据的读取过程,所述的数据读取过程包括:

查找最先写入并标记为有效的数据块;

将其标记为无效并校验是否修改成功;

若未更改成功,将整块数据区重写为0;

若标记成功,继续读取后面的有效数据。

进一步优选地,所述的数据的写入与读取都包含查找的过程,所述的查找的过程具体为确定flash存储器当前的情况:

读取flash存储器头部一部分数据,记为dh;存储器末端向前读取一部分数据,记为dt;判断dh与dt的使用情况。其中,所述的一部分数据的长度为一个数据块的最大有效长度。

进一步优选地,所述的判断dh与dt的使用情况具体为:

若dh未使用,且dt未使用,写入到头部,无可读取数据;

若dh未使用,且dt已使用,写入到头部,读取时从头到尾搜索第一块有效数据;

若dh已使用,且dt未使用,从头部开始搜索空白区域写入,从头部开始读取有效数据;

若dh已使用,且dt已使用,从头部开始搜索空白区域写入,读取时,判断第一数据块标志是否为有效,若标记为是,从尾到头搜索有效数据,若标记为否,从头到尾搜索有效数据。系统通过这样的查找方法能够实现flash存储器的合理且均匀的使用,防止部分块早衰。

进一步优选地,所述的查找的过程中遇到坏块时,将整个区域重新写入为0。

进一步优选地,所述的查找后,确定了写入点和读取点以后,将写入点和下次读取点保存到内存变量,当再次写入或读取时直接使用。此时下次写入或查找时直接使用并调整,避免再次的查找。

一种先入先出的flash数据存储系统,包括:

定义模块:所述的定义模块用于定义一种变长的数据块;

查找模块:所述的查找模块用于查找空白区域,将数据块写入空白区域的最前端,并标记为有效;

判断模块:所述的判断模块用于写入完成后读回检查是否写入成功;若不成功,将整块数据区重新写为0;若成功,将再录入数据顺延写入下一个空白区域。

优选地,所述的定义模块用于定义一种变长的数据块,所述的数据块的组成为:一个指定内容的开头、中间包含数据块的总长度、数据块的有效标志、数据内容,以数据校验码结尾。

优选地,所述的存储系统还包括数据的读取模块,所述的数据读取模块的读取过程包括:

查找最先写入并标记为有效的数据块;

将其标记为无效并校验是否修改成功;

若未更改成功,将整块数据区重写为0;

若标记成功,继续读取后面的有效数据。

进一步优选地,所述的数据的系统还包括查找模块,所述的查找模块的查找过程具体为确定flash存储器当前的情况:

读取存储器头部一部分数据,记为dh;存储器末端向前读取一部分数据,记为dt;判断dh与dt的使用情况。

进一步优选地,所述的判断dh与dt的使用情况具体为:

若dh未使用,且dt未使用,写入到头部,无可读取数据;

若dh未使用,且dt已使用,写入到头部,读取时从头到尾搜索第一块有效数据;

若dh已使用,且dt未使用,从头部开始搜索空白区域写入,从头部开始读取有效数据;

若dh已使用,且dt已使用,从头部开始搜索空白区域写入,读取时,判断第一数据块标志是否为有效,若标记为是,从尾到头搜索有效数据,若标记为否,从头到尾搜索有效数据。通过上述的这种查找方法能够存储器各个块均匀的使用,从而防止存储器早衰。

进一步优选地,所述的查找模块在查找的过程中遇到坏块时,将整个区域重新写入为0。

进一步优选地,所述的查找后,确定了写入点和读取点以后,将下次写入点和下次读取点保存到内存变量,当再次写入或读取时直接使用。

一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序指令,该程序指令适于由处理器加载并执行一种先入先出的flash数据存储方法。

一种移动终端,包括处理器以及存储器,所述的处理器用于执行存储器中存储的程序,以实现一种先入先出的flash数据存储方法。

与现有技术相比,本发明具有的有益效果为:通过本发明所述的方法能够很好的使flash存储器各个块均匀的使用,防止部分块早衰,同时防止管理部分的内容占用的空间比重过大,挤占了数据存储的空间。设备通过此算法能够使整个存储器的每一个块都均衡擦除使用,并且能有效跳过坏块,保证数据的安全性。

附图说明

下面结合附图和实施例对本发明进一步说明。

图1是本发明所述的一种先入先出的flash数据存储方法的流程示意图;

图2是本发明所述的一种先入先出的flash数据存储系统的结构图。

具体实施方法

现在结合附图对本发明作进一步详细的说明。这些附图均为简化的示意图,仅以示意方法说明本发明的基本流程图,因此其仅显示与本发明有关的流程。

实施例1

如图1所示,本发明是一种先入先出的flash数据存储方法,所述的方法具体为:

s1.定义一种变长的数据块;

s2.查找空白区域,将数据块写入空白区域的最前端,并标记为有效;

s3.写入完成后读回检查是否写入成功;

s4.若不成功,将整块数据区重新写为0;

s5.若成功,将再录入数据顺延写入下一个空白区域。

所述的数据的存储过程包括:

步骤s1:定义一种变长的数据块,所述的数据块的组成为:一个指定内容的开头、中间包含数据块的总长度、数据块的有效标志、数据内容,以数据校验码结尾。

步骤s2:查找空白区域,将数据块写入空白区域的最前端,并标记为有效,所述的在写入之前对整个flash存储器进行查找。

步骤s3:写入完成后读回检查是否写入成功;

步骤s4:若不成功,将整块数据区重新写为0;

步骤s5:若成功,将再录入数据顺延写入下一个空白区域。

实施例2

所述的一种先入先出的flash数据存储方法还包括数据的读取过程,所述的数据读取过程包括:

查找最先写入并标记为有效的数据块;

将其标记为无效并校验是否修改成功;

若未更改成功,将整块数据区重写为0;

若标记成功,继续读取后面的有效数据。

所述的数据的写入与读取都包含查找的过程,所述的查找的过程具体为确定flash当前的情况:

读取存储器头部一部分数据,记为dh;存储器末端向前读取一部分数据,记为dt;判断dh与dt的使用情况,其中,所述的一部分数据定义的长度为,一个数据块的最大有效长度。

所述的判断dh与dt的使用情况可分为四种,所述的使用情况具体为:

(1)若dh未使用,且dt未使用,表示存储器为空,即未写过数据。针对这种情况,写入数据时写入到头部,读取数据时无可读取数据。

(2)若dh未使用,且dt已使用,表示存储器前面部分为空,后面部分写满数据。针对这种情况,写入数据时写入到头部,之后若空白区域用完,擦除下一块区域为空白区域,以备下一次的写入,读取时从头到尾搜索第一块有效数据。

(3)若dh已使用,且dt未使用,表示存储器前面部分写满数据,后面部分为空。针对这种情况,写入数据时,写入时从尾到头搜索空白区域,找到后把数据写入到空白区域的起始区,之后若空白区域用完,擦除下一块为空白区域以备下次写入;读取时从头读取有效数据;

(4)若dh已使用,且dt已使用,表示存储器前面部分写满数据,中间部分为空,后面部分写满数据。针对这种情况,写入时从头到尾搜索空白区域,找到后把数据写入到空白区域的起始区,之后若空白区域用完,擦除下一块为空白区域以备下次写入;读取时,先检查存储器第一块数所述的查找的过程中遇到坏块时,将整个区域重新写入为0。据标志是否为“有效”,若无效,则从头到尾搜索第一块“有效”数据并读取;若有效,则从尾到头搜索“有效”数据,遇到无效数据,即空白区域或标志非“有效”的数据停止,无效数据后面的第一块“有效”数据就是应该读取的数据。

通过上述的查找方法,能够很好的使flash存储器各个块均匀的使用,避免部分块早衰,并且合理的管理存储空间,便于数据的写入与查找。

所述的查找模块在查找的过程中遇到坏块时,将整个区域重新写入为0。

所述的查找后,确定了写入点和读取点以后,将写入点和下次读取点保存到内存变量,当再次写入或读取时直接使用。

实施例3

如图2所示,本发明提供了一种先入先出的flash数据存储系统:

定义模块1:所述的定义模块用于定义一种变长的数据块;

查找模块2:所述的查找模块用于查找空白区域,将数据块写入空白区域的最前端,并标记为有效;

判断模块3:所述的判断模块用于写入完成后读回检查是否写入成功;若不成功,将整块数据区重新写为0;若成功,将再录入数据顺延写入下一个空白区域。

所述的数据的系统还包括查找模块,所述的查找模块的查找过程具体为确定flash存储器当前的情况:

读取存储器头部一部分数据,记为dh;存储器末端向前读取一部分数据,记为dt;判断dh与dt的使用情况。

进一步优选地,所述的判断dh与dt的使用情况具体为:

若dh未使用,且dt未使用,写入到头部,无可读取数据;

若dh未使用,且dt已使用,写入到头部,读取时从头到尾搜索第一块有效数据;

若dh已使用,且dt未使用,从头部开始搜索空白区域写入,从头部开始读取有效数据;

若dh已使用,且dt已使用,从头部开始搜索空白区域写入,读取时,判断第一数据块标志是否为有效,若标记为是,从尾到头搜索有效数据,若标记为否,从头到尾搜索有效数据。

所述的查找模块在查找的过程中遇到坏块时,将整个区域重新写入为0。

本发明还包括一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序指令,该程序指令适于由处理器加载并执行一种先入先出的flash数据存储方法。

本发明还包括一种移动终端,包括处理器以及存储器,所述的处理器用于执行存储器中存储的程序,以实现一种先入先出的flash数据存储方法。

上列详细说明是针对本发明可行实施例的具体说明,以上实施例并非用以限制本发明的专利范围,凡未脱离本发明所为的等效实施或变更,均应包含于本案的专利范围中。

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