基于flash设备的数据存储管理方法及装置与流程

文档序号:17488216发布日期:2019-04-23 20:09阅读:178来源:国知局
基于flash设备的数据存储管理方法及装置与流程

本发明涉及数据存储方法,尤其涉及一种基于flash设备的数据存储管理方法、电子设备及存储介质。



背景技术:

目前,嵌入式系统的概念范围很广,现有市场上所有的电子设备都可以看作为嵌入式系统,如手机、平板、仪器仪、表等。在嵌入式产品开发时,需要根据不同的应用场景将相应参数保存到系统中,例如本机唯一标识符、mac地址、用户名密码等信息。嵌入式系统根据复杂度可大致分为两种,mcu平台系统和mpu平台系统。mpu(microprocessorunit),该平台特点为cpu主频高,需要外接内存,能运行大型操作系统及数据库,一般基于嵌入式linux、android等系统并配合数据库使用,产品相关信息可以通过数据库保存,管理方便,后期扩展性高。而mcu(microcontrollerunit),该平台特点为cpu主频较低,存储空间和芯片代码空间等资源少,无法运行大型操作系统及数据库,一般基于裸机开发或者微内核操作系统开发,产品相关信息只能保存在mcu内部存储设备或外界eeprom。然后对于基于mcu平台的嵌入式系统,由于其存储策略为将关键参数按顺序保存在芯片内部flash或者eeprom等设备中,通过起始地址加偏移量的方式来存放不同参数,由此形成一张系统参数配置表。但是这种是采用线性存储的方法,即每个参数通过偏移地址和预先设计的长度进行保存,由于参数长度确定并且为顺序存储,造成参数长度不可变,后期扩展时会覆盖相邻的参数,造成数据的丢失,同时浪费存储空间。同时,上述存储方法也不具备统一管理及版本管理的概念,只是单纯的数据堆砌,无法实现对参数的删除、增加、长度扩展等操作,造成其扩展性差、不灵活、可维护性差等问题。



技术实现要素:

为了克服现有技术的不足,本发明的目的之一在于基于flash设备的数据存储管理方法,其能够解决现有的嵌入式系统的数据存储其扩展性差、不灵活、可维护性差等问题。

本发明的目的之二在于一种电子设备,其能够解决现有的嵌入式系统的数据存储其扩展性差、不灵活、可维护性差等问题。

本发明的目的之三在于一种计算机可读存储介质,其能够解决现有的嵌入式系统的数据存储其扩展性差、不灵活、可维护性差等问题。

本发明的目的之一采用如下技术方案实现:

基于flash设备的数据存储管理方法,包括配置表初始化流程,该配置表初始化流程具体包括以下步骤:

标识符判断步骤:若flash存储设备中的配置表存在,并且该配置表的表头信息中也存在特殊标识符时,执行版本判断步骤;否则,执行配置表更新步骤;

版本判断步骤:读取该配置表的表头信息中的配置表版本,并判断该配置表版本与系统默认配置表版本是否一致,若是,则执行数据校验步骤;若否,则执行配置表更新步骤;

数据校验步骤:读取该配置表的表头信息中的表头校验,并根据该表头校验对该配置表的表头信息进行校验;当校验不通过时,执行配置表更新步骤;

配置表更新步骤:擦除flash存储设备,根据系统默认配置表更新flash存储设备中的配置表。

进一步地,配置表的表头信息包括特殊标识符、配置表长度、配置表版本和表头校验;其中,特殊标识符用于标识配置表的开头;配置表长度用于记录配置表的总长度;配置表版本用于标识配置表的版本信息;表头校验用于校验表头信息的数据是否异常。

进一步地,flash存储设备中的配置表的信息包括表头、参数表和配置表校验;所述配置表校验用于校验该配置表的信息的数据是否异常。

进一步地,所述参数表包括至少一个表项,每个表项由偏移地址与预设长度来确定在对应参数表中的位置和大小。

进一步地,每个参数按照不同的需求划分不同的等级,并按照等级将其存储于对应类型的参数表中。

进一步地,参数表的类型包括一般参数表和特殊参数表。

进一步地,还包括参数更新流程,该参数更新流程具体包括以下步骤:

获取步骤:获取待更新配置表的表头信息;

判断步骤:读取待更新配置表的表头信息,并且当待更新配置表的表头信息中存在特殊标识符时,则执行位置获取步骤;

位置获取步骤:获取flash存储设备中上一个配置表写入的物理位置,并判断该物理位置是否为flash存储设备的结束位置,若是,则执行重写步骤;若否,则执行配置表更新步骤;

配置表更新步骤:根据物理位置将待更新配置表的写入到flash存储设备的对应位置;

重写步骤:擦除flash,并将待更新配置表写入到flash存储设备的开始位置。

本发明的目的之二采用如下技术方案实现:

一种电子设备,包括存储设备、处理器以及存储在存储设备上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明目的之一采用的基于flash设备的数据存储管理方法的步骤。

本发明的目的之三采用如下技术方案实现:

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如本发明目的之一采用的基于flash设备的数据存储管理方法的步骤。

相比现有技术,本发明的有益效果在于:

本发明通过引入参数表概念等对配置表的参数结构进行改变,并利用flash存储设备来存储配置表,可实现了对于嵌入式系统的参数配置管理,使得基于mcu平台开发的嵌入式系统具备了高扩展性、高稳定性以及高可维护性。

附图说明

图1为本发明提供的flash存储设备的配置表结构示意图;

图2为表头的结构示意图;

图3为参数表的结构示意图;

图4为本发明提供的配置表初始化流程示意图;

图5为本发明提供的参数更新流程示意图。

具体实施方式

下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。

本发明通过引入参数表概念和版本管理策略,并基于flash存储设备的特点,进而实现了对于嵌入式系统的参数配置管理,使得基于mcu平台开发的嵌入式系统具备了高扩展性、高稳定性以及高可维护性。

一般来说,在mcu设备内部都集成了flash存储设备,通过该flash存储设备存储程序代码,或者通过专用flash存储设备存储用户参数。另外,如果不使用flash存储设备存储参数时,就需要外接eeprom存储设备来存储。但是,无论是在mcu设备内部集成flash存储设备还是外接eeprom存储设备,其对于数据存储均是采用线性存储的方法,即每个参数通过偏移地址和预先设计的长度进行保存,由于参数长度确定并且为顺序存储,造成参数长度不可变,后期扩展时会覆盖相邻的参数,造成数据的丢失,同时浪费存储空间。

因此,本发明根据实际产品的开发,并结合flash存储设备的特点,对参数表的结构进行了重新配置。

如图1所示:整个配置表分为表头、参数表和配置表校验。

其中,表头描述了整个配置表的关键信息。参数表可以有多个,参数内容按照需求进行等级分类并存储于对应类型的参数表中,比如将参数表的类型分为特殊参数表和一般参数表。配置表校验是针对整个配置表的信息进行数据校验。

如图2所示为表头结构图,表头信息包括特殊标识符、配置表长度、配置表版本和表头校验。其中,特殊标识符为自定义的一组特殊字符,用于标识整份参数配置表的开头,便于程序查找与遍历配置表在flash存储设备中的存储位置;配置表长度表示配置表的总长度;配置表版本用于标识当前整份配置表的版本信息,用于配置表更新时的版本比较、更新的依据;表头校验用于校验表头信息的数据是否异常。

如图3所示为参数表的结构设计示意图,其中参数内容按照需求进行等级分类。比如在实际使用中,某些参数时一次写入后就宣布更新或者由于版本升级而需要更新配置表时,这类参数仍需要保持上一次状态,那么该参数就不能覆盖。因此考虑到这一些,对参数表进行等级划分,并且设计一定算法,当版本更新时,不会覆盖该区域的特殊参数表。另外,通过参数表的这种设置,还可以通过在系统中设置相应的读写权限,这样就可以在更新时只写入相应的参数。

其中,每份参数表的设计一致,按照需求将相同类型数据进行归类,并存储于对应类型的参数表内。例如以网络参数表为例,表项可分为apn名、apn密码、ip、端口。每个表项由偏移地址与预设长度确定在表中的位置与大小。

根据配置表的结构,并结合实际的应用场景设计了一套接口和方法,方便与上层应用程序进行对接,对配置表的操作设计了三个接口initialize、write、read。该三个接口分别实现了配置表初始化流程、配置表的参数更新流程、配置表的读取流程。

其中配置表的读取流程较为简单,只需要在flash存储设备中查找到相应的配置表,并读取到相应的配置表参数即可。本发明着重介绍配置表的初始化流程以及参数更新流程,具体详细流程如下:

本发明提供针对嵌入式系统的数据存储管理方法,即基于flash设备的数据存储管理方法,包括配置表的初始化流程,具体包括如下步骤:

对于首次使用的flash存储设备来说,由于flash存储设备中的配置表是不存在的或者其配置表的信息数据为空时,查找不到配置表的表头信息中特殊标识符,在此情况下将flash存储设备进行擦除处理,并根据系统默认配置表来更新flash存储设备中的配置表的数据,并将其作为第一记录点。

当然,若flash存储设备并不是首次使用,在更新配置表的整个版本时,首先查找flash存储设备中的配置表,然后读取该配置表中的表头信息并判断表头信息中是否特殊标识符;若不存在,则获取系统默认配置表并根据系统默认配置表直接更新flash存储设备中的配置表。

若存在,则继续判断该表头信息中的配置表版本是否与系统默认配置表版本是否一致;

若版本一致,则继续进行数据校验,也即是根据表头信息中的表头校验来对配置表的表头信息进行数据校验。

若版本不一致,则获取系统默认配置表,并根据系统默认配置表来更新flash存储设备中的配置表。

另外,在对表头信息进行数据校验时,若校验不通过,则同样地根据系统默认配置表更新flash存储设备中的配置表。另外,在更新flash存储设备时,还需要先擦除flash存储设备中数据,然后在根据系统默认配置表来更新flash存储设备中的配置表。

如图4所示,初始化流程具体包括以下步骤:

步骤s11:当flash存储设备中的配置表存在,并且该配置表的表头信息中也存在特殊标识符时,执行步骤s14,否则,执行步骤s12。

当flash存储设备设备首次使用时,flash存储设备内不存储任何数据,或者flash存储设备所存储的配置表的数据为空等等,也即不存在特殊标识符,因此,直接根据系统默认配置表来配置flash存储设备的配置表即可。

若flash存储设备并非首次使用时,其flash存储设备内可能均在旧的配置表,因此表头信息中会存在特殊标识符,则需要对配置表的表头信息中的版本进行判断,看是否一致。

步骤s12:读取该配置表的表头信息中的配置表版本,并判断该配置表版本与系统默认配置表版本是否一致,若是,则执行步骤s13;若否,则执行步骤s14。

当每次需要更新配置表时,都是将最新版本的配置表预先存储于系统中,并设置为系统默认配置表。这样,若读取到的配置表版本与系统默认的不一致,则说明flash存储设备中的配置表需要更新。

步骤s13:读取该配置表的表头信息中的表头校验,并根据该表头校验对该配置表的表头信息进行数据校验;当校验不通过时,执行步骤s14。当校验通过时,可执行其他操作,比如读配置表数据。

步骤s14:获取系统默认配置表。

步骤s15:擦除flash存储设备,并根据系统默认配置表更新flash存储设备中的配置表。

本发明还提供了另一实施方式,write接口是用于更新配置表的参数项。由于flash存储设备的特点,每一次写入数据都是从上一次写入的结尾部分开始。因此,当需要更新配置表中某一项参数时,首先需要查找到flash存储设备上一次写入的记录点,然后再将更新的配置表写到flash存储设备。

如图5所示,配置表的参数更新流程具体包括以下步骤:

步骤s21:获取待更新配置表的表头信息

步骤s22:读取待更新配置表的表头信息并判断是否存在特殊标识符,当待更新配置表的表头信息存在特殊标识符时,则执行步骤s23。

步骤s23:获取flash存储设备中上一个配置表写入的物理位置,并判断该物理位置是否为flash存储设备的结束位置,若是,则执行步骤s24;若否,则执行步骤s25。

步骤s24:擦除flash,并将待更新配置表写入到flash存储设备的开始位置。

步骤s25:根据物理位置将待更新配置表的写入到flash存储设备的对应位置。

另外,对于配置表的读取流程,直接读取相应的配置表的数据即可,不会涉及到flash存储设备的擦写等问题。

本发明的关键点在于通过对参数配置表版本的设置、参数表权限控制以及flash写均衡。

首先,本发明通过将参数信息作为一个表进行管理,将配置表分为三个部分,即表头、参数表和配置表校验。

表头作为关键部分,记录参数表的关键信息,如长度、版本等。

参数按照重要性、范围、类别等要素需求进行分类管理,形成一个个独立的参数表,分别存储到不同的参数表内。

配置表校验是考虑到flash存储设备存在位反转的问题,因此从flash读取参数表后,需要对配置表中的参数数据内容做数据校验,确定数据无误。

其次,对于配置表的版本管理:通过在表头中加入了配置表版本这一关键信息。由于嵌入式产品在其生命周期中会根据需求再做不断的功能调整和维护升级,增加参数或者修改参数时非常频繁的。现有做法无法自由扩展单个参数长度,只能在整个配置表后续部分添加要扩充的长度,非常不方便。

本发明采用如下方法:当需要更新参数表的数据时,例如扩展长度,同时需要更新表头中的配置表版本;这样一来,程序一更新,运行时会对比更新后的配置表版本及flash中的配置表版本,如果版本不一致,将会更新flash中的配置表。通过本发明的这种机制,达到随意修改配置表内容的目的,提高了可扩展性。

再次,对于参数表权限控制:本发明是通过一定算法支持对不同重要等级的参数表按照不同策略进行更新。考虑到嵌入式产品的实际应用场景,部分参数只需写入或者需重复更新但又必须保存的。例如ip、端口这类信息,客户设置完成后,希望能长期保存在系统内部,除非下次更改。因而本发明设计了参数表权限控制功能,将flash分为不同存储区,设计不同读写权限,通过标志位进行标记。在更新配置表时,通过判断对应的标记位,执行对应的权限管理程序,提高整个配置表管理的灵活度。

最后flash的读写均衡:由于flash存储设备存在擦除/写入次数限制,一般只有8w~10w次,也就是说flash存储设备存在使用寿命。在实际的使用情况分析来看,用户更新产品配置表参数的次数平均每天50次。由于flash存储设备写入次数频繁,会导致flash存储设备的使用寿命会缩短。

因此,本发明在通过flash存储设备写入时,以块为单位进行,写入操作以页为单位进行,一块为16页。更新配置表时,以页为单位进行操作,每次写入时,便利flash并查找到上一个记录点,之后顺序写入写一页,当flash都写满的时候,再擦除一次,并循环从头记录。

按照一般的计算来说,产品使用寿命约为5年;而通过本发明可大大降低了flash存储设备的擦除/写入次数,延长产品使用寿命。

本发明还提供了一种电子设备,其包括存储器、处理器以及存储在存储器上并可在处理上运行的计算机程序,所述处理器执行所述程序时实现如文中所述基于flash设备的数据存储管理方法的步骤。

本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如文中所述基于flash设备的数据存储管理方法的步骤。

上述实施方式仅为本发明的优选实施方式,不能以此来限定本发明保护的范围,本领域的技术人员在本发明的基础上所做的任何非实质性的变化及替换均属于本发明所要求保护的范围。

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