System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种可扩展存储结构体的构建及数据读取方法技术_技高网

一种可扩展存储结构体的构建及数据读取方法技术

技术编号:43131654 阅读:3 留言:0更新日期:2024-10-29 17:38
本发明专利技术属于嵌入式系统数据存储技术领域,具体涉及一种可扩展存储结构体的构建及数据读取方法,包括定义:基础数据元素组;校验值Crc1,用于校验基础数据元素组的数据完整性;校验值Crc,用于校验包含基础数据元素组和校验值Crc1的数据完整性;扩展数据元素组,在校验值Crc1后新增至少一个扩展数据元素组;校验值Crc2,用于校验扩展数据元素组的数据完整性。在扩展存储结构体后,更新校验值Crc,使其校验包含基础数据元素组、校验值Crc1、扩展数据元素组和校验值Crc2的数据完整性。本发明专利技术中构建方法使用户可以根据需求来随时添加数据元素,且不会有老版本的数据兼容问题,且当存储空间数据被破坏时,不会导致整个数据都不可用,部分校验成功的数据是可信的。

【技术实现步骤摘要】

本专利技术属于嵌入式系统数据存储,具体涉及一种可扩展存储结构体的构建及数据读取方法


技术介绍

1、在嵌入式系统中,经常会用到结构体去存储相关的数据,在项目批产后该数据结构已经定了下来,但是往往后期在考虑扩展时,发现在同一个结构体里面已经很难添加新的元素了,因为要考虑到向前兼容的问题。通常做法是在兼容老版本软件的结构体时,先用老版本软件的结构体将相关数据读取出来,然后再赋值给新版本软件的结构体中的元素,然后重新计算crc并存储到非易失性flash中去。

2、然后上述数据结构体在添加元素时还存在如下问题:

3、1.对于整个结构体的crc一般都是存放在结构体的末尾,当结构体新增数据元素时,crc的位置会发生变化,当用新的结构体去读取老结构体数据时,计算的crc是不匹配的,导致老结构体已经正确存储的数据不可信,数据需要重新存储。

4、2.提前预留部分数据元素用以后续扩展新增数据,这样会导致浪费一部分的存储空间,这部分存储空间可能永远也用不上。


技术实现思路

1、本专利技术的目的就在于提供一种可扩展存储结构体的构建及数据读取方法,通过在现有结构体基础上增加新的数据元素及其校验值,并在读取数据时进行相应的校验处理,实现了在不改变原有数据结构的基础上,动态扩展数据元素的功能,以解决
技术介绍
中提出的问题。

2、本专利技术通过以下技术方案来实现上述目的:

3、第一方面、本专利技术提出了一种可扩展存储结构体的构建方法,所述构建方法包括定义如下数据结构:

4、至少一个基础数据元素组,所述基础数据元素组包含数据元素datax1-dataxn;

5、校验值crc1,用于校验所述基础数据元素组的数据完整性;

6、校验值crc,用于校验包含所述基础数据元素组和所述校验值crc1的数据完整性;

7、至少一个扩展数据元素组,所述扩展数据元素组包含数据元素datay1-datayn,在所述校验值crc1后新增至少一个扩展数据元素组;

8、校验值crc2,用于校验所述扩展数据元素组的数据完整性;

9、所述构建方法还包括:在扩展所述存储结构体后,更新所述校验值crc,使其校验包含所述基础数据元素组、所述校验值crc1、所述扩展数据元素组和所述校验值crc2的数据完整性。

10、进一步改进在于,所述校验值crc1、所述校验值crc2、以及所述校验值crc均通过crc16算法计算校验对应数据的完整性。

11、第二方面、本专利技术提出了一种可扩展的存储结构体的数据读取方法,采用如上述构建方法所构建的存储结构体进行数据读取,所述数据读取方法包括:

12、使用所述存储结构体读取目标数据结构体,先验证所述校验值crc,根据校验值crc的校验结果选择是否进入兼容处理模式;

13、在所述兼容处理模式下,分别校验所述校验值crc1和所述校验值crc2,对校验通过的数据元素组保留其值,对校验失败的所述扩展数据元素组清零或设为默认值,并在下次存储时重新计算各数据元素的校验值,并更新所述校验值crc。

14、进一步改进在于,所述目标数据结构体包括所述至少一个基础数据元素组。

15、进一步改进在于,若所述校验值crc的校验结果通过,则终止所述数据读取进程。

16、本专利技术的有益效果在于:

17、1.本专利技术提出的构建方法使用户可以根据需求来随时添加数据元素,且不会有老版本的数据兼容问题,且当存储空间数据被破坏时,不会导致整个数据都不可用,部分校验成功的数据是可以信任的。

18、2.本专利技术提出的读取方法在读取数据时,通过验证总校验值和各数据元素的校验值,能够自动判断数据的可信性和完整性,并采取相应的处理措施,保证了数据的准确性和可靠性;且该读取方法具有良好的向前兼容性,能够在不影响老版本数据的前提下,支持新版本数据的存储和读取。

本文档来自技高网...

【技术保护点】

1.一种可扩展存储结构体的构建方法,其特征在于,所述构建方法包括定义如下数据结构:

2.根据权利要求1所述的一种可扩展的存储结构体,其特征在于:所述校验值Crc1、所述校验值Crc2、以及所述校验值Crc均通过CRC16算法计算校验对应数据的完整性。

3.一种可扩展的存储结构体的数据读取方法,采用如权利要求1中构建方法所构建的存储结构体进行数据读取,其特征在于,所述数据读取方法包括:

4.根据权利要求3所述的一种可扩展的存储结构体的数据读取方法,其特征在于,所述目标数据结构体包括所述至少一个基础数据元素组。

5.根据权利要求3所述的一种可扩展的存储结构体的数据读取方法,其特征在于,若所述校验值Crc的校验结果通过,则终止所述数据读取进程。

【技术特征摘要】

1.一种可扩展存储结构体的构建方法,其特征在于,所述构建方法包括定义如下数据结构:

2.根据权利要求1所述的一种可扩展的存储结构体,其特征在于:所述校验值crc1、所述校验值crc2、以及所述校验值crc均通过crc16算法计算校验对应数据的完整性。

3.一种可扩展的存储结构体的数据读取方法,采用如权利要求1中构建方法所构...

【专利技术属性】
技术研发人员:鲍伟顾明孙艳黄军王云姜明军江梓贤沈永柏刘欢
申请(专利权)人:合肥力高动力科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1