一种快速修改数据的方法、系统、电子设备和存储介质与流程
未命名
08-29
阅读:84
评论:0

1.本发明涉及嵌入式技术领域,具体涉及一种快速修改数据的方法、系统、电子设备和存储介质。
背景技术:
2.当前,在某些嵌入式产品中,通常采用nor flash(一种非易失闪存技术)作为存储器,nor flash的最小擦除单元一般为4kb。对于产品而言,nor flash安全的操作方式一般是采用备份机制来读、写,或者先读取到ram(random access memory,随机存取存储器),再擦除,最后重新写入。但是,在操作数据量极少且不需要频繁修改的参数时,上述操作方式方式便会显得耗时,且对资源浪费较大。
技术实现要素:
3.针对现有技术中存在的缺陷,本发明的目的在于提供一种快速修改数据的方法、系统、电子设备和存储介质,在进行数据修改时,无需擦除数据,且改写速度快,且对ram、flash的资源占用较少。
4.为达到以上目的,本发明提供的一种快速修改数据的方法,具体包括以下步骤:
5.遍历nor flash的存储区,以获取得到与目标tag值匹配的数据;
6.修改获取得到数据的tag,并获取存储区内的空白起始地址以写入数据。
7.在上述技术方案的基础上,所述遍历nor flash的存储区,以获取得到与目标tag值匹配的数据,修改获取得到数据的tag,并获取存储区内的空白起始地址以写入数据,具体步骤包括:
8.遍历nor flash的存储区,判断nor flash的存储区内是否已存在与目标tag值匹配的数据:
9.若是,则将已存在数据的tag改写为0x00,获取存储区内的空白起始地址以写入数据;
10.若否,则获取存储区内的空白起始地址,以写入数据。
11.在上述技术方案的基础上,所述判断nor flash的存储区内是否已存在与目标tag值匹配的数据,具体步骤包括:
12.基于设定的查找偏移值,从存储区的起始地址开始查找,对于查找的当前地址,执行判断操作:
13.若当前地址上存储的值等于目标tag值,则表明当前地址处的数据为与目标tag值匹配的数据;
14.若当前地址上存储的值不等于目标tag值,则表明当前地址处的数据不为与目标tag值匹配的数据;
15.若当前地址上存储的值等于0xff,则表明当前地址处为空白区域。
16.在上述技术方案的基础上,当前地址上存储的值不等于目标tag值时,则:
17.基于上一次查找时设定的查找偏移值、目标tag占用字节、len占用字节和数据的长度,重新设定查找偏移值;
18.基于存储区的起始地址和重新设定的查找偏移值,查找下一地址,并对查找的下一地址执行判断操作,依此类推。
19.在上述技术方案的基础上,所述获取存储区内的空白起始地址,具体步骤包括:
20.预设查找偏移值为0,从存储区的起始地址开始查找,对于查找的当前地址,执行判定操作:
21.若当前地址上存储的值等于0xff,则表明当前地址为空白起始地址;
22.若当前地址上存储的值不等于0xff,则重新预设查找偏移值,并基于存储区的起始地址和重新预设的查找偏移值,查找下一地址,并对查找的下一地址执行判定操作,依此类推。
23.在上述技术方案的基础上,对于重新预设查找偏移值,具体为:
24.基于上一次查找时预设的查找偏移值、目标tag占用字节、len占用字节和数据的长度,重新预设查找偏移值。
25.本发明提供的一种快速修改数据的系统,包括:
26.获取模块,其用于遍历nor flash的存储区,以获取得到与目标tag值匹配的数据;
27.执行模块,其用于修改获取得到数据的tag,并获取存储区内的空白起始地址以写入数据。
28.在上述技术方案的基础上,所述遍历nor flash的存储区,以获取得到与目标tag值匹配的数据,修改获取得到数据的tag,并获取存储区内的空白起始地址以写入数据,具体过程包括:
29.遍历nor flash的存储区,判断nor flash的存储区内是否已存在与目标tag值匹配的数据:
30.若是,则将已存在数据的tag改写为0x00,获取存储区内的空白起始地址以写入数据;
31.若否,则获取存储区内的空白起始地址,以写入数据。
32.本发明提供的一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述所述快速修改数据的方法的步骤。
33.本发明提供的一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述所述快速修改数据的方法的步骤。
34.与现有技术相比,本发明的优点在于:通过遍历nor flash的存储区以获取得到与目标tag值匹配的数据,对于获取得到的数据,修改数据的tag,并获取存储区内的空白起始地址以写入数据,使得在进行数据修改时,无需擦除数据,且改写速度快,且对ram、flash的资源占用较少。
附图说明
35.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于
本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
36.图1为本发明实施例中一种快速修改数据的方法的流程图;
37.图2为本发明实施例中一种快速修改数据的方法的具体实施流程图;
38.图3为本发明实施例中一种快速修改数据的方法的具体执行流程图;
39.图4为实例中存储区的结构示意图。
具体实施方式
40.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术的一部分实施例,而不是全部的实施例。
41.参见图1所示,本发明实施例提供的一种快速修改数据的方法,具体包括以下步骤:
42.s100:遍历nor flash的存储区,以获取得到与目标tag值匹配的数据;
43.s200:修改获取得到数据的tag,并获取存储区内的空白起始地址以写入数据。
44.参见图2所示,本发明中,遍历nor flash的存储区,以获取得到与目标tag值匹配的数据,修改获取得到数据的tag,并获取存储区内的空白起始地址以写入数据,具体步骤包括:
45.s1:遍历nor flash的存储区,判断nor flash的存储区内是否已存在与目标tag(类型)值匹配的数据,若是,则转到s2,若否,则转到s3;
46.需要说明的是,对于nor flash而言,其bit(比特)可以从1变到0,但若需要从0变到1,则需要执行擦除操作。
47.本发明中,在首次使用nor flash之前,还包括:
48.判断nor flash是否未使用或已执行全片擦除操作:
49.若是,则在nor flash中划分一段存储区。
50.若否,则先对nor flash进行全片擦除,然后划分一段存储区。
51.即在首次使用nor flash时,nor flash需要是未使用或已执行数据擦除操作,然后在nor flash中划分一段存储区,数据的存储格式可以采用tlv(一种编码方式)结构,其中,tag(类型)、len(长度)所占用的字节数可根据实际场景灵活定义。
52.s2:将已存在数据的tag改写为0x00(十六进制,表示十进制中的0),获取存储区内的空白起始地址以写入数据;即将已匹配到的数据的tag改写为0x00,然后查找得到存储区的空白区域,进行数据的写入。
53.s3:获取存储区内的空白起始地址,以写入数据。即直接查找得到存储区的空白区域,进行数据的写入。
54.本发明中,判断nor flash的存储区内是否已存在与目标tag值匹配的数据,具体步骤包括:
55.基于设定的查找偏移值,从存储区的起始地址开始查找,对于查找的当前地址,执行判断操作:
56.若当前地址上存储的值等于目标tag值,则表明当前地址处的数据为与目标tag值
匹配的数据;
57.若当前地址上存储的值不等于目标tag值,则表明当前地址处的数据不为与目标tag值匹配的数据;
58.若当前地址上存储的值等于0xff(十六进制,表示十进制中的255),则表明当前地址处为空白区域。
59.本发明中,当前地址的值不等于目标tag值时,则:
60.基于上一次查找时设定的查找偏移值、目标tag占用字节、len占用字节和数据的长度,重新设定查找偏移值;
61.基于存储区的起始地址和重新设定的查找偏移值,查找下一地址,并对查找的下一地址执行判断操作,依此类推。
62.以下对nor flash的存储区内是否已存在与目标tag值匹配的数据,进行具体说明。
63.定义目标tag占用字节为t,len占用字节为l,存储区的起始地址为addr,初始设定的查找偏移值为offset,取值为0。
64.a:从存储区的起始地址开始查找,转到步骤b;
65.b:读取当前地址(当前地址为存储区的起始地址+查找偏移值)上存储的值,记为s,若s等于目标tag值,则转到步骤c,若s不等于目标tag值,转到步骤d,若s等于0xff,转到步骤e;
66.c:表明当前地址处的数据为与目标tag值匹配的数据,结束;
67.d:重新设定查找偏移值为:上一次查找时设定的查找偏移值+t+l+len,转到步骤b;
68.e:表明当前地址处为空白区域,结束。
69.本发明中,获取存储区内的空白起始地址,具体步骤包括:
70.预设查找偏移值为0,从存储区的起始地址开始查找,对于查找的当前地址,执行判定操作:
71.若当前地址上存储的值等于0xff,则表明当前地址为空白起始地址;
72.若当前地址上存储的值不等于0xff,则重新预设查找偏移值,并基于存储区的起始地址和重新预设的查找偏移值,查找下一地址,并对查找的下一地址执行判定操作,依此类推。
73.本发明中,对于重新预设查找偏移值,具体为:
74.基于上一次查找时预设的查找偏移值、目标tag占用字节、len占用字节和数据的长度,重新预设查找偏移值。
75.以下对存储区内的空白起始地址的获取,进行具体说明。
76.定义目标tag占用字节为t,len占用字节为l,存储区的起始地址为addr,初始预设的查找偏移值为offset。
77.a:从存储区的起始地址开始查找,转到步骤b;
78.b:读取当地址(当前地址为存储区的起始地址+查找偏移值)上存储的值,记为q,若q等于0xff,则转到步骤c,若q不等于0xff,则转到步骤d;
79.c:表明当前地址为空白起始地址,结束;
80.d:重新预设查找偏移值为:上一次查找时预设的查找偏移值++t+l+len,然后转到步骤b。
81.以下结合图3对本发明的快速修改数据的方法,进行具体说明:
82.s11:查找是否存在匹配的tag,即在nor flash的存储区内查找与目标tag值匹配的数据,转到s12:
83.s12:判断是否存在,若是,转到s13,若否,转到s16;
84.s13:修改tag为0x00,即将查找得到的数据的tag改写为0x00,转到s14;
85.s14:查找空白起始地址,转到s15:
86.s15:判断tag是否为0xff,即判断查找得到的地址上存储的值是否为0xff,若否,转到s14,若是,转到s17;
87.s16:判断tag是否为0xff,即进行空白起始地址的查找,并判断查找得到的地址上存储的值是否为0xff,若是,则转到s17,若否,转到s11;
88.s17:写入数据,结束。
89.以下结合一实例对本发明的快速修改数据的方法进行具体说明。
90.划分的存储区如图4所示,存储区为tlv结构,图4中,tag表示类型,len表示长度,v表示值。
91.设定tag占用1个字节,取值为0xa5,len占用1个字节。若存在原始数据(十六进制):31 32 33 34 35,则存储区实际的存储内容为a5 05 31 32 33 34 35。
92.若要将数据修改为35 34 33 32 31,则应先索引数据的tag,即目标tag为0xa5,并将其修改为0x00,然后再索引到空白起始地址,将新数据写入。
93.本发明实施例的快速修改数据的方法,通过遍历nor flash的存储区以获取得到与目标tag值匹配的数据,对于获取得到的数据,修改数据的tag,并获取存储区内的空白起始地址以写入数据,使得在进行数据修改时,无需擦除数据,且改写速度快,且对ram、flash的资源占用较少。
94.本发明实施例提供的一种快速修改数据的系统,包括获取模块和执行模块。
95.获取模块用于遍历nor flash的存储区,以获取得到与目标tag值匹配的数据;执行模块用于修改获取得到数据的tag,并获取存储区内的空白起始地址以写入数据。
96.本发明中,遍历nor flash的存储区,以获取得到与目标tag值匹配的数据,修改获取得到数据的tag,并获取存储区内的空白起始地址以写入数据,具体步骤包括:
97.遍历nor flash的存储区,判断nor flash的存储区内是否已存在与目标tag值匹配的数据:
98.若是,则将已存在数据的tag改写为0x00,获取存储区内的空白起始地址以写入数据;
99.若否,则获取存储区内的空白起始地址,以写入数据。
100.本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行所述程序时实现上述所述快速修改数据的方法的步骤。
101.本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述所述快速修改数据的方法的步骤。
102.以上所述仅是本技术的具体实施方式,使本领域技术人员能够理解或实现本技术。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
103.本发明是参照根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
技术特征:
1.一种快速修改数据的方法,其特征在于,具体包括以下步骤:遍历nor flash的存储区,以获取得到与目标tag值匹配的数据;修改获取得到数据的tag,并获取存储区内的空白起始地址以写入数据。2.如权利要求1所述的一种快速修改数据的方法,其特征在于,所述遍历nor flash的存储区,以获取得到与目标tag值匹配的数据,修改获取得到数据的tag,并获取存储区内的空白起始地址以写入数据,具体步骤包括:遍历nor flash的存储区,判断nor flash的存储区内是否已存在与目标tag值匹配的数据:若是,则将已存在数据的tag改写为0x00,获取存储区内的空白起始地址以写入数据;若否,则获取存储区内的空白起始地址,以写入数据。3.如权利要求2所述的一种快速修改数据的方法,其特征在于,所述判断nor flash的存储区内是否已存在与目标tag值匹配的数据,具体步骤包括:基于设定的查找偏移值,从存储区的起始地址开始查找,对于查找的当前地址,执行判断操作:若当前地址上存储的值等于目标tag值,则表明当前地址处的数据为与目标tag值匹配的数据;若当前地址上存储的值不等于目标tag值,则表明当前地址处的数据不为与目标tag值匹配的数据;若当前地址上存储的值等于0xff,则表明当前地址处为空白区域。4.如权利要求3所述的一种快速修改数据的方法,其特征在于,当前地址上存储的值不等于目标tag值时,则:基于上一次查找时设定的查找偏移值、目标tag占用字节、len占用字节和数据的长度,重新设定查找偏移值;基于存储区的起始地址和重新设定的查找偏移值,查找下一地址,并对查找的下一地址执行判断操作,依此类推。5.如权利要求2所述的一种快速修改数据的方法,其特征在于,所述获取存储区内的空白起始地址,具体步骤包括:预设查找偏移值为0,从存储区的起始地址开始查找,对于查找的当前地址,执行判定操作:若当前地址上存储的值等于0xff,则表明当前地址为空白起始地址;若当前地址上存储的值不等于0xff,则重新预设查找偏移值,并基于存储区的起始地址和重新预设的查找偏移值,查找下一地址,并对查找的下一地址执行判定操作,依此类推。6.如权利要求5所述的一种快速修改数据的方法,其特征在于,对于重新预设查找偏移值,具体为:基于上一次查找时预设的查找偏移值、目标tag占用字节、len占用字节和数据的长度,重新预设查找偏移值。7.一种快速修改数据的系统,其特征在于,包括:获取模块,其用于遍历nor flash的存储区,以获取得到与目标tag值匹配的数据;
执行模块,其用于修改获取得到数据的tag,并获取存储区内的空白起始地址以写入数据。8.如权利要求7所述的一种快速修改数据的系统,其特征在于,所述遍历nor flash的存储区,以获取得到与目标tag值匹配的数据,修改获取得到数据的tag,并获取存储区内的空白起始地址以写入数据,具体过程包括:遍历nor flash的存储区,判断nor flash的存储区内是否已存在与目标tag值匹配的数据:若是,则将已存在数据的tag改写为0x00,获取存储区内的空白起始地址以写入数据;若否,则获取存储区内的空白起始地址,以写入数据。9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述快速修改数据的方法的步骤。10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至6任一项所述快速修改数据的方法的步骤。
技术总结
本发明公开了一种快速修改数据的方法、系统、电子设备和存储介质,涉及嵌入式技术领域,该方法包括遍历NOR Flash的存储区,以获取得到与目标Tag值匹配的数据;修改获取得到数据的Tag,并获取存储区内的空白起始地址以写入数据。本发明在进行数据修改时,无需擦除数据,且改写速度快,且对RAM、Flash的资源占用较少。Flash的资源占用较少。Flash的资源占用较少。
技术研发人员:万琛 周杰 胡瑞璟 董逢华
受保护的技术使用者:武汉天喻信息产业股份有限公司
技术研发日:2023.05.10
技术公布日:2023/8/28
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/