数据存储的处理方法及装置与流程

文档序号:11829479阅读:152来源:国知局
数据存储的处理方法及装置与流程

本发明涉及通信领域,具体而言,涉及一种数据存储的处理方法及装置。



背景技术:

在嵌入式产品开发应用中,经常会遇到一些相对独立且关键的少量数据的存储需求,这些数据有些涉及到系统正常启动、版本更新的关键参数,有些是系统不同阶段代码用来同步某种操作的关键标志。因为这些数据在系统的引导阶段就有读写的需求,故不能使用操作系统下各种成熟的文件系统来存取。所以如何基于嵌入式系统中常用的nand、nor等flash设备,设计出能够满足这种数据存储要求的高效、可靠的存储系统是一件非常有意义的事情。

能够满足上述数据存取要求的一种简单做法,就是采用flash双block备份的方案,这种方案下,在保存数据的时候,会先后将数据存储在至少两个不同的block块中,以解决像nand这种flash会产生坏块的数据备份问题,同时因为写入是分先后的,这样也保证了即使在写过程中发生了极端的掉电异常,系统中也至少会存有一份旧的完整数据,以保证后续整个系统的正常引导和运行。

虽然该方案可以满足存储需求,但明显存在一些不合理的设计且效率低下。总结有以下缺点:

flash块擦除过于频繁,每一次写入都需要将块擦除,会降低flash使用寿命;

该需求下的数据存储容量往往只占flash block块容量极少的部分,导致每块block有大量剩余存储空间的浪费;

由于读写都必须实际操作flash物理设备,数据的存取效率不高,特别是其写入过程,都是多份数据的备份写入,且写入之前都必须对flash block块进行擦除操作,占用较多的cpu时间,导致数据存储效率低下。

针对相关技术中嵌入式产品的flash块的使用寿命短,存取效率低,存储空间利用低的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明提供了一种数据存储的处理方法及装置,以至少解决相关技术中嵌入式产品的flash块的使用寿命短,存取效率低,存储空间利用低的问题。

根据本发明的一个方面,提供了一种数据存储的处理方法,包括:擦除flash存储空间上的分区;在所述分区上存储与数据对应的数据块;在更新所述数据的

情况下,在所述分区上依次写入与更新的所述数据对应的数据块;在所述分区写满数据块的情况下,擦除所述分区。

进一步地,所述数据块包括:数据块标记符、关键数据、校验值;其中,所述数据块标记符用于指示更新数据时的数据块物理地址;以及,所述数据块标记符用于指示可写数据块的物理地址。

进一步地,所述方法还包括:根据所述数据块标记符在所述分区中查找更新的数据块所在flash中的物理地址;在查找到的情况下,向内存申请所述更新数据块大小的空间;在申请成功的情况下,根据所述物理地址读取所述更新的数据块至内存中。

进一步地,所述方法还包括:根据所述数据块标记符在所述分区中查找更新的数据块所在flash中的物理地址;在没有查找到的情况下,对所述分区做一次性擦除;用缺省值初始化所述更新的数据块对应的内存。

进一步地,所述方法还包括:根据所述数据块标记符记录的更新可写物理地址,判断所述分区中是否能够容纳更新的数据块;在所述分区剩余存储空间足够的情况下,将所述更新的数据块写到所述更新可写物理地址上。

进一步地,所述将所述更新的数据块写到所述更新可写物理地址上包括:将同步内存上的所述更新的数据块写到所述更新可写物理地址上。

进一步地,所述方法还包括:根据所述数据块标记符记录的更新可写物理地址,判断所述分区中是否够写下更新的数据块,在所述分区剩余存储空间不足够的情况下,擦除所述分区。

进一步地,所述分区以物理的block大小为单位。

进一步地,所述擦除所述分区包括:首先擦除所述分区第一个block,将所述更新的数据对应的数据块写入所述第一个block,在所述第一个block写入成功之后,再擦除所述分区中剩下的所有block。

根据本发明的另一个方面,还提供了一种数据存储的处理装置,包括:第一擦除模块,用于擦除flash存储空间上的分区;存储模块,用于在所述分区上存储与数据对应的数据块;更新模块,用于在更新所述数据的情况下,在所述分区上依次写入与更新的所述数据对应的数据块;第二擦除模块,用于在所述分区写满数据块的情况下,擦除所述分区。

进一步地,所述数据块包括:数据块标记符、关键数据、校验值;其中,所述数据块标记符用于指示更新数据时的数据块物理地址;以及,所述数据块标记符用于指示可 写数据块的物理地址。

进一步地,所述装置还包括:第一查找模块,用于根据所述数据块标记符在所述分区中查找更新的数据块所在flash中的物理地址;第一申请模块,用于在查找到的情况下,

向内存申请所述更新数据块大小的空间;第一内存模块,用于在申请成功的情况下,根据所述物理地址读取所述更新的数据块至内存中。

进一步地,所述装置还包括:第二查找模块,用于根据所述数据块标记符在所述分区中查找更新的数据块所在flash中的物理地址;第二申请模块,用于在没有查找到的情况下,对所述分区做一次性擦除;第二内存模块,用于用缺省值初始化所述更新的数据块对应的内存。

进一步地,所述装置还包括:第一判断模块,用于根据所述数据块标记符记录的更新可写物理地址,判断所述分区中是否能够容纳更新的数据块;第一写入模块,用于在所述分区剩余存储空间足够的情况下,将所述更新的数据块写到所述更新可写物理地址上。

进一步地,所述第一写入模块还用于将同步内存上的所述更新的数据块写到所述更新可写物理地址上。

进一步地,所述装置包括:第二判断模块,还用于根据所述数据块标记符记录的更新可写物理地址,判断所述分区中是否够写下更新的数据块,第二写入模块,还用于在所述分区剩余存储空间不足够的情况下,擦除所述分区。

进一步地,所述分区以物理的block大小为单位。

进一步地,所述第二擦除模块包括:擦除单元,用于首先擦除所述分区第一个block,将所述更新的数据对应的数据块写入所述第一个block,在所述第一个block写入成功之后,再擦除所述分区中剩下的所有block。

通过本发明,采用擦除flash存储空间上的分区;在所述分区上存储与数据对应的数据块;在更新所述数据的情况下,在所述分区上依次写入与更新的所述数据对应的数据块;在所述分区写满数据块的情况下,擦除所述分区,解决了嵌入式产品的flash块的使用寿命短,存取效率低,存储空间利用低的问题,提高了flash块的使用寿命,存取效率,存储空间利用率。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的数据存储的处理方法的流程图;

图2是根据本发明实施例的一种数据存储的处理装置的结构框图;

图3是根据本优选实施例的基于flash小容量存储系统的示意图;

图4是根据本发明优选实施例的基于flash小容量可靠存储的数据存储示意图;

图5是根据本发明优选实施例的基于flash小容量可靠存储的数据同步流程示意图;

图6是根据本发明优选实施例的基于flash小容量可靠存储的数据获取内部流程示意图;

图7是根据本发明优选实施例的基于flash小容量可靠存储的数据更新内部流程示意图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

在本实施例中提供了一种数据存储的处理方法方法,图1是根据本发明实施例的数据存储的处理方法的流程图,如图1所示,该流程包括如下步骤:

步骤S102,擦除flash存储空间上的分区;

步骤S104,在该分区上存储与数据对应的数据块;

步骤S106,在更新该数据的情况下,在该分区上依次写入与更新的该数据对应的数据块;

步骤S108,在该分区写满数据块的情况下,擦除该分区。

通过上述步骤,擦除在嵌入式设备上的的flash存储空间上的分区,存储与引导关键数据对应的数据块;在更新该数据的情况下,在该分区上依次写入与更新的该数据对应的数据块,直到个或多个该分区写满数据块的情况下,擦除该分区。

在本实施例中,该数据块包括:数据块标记符、关键数据、校验值;其中,该数据块标记符用于指示更新数据时的数据块物理地址;以及,该数据块标记符用于指示可写数据块的物理地址。

在本实施例中,可以根据上述数据块的数据块标记符来查找到更新后,最新的数据块所在的物理地址和该分区剩余的可写的物理地址,另外,根据上述所在的物理地址和 该分区剩余的可写的物理地址可以将最新的更新数据读取到内存中,优选地,根据该数据块标记符在该分区中查找更新的数据块所在flash中的物理地址;在查找到的情况下,向内存申请该更新数据块大小的空间;在申请成功的情况下,根据该物理地址读取该更新的数据块至内存中。

另外,根据该数据块标记符在该分区中查找更新的数据块所在flash中的物理地址;在没有查找到的情况下,对该分区做一次性擦除;用缺省值初始化该更新的数据块对应的内存。

在本实施例中,可以根据该数据块标记符记录的更新可写物理地址,判断该分区中是否能够容纳更新的数据块,在该分区剩余存储空间足够的情况下,将该更新的数据块写到该更新可写物理地址上,其中,可以将将同步内存上的该更新的数据块写到该更新可写物理地址上,若在该分区剩余存储空间不足够的情况下,擦除该分区。

上述实施例中,该分区以物理的block大小为单位。并且在擦除该分区的方式可以有很多种,例如:可以首先擦除该分区第一个block,将该更新的数据对应的数据块写入该第一个block,在该第一个block写入成功之后,再擦除该分区中剩下的所有block。

在本实施例中还提供了一种数据存储的处理装置,,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图2是根据本发明实施例的一种数据存储的处理装置的结构框图,如图2所示,该装置包括:

第一擦除模块22,用于擦除flash存储空间上的分区;

存储模块24,用于在该分区上存储与数据对应的数据块;

更新模块26,用于在更新该数据的情况下,在该分区上依次写入与更新的该数据对应的数据块;

第二擦除模块28,用于在该分区写满数据块的情况下,擦除该分区。

通过上述装置,擦除在嵌入式设备上的的flash存储空间上的分区,存储与引导关键数据对应的数据块;在更新该数据的情况下,在该分区上依次写入与更新的该数据对应的数据块,直到个或多个该分区写满数据块的情况下,擦除该分区。

在本实施例中,该数据块包括:数据块标记符、关键数据、校验值;其中,该数据块标记符用于指示更新数据时的数据块物理地址;以及,该数据块标记符用于指示可写数据块的物理地址。

在本实施例中,该装置还包括:

第一查找模块,用于根据该数据块标记符在该分区中查找更新的数据块所在flash中的物理地址;

第一申请模块,用于在查找到的情况下,向内存申请该更新数据块大小的空间;

第一内存模块,用于在申请成功的情况下,根据该物理地址读取该更新的数据块至内存中。

在本实施例中,该装置还包括:

第二查找模块,用于根据该数据块标记符在该分区中查找更新的数据块所在flash中的物理地址;

第二申请模块,用于在没有查找到的情况下,对该分区做一次性擦除;

第二内存模块,用于用缺省值初始化该更新的数据块对应的内存。

在本实施例中,该装置还包括:

第一判断模块,用于根据该数据块标记符记录的更新可写物理地址,判断该分区中是否能够容纳更新的数据块;

第一写入模块,用于在该分区剩余存储空间足够的情况下,将该更新的数据块写到该更新可写物理地址上。

该第一写入模块还用于将同步内存上的该更新的数据块写到该更新可写物理地址上。

在本实施例中,该装置包括:

第二判断模块,还用于根据该数据块标记符记录的更新可写物理地址,判断该分区中是否够写下更新的数据块,

第二写入模块,还用于在该分区剩余存储空间不足够的情况下,擦除该分区。

在本实施例中,该分区以物理的block大小为单位。

该第二擦除模块28包括:擦除单元,用于首先擦除该分区第一个block,将该更新的数据对应的数据块写入该第一个block,在该第一个block写入成功之后,再擦除该分区中剩下的所有block。

下面结合优选实施例对本发明进行详细说明。

实施例1

本优选实施例开发的Flash小容量数据存储系统都有针对性的改进和解决,其最大的区别是不再使用多block备份的机制,而是采用在全部存储空间中程控循环写入的机 制,具体有以下几个方面的改进:

对分配的flash存储空间做统筹擦除动作,在数据写入前对所有block块进行一次擦除,以后也只在存储空间写满数据后做一次集中擦除动作,所以极大的减少了flash块的擦除频度;

最大化的利用分配的flash存储空间,数据存储不再是以block块为单位,而是将block存储空间作统一集中管理,存储时会根据数据大小及存储空间当前的使用情况自动计算找到新的存储位置,从该位置处更新数据,实现顺序循环写入控制;

极大的提高了数据读写效率。数据存储的过程得到了简化处理,写入前不再需要执行擦除动作,同时写入的数据量即是实际需要保存的数据,不再有块操作时的大量冗余、无效数据的写入;在读取数据的时候,也不再需要去实际操作flash,而是直接从跟flash最新存储的数据同步的内存空间中取出即可。

本优选实施例的方法包括如下步骤:

步骤1,flash存储空间可划分为一个至多个分区,分区以物理的block大小为单位,用于存储不同结构的关键小数据块。

步骤2,每个分区为一段独立的存储空间,用于存放特定结构的数据块。分区只在第一次写入数据前对整个分区所有block进行一次擦除。数据有更新,则直接将新的数据块依次往后写入。

步骤3,获取分区中关键数据前,先索引到最新的数据块所在的flash中的物理位置,并读取数据至内存中。

步骤4,获取分区中关键数据时,直接从内存读取返回。

步骤5,更新分区中关键数据时,先修改内存中数据块,后同步将新的数据块写到flash中新的物理地址,即存入最新的数据块。

步骤6,若在更新数据块时,分区存储空间已满,则重新从分区起始地址开始存储。首先擦除第一个block,将新的数据块写入第一个block,成功之后再擦除分区余下的所有block。

根据上述优选实施例的方法,该步骤实现了嵌入式flash设备数据可靠存储。

实施例2

图3是根据本优选实施例的基于flash小容量存储系统的示意图,如图3所示,该实施例包括访问模块10、访问模块11、访问模块12、本发明实施例的系统13、存储设备18,其中:

访问模块11是嵌入式系统中获取关键数据的进程;本发明实施例系统为基于flash 小容量数据可靠存储方法,包括同步功能14、读功能15、写功能16和擦除功能17;存储设备18则是flash存储芯片。

图4是根据本发明优选实施例的基于flash小容量可靠存储的数据存储示意图,如图4所示,整个flash设备可以根据需求划分为大小不一的分区;分区是以存储单元block为单位,分区是由多个存储单元block组成的,依赖于本系统管理的分区至少需要2个block;数据块(DataStruct)则为实际存储关键小数据的数据块,包含数据结构唯一标记符、关键小数据、校验值。系统根据唯一标记符循环往后查找最新的关键数据的DataStruct以及写新的关键数据时的物理地址。

图5是根据本发明优选实施例的基于flash小容量可靠存储的数据同步流程示意图。如图5所示,该流程如下:

步骤S501,嵌入式系统上电工作。

步骤S502,系统中有进程需要访问依赖于本系统管理的分区中的数据,访问之前先调用本发明实施例提供的初始化接口。

步骤S503,本发明实施例的初始化工作主要是根据唯一标记符从该分区起始地址循环往后查找最新的数据块。

步骤S504,若找到最新的数据块,则记录最新的可写新数据的物理地址。

步骤S505,本发明实施例在内存中申请关键数据大小的空间,用于存放从flash中获取的最新的数据,实现flash与内存的数据同步。

步骤S506,若本发明实施例在第1个block和第2个block均没有找到唯一标记符,则认为该分区中没有有效数据。本发明系统对整个分区的所有block做一次性擦除,之后只顺序往后写,不擦,直到写满分区之后重新擦除。

步骤S507,若没有有效数据,则用缺省值初始化内存空间的数据。

图6是根据本发明优选实施例的基于flash小容量可靠存储的数据获取内部流程示意图,如图6所示,该流程如下:

步骤S601,嵌入式系统中的进程需要获取访问依赖于本系统管理的分区中的数据,需要调用本发明实施例提供的读接口。

步骤S602,本发明实施例的读接口直接从该分区同步的内存空间中获取数据。

步骤S603,本系统的读接口将结果返回给访问模块。

图7是根据本发明优选实施例的基于flash小容量可靠存储的数据更新内部流程示意图,如图7所示,该流程如下:

步骤S701,嵌入式系统中的进程需要更新访问依赖于本系统管理的分区中的数据,需要调用本发明实施例提供的写接口;

步骤S702,本发明实施例的写接口先更新与该分区同步的内存空间中的数据;

步骤S703,本发明实施例的写接口根据记录的flash的可写物理地址判断分区剩余空间是否够写入一个新的数据块;

步骤S704,若分区剩余存储空间足够,则本发明实施例的写接口将同步内存中的数据及唯一标记符写到该物理地址;

步骤S705,本发明实施例给访问模块返回结果;

步骤S706,若分区剩余存储空间不够,本发明实施例将擦除分区的第一个block,并将同步内存中的数据及唯一标记符写到第一个block的起始地址;

步骤S707,写成功后,再将分区剩余的所有block一次性擦除;

步骤S708,本发明实施例给访问模块返回结果。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例该的方法。

可选地,存储介质还被设置为存储用于执行上述实施例步骤的程序代码:

可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述实施例的方法。

显然,本领域的技术人员应所述明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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