一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据的刷写方法、装置、设备及存储介质与流程

2022-03-16 03:13:06 来源:中国专利 TAG:


1.本发明涉及数据处理技术领域,特别涉及一种数据的刷写方法、装置、设备及存储介质。


背景技术:

2.在向目标器件更新程序时,需要对该程序更新的过程即为数据刷写的过程,数据刷写速度通常受波特率、负载率以及进行数据交互的网关的吞吐量限制,刷写过程较长。
3.随着程序的迭代开发,功能的复杂度会不断升高,如果某个闪存分区不够用时会重新划分,就需要调整整个分区架构,上位机和下位机重新升级软件,导致软件版本上下不兼容的问题,同时全区刷写,耗时会比较长。
4.因此,如何提高数据的刷写效率是本领域技术人员亟待解决的技术问题。


技术实现要素:

5.本技术实施例提供了一种数据的刷写方法、装置、设备及存储介质。为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。
6.第一方面,本公开实施例提供了一种数据的刷写方法,包括:
7.上位机解析编译完成的程序文件,得到代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范围,并将代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范围发送给下位机;
8.下位机根据代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范围进行分区刷写。
9.在一个可选地实施例中,上位机解析编译完成的程序文件之前,还包括:
10.获取根据预设规则编译的待刷写程序;
11.根据待刷写程序进行动态自适应分区,生成程序文件。
12.在一个可选地实施例中,根据待刷写程序进行动态自适应分区,包括:
13.根据待刷写程序中的分段标识,得到代码段数据和数据段数据;
14.将代码段数据和数据段数据按照数据大小以及block分区顺序,依序存储到block分区中;
15.其中,代码段分区和数据段分区的起始位置含有起始标识,结束位置含有结束标识。
16.在一个可选地实施例中,还包括:
17.当代码段数据的大小不满足一个或多个block分区时,将block分区的剩余部分用预设值填充;
18.当数据段数据的大小不满足一个或多个block分区时,将block分区的剩余部分用
预设值填充。
19.在一个可选地实施例中,还包括:
20.当程序升级时,若代码段数据增加,则代码段block分区依序向后扩展,若数据段数据增加,则数据段block分区依序向后扩展。
21.在一个可选地实施例中,上位机解析编译完成的程序文件,得到代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范围,并将代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范围发送给下位机,包括:
22.上位机中的解析功能软件解析程序文件,得到代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范围;
23.上位机中的刷写功能软件根据代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范围生成可执行的代码段刷写文件以及数据段刷写文件,解析所述代码段刷写文件以及数据段刷写文件,得到可执行的代码段数据、数据段数据以及代码段和数据段的数据大小和地址范围;
24.上位机与下位机进行安全校验;
25.若通过安全校验,将可执行的代码段数据、数据段数据以及代码段和数据段的数据大小和地址范围发送给下位机。
26.在一个可选地实施例中,下位机根据代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范围进行分区刷写之后,还包括:
27.上位机与下位机对预设地址范围的数据进行完整性校验;
28.若通过完整性校验,则刷写完成。
29.第二方面,本公开实施例提供了一种数据的刷写装置,包括:
30.上位机,用于解析编译完成的程序文件,得到代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范围,并将代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范围发送给下位机;
31.下位机,用于根据代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范围进行分区刷写。
32.第三方面,本公开实施例提供了一种数据的刷写设备,包括处理器和存储有程序指令的存储器,处理器被配置为在执行程序指令时,执行上述实施例提供的数据的刷写方法。
33.第四方面,本公开实施例提供了一种计算机可读介质,其上存储有计算机可读指令,计算机可读指令被处理器执行以实现上述实施例提供的一种数据的刷写方法。
34.本技术实施例提供的技术方案可以包括以下有益效果:
35.本技术实施例中的数据刷写方法,通过上位机和下位机的配合,实现发动机控制程序和数据的动态分配。可以自动调整代码区和数据区的大小,按照block分区是整块的原则,当代码区变大时,向下找寻最接近的block分区,如果代码变化量不能覆盖整个block分区,后面用0xff填充,可以实现动态分配,不浪费空间。在代码段分区和数据段分区的开始和结尾添加标识。上位机通过解析生成的程序文件中的起始标识和结束标识,得到代码段和数据段的地址范围,并将程序和数据分别转换成可执行的刷写文件,将每个分区的地址范围通过报文会话的模式传递给下位机。下位机根据接收到的数据进行刷写,下位机的刷
写程序可以实时保持兼容,不用频繁升级下位机刷写程序,剩余的空白分区部分将不执行刷写,可以提高刷写的实效性。
36.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
37.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
38.图1是根据一示例性实施例示出的一种数据的刷写方法的流程示意图;
39.图2是根据一示例性实施例示出的一种现有技术中的分区方法示意图;
40.图3是根据一示例性实施例示出的一种本技术中的分区方法示意图;
41.图4是根据一示例性实施例示出的一种数据的刷写装置的结构示意图;
42.图5是根据一示例性实施例示出的一种数据的刷写设备的结构示意图;
43.图6是根据一示例性实施例示出的一种计算机存储介质的示意图。
具体实施方式
44.以下描述和附图充分地示出本发明的具体实施方案,以使本领域的技术人员能够实践它们。
45.应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
46.下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本发明的一些方面相一致的系统和方法的例子。
47.在目前的方案中,往往根据经验提前规划好控制程序的代码段、数据段的地址范围。如图2所示,下位机的flash分区包括block0-block17共18个分区,在下位机的flash分区中,不管数据的实际大小,预先将block0-block7作为代码段的地址范围,将block8-block12作为数据段用于标定的cal区的地址范围,将block13-block17作为数据段用于下线标定的eol区的地址范围。
48.下位机按照提前规划好的地址段范围,与上位机做好安全性校验,将上位机传输的数据刷写在对应的区间中,如果某个段的空间没有完全用完,后面统一填充0xff,如图2所示,代码段数据的实际大小仅占用了block0-block5的分区,后面的block6-block7分区要全部填充0xff。在后续刷写的时候,填充的数据也要执行刷写操作。如果控制程序在不断的迭代升级中分配的范围不够用了,需要重新划分每个段的区间,上位机和下位机的程序都要一起升级,这样容易导致软件版本的上下不兼容。
49.如图2所示,在现有技术方案下,版本从ver.1升级到ver.2,代码段增加100k,数据段用于标定的cal区增加20k,数据段用于下线标定的eol区不增加。执行刷写时,block0-block17分区范围内的数据都要执行刷写,有一些填充数据也要刷写,不管程序复杂度如
何,刷写时间基本不变。
50.因此,随着程序的迭代开发,功能的复杂度会不断升高,如果某个区不够用时会重新划分,就需要调整整个分区架构,上位机和下位机重新升级软件,会导致软件版本上下不兼容的问题。同时全区刷写,耗时会比较长。刷写效率比较低。
51.针对现有技术中的技术问题,本技术实施例提供了一种数据的刷写方法,可以进行动态自适应分区,提高刷写效率。
52.下面将结合附图对本技术实施例提供的数据刷写方法进行详细介绍。参见图1,该方法具体包括以下步骤。
53.s101上位机解析编译完成的程序文件,得到代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范围,并将所述代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范围发送给下位机。
54.在一种可能的实现方式中,在执行步骤s101之前,还包括根据预设规则编译待刷写程序,其中,预设规则包括在程序的代码段和数据段添加不同的分段标识区分。上位机获取根据预设规则编译的待刷写程序,生成自适应分区的程序文件。
55.具体地,上位机根据待刷写程序中的分段标识,得到代码段数据和数据段数据,将代码段数据和数据段数据按照数据大小以及block分区顺序,依序存储到block分区中。如图3所示,首先根据代码段的数据大小,将代码段数据依序存储到block分区中,代码段数据占用block0-block5分区,并在代码段的起始位置添加起始标识,在代码段的结束位置添加结束标识。可用ascii进行标识。
56.进一步地,根据数据段的数据大小,将数据段数据依序存储到block分区中,如图3所示,数据段的标定区cal段占用block6-block7分区,数据段的下线标定段eol段占用block8-block9分区。每一个段的开始都有**_str,**_end起始和结束的标识。
57.通过该方法,可根据代码段和数据段的实际大小进行分区,并在每段的起始位置和结束位置添加标识。用以区分每段数据对应的地址范围。
58.进一步地,若在分区时,代码段数据的大小不满足一个或多个block分区时,将block分区的剩余部分用预设值填充,例如采用0xff填充。数据段数据的大小不满足一个或多个block分区时,将block分区的剩余部分用预设值填充,例如采用0xff填充。
59.进一步地,当程序升级时,若代码段数据增加,则代码段block分区依序向后扩展,若数据段数据增加,则数据段block分区依序向后扩展。如图3所示,当程序升级到ver.2版本时,代码区增加100k,普通标定区cal增加20k,eol区不变,代码段会后移到block6分区,且只是占用其中的100k,剩下的156k填充0xff,block6的结尾处加入code_end结束标识。数据段的标定cal区增加20k,从block7—block9,其中block9只用其中的20k,剩下的236k填充0xff和cal_end结束标识。数据段的下线标定区eol区则后移到block10-block11。
60.通过该方法,可以自动调整代码区和数据区的大小,按照block分区是整块的原则,当代码区变大时,向下找寻最接近的block分区进行扩展,如果代码变化量不能覆盖整个block分区,剩余部分用0xff填充。可以实现动态分配,不浪费空间。在每一个分区的开始和结尾用ascii标识。
61.进一步地,上位机根据划分好地址范围的数据,生成自适应分区的程序文件,在一种可能的实现方式中,生成的程序文件为.hex文件。
62.上位机中的解析功能软件根据程序文件,得到代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范围。
63.具体地,上位机中的解析功能软件可以自动分析.hex文件,识别.hex文件中的**_str和**_end开始和结束标识,并分析出代码段,数据段的cal区和eol区的起始地址、结束地址、数据大小。
64.然后上位机中的刷写功能软件根据代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范围分别生成可执行的代码段刷写文件、数据段的cal段刷写文件、数据段的eol段刷写文件。其中,可执行的刷写文件为.bin文件。上位机中的刷写功能软件解析生成的可行的刷写文件,得到可执行的代码段数据、数据段数据以及代码段和数据段的数据大小和地址范围。
65.进一步地,上位机与下位机进行安全校验,上位机向下位机发送校验请求,下位机接收到校验请求后,生成一个种子文件,将生成的种子文件发送给上位机,上位机根据接收到的种子文件进行计算,得到一个校验数值,下位机也同时计算发出的种子文件的校验数值,若上位机和下位机计算出来的校验数值相同,则通过安全校验。
66.若通过安全校验,上位机将每个地址段的地址范围和大小通过报文传递给下位机,下位机接收并储存,在进行每一个地址段的刷写的时候,还会将解析的可执行的代码段数据、数据段数据传输给下位机。
67.s102下位机根据代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范围进行分区刷写。
68.在一种可能的实现方式中,下位机根据接收到的数据进行刷写。
69.具体地,下位机接收到代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范围后,判断是否跨区,数据与地址范围是否符合,如果无误,则进行刷写,在下位机对应的位置刷写对应的文件。例如,将可执行的代码段数据刷写在下位机代码段对应的地址范围内,将可执行的数据段数据刷写在下位机数据段对应的地址范围内,进行分区刷写,没有数据的block分区则不用刷写。如果有误,就停止刷写,并向上位机发送否定指令,响应停止。
70.在一个实施例中,下位机进行分区刷写之后,还包括:上位机与下位机对预设地址范围的数据进行完整性校验,若通过完整性校验,则刷写完成。
71.具体地,刷写完成后,上位机和下位机采用实时在线校验的形式,对刷写数据的完整性进行校验。上位机和下位机按照相同的计算方法计算预设地址范围内的一段数据的和,若下位机计算出来的和与上位机计算出来的和相同,则校验成功,数据刷写完成。若计算出来的和不相同,则校验失败,若校验失败,则停留在下位机的刷写程序中,以便后续继续刷写程序。
72.通过该方法,上位机通过解析.hex文件中的代码段和数据段的起始结束标识,分析出代码段的起始地址、结束地址,分析出数据段的起始地址、结束地址,并计算出代码段和数据段的大小,分别生成刷写可执行的.bin文件。
73.上位机与下位机进行安全校验,若通过安全校验,上位机将每个地址段的地址范围和大小以及对应的数据传递给下位机。
74.下位机根据代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范
围进行分区刷写,刷写完成后,上位机和下位机采用实时在线校验的形式,对刷写数据的完整性进行校验。
75.下面结合图3对本技术的分区方法进行详细说明,如图3所示:ver.1版本代码段正好1072k,占用block0-block5共六个完整block分区,数据段的标定区cal段512k,占用block6-block7分区,数据段用于下线标定的eol段512k,占用block8-block9分区。每一个段的开始都有**_str,**_end开始和结束的标识。此时刷写的时候只需要刷写block0-bolck9的地址空间的内容即可,后面的block10-block17无需刷写。相比现有技术中全区刷写的方式,本技术的方法刷写效率更高。
76.升级到ver.2版本,代码区增加100k,普通标定区增加20k,eol区不变,如图3右侧所示,代码段会后移到block6分区且只是占用其中的100k,剩下的156k填充0xff,block6的结尾处加入code_end结束标识。数据段的标定cal区增加20k,从block7—block9,其中block9只用其中的20k,剩下的236k填充0xff和cal_end结束标识。数据段的下线标定区eol区则后移到block10-block11。
77.从图3可以看到,从ver1升级到ver2,区间只是从block0-block9,增加到block0-block11,增加512k的空间,空间利用率和刷写效率会大大提升。根据自适应分区的方法,空白分区将不再刷写,可显著提高刷写效率。
78.根据本技术实施例中的数据刷写方法,可以实现动态自适应分区。按照block分区是整块的原则,当代码区变大时,向下找寻最接近的block分区,如果代码变化量不能覆盖整个block分区,后面用0xff填充,可以实现动态分配,不浪费空间。在代码段分区和数据段分区的开始和结尾用ascii标识。上位机通过分析生成的程序中的ascii码的起始标识,解析代码段和数据段的地址范围,并将程序和数据分别转换成可执行的刷写文件,将每个分区的地址范围通过报文会话的模式传递给下位机。下位机根据接收到的数据进行刷写,下位机的刷写程序可以实时保持兼容,不用频繁升级下位机刷写程序,后面的空余部分将不执行刷写,可以提高刷写的实效性。
79.本技术实施例还提供一种数据的刷写装置,该装置用于执行上述实施例的数据刷写方法,如图4所示,该装置包括:上位机401和下位机402,在一种可能的实现方式中,上位机401可为一种pc主机,下位机402可为一种单片机。
80.上位机401,用于解析编译完成的程序文件,得到代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范围,并将所述代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范围发送给下位机;
81.下位机402,用于根据代码段数据、数据段数据、以及代码段和数据段的数据大小和地址范围进行分区刷写。
82.需要说明的是,上述实施例提供的数据的刷写装置在执行数据的刷写方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据的刷写装置与数据的刷写方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
83.本技术实施例还提供一种与前述实施例所提供的数据的刷写方法对应的电子设备,以执行上述数据的刷写方法。
84.请参考图5,其示出了本技术的一些实施例所提供的一种电子设备的示意图。如图5所示,电子设备包括:处理器500,存储器501,总线502和通信接口503,处理器500、通信接口503和存储器501通过总线502连接;存储器501中存储有可在处理器500上运行的计算机程序,处理器500运行计算机程序时执行本技术前述任一实施例所提供的数据的刷写方法。
85.其中,存储器501可能包含高速随机存取存储器(ram:random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口503(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。
86.总线502可以是isa总线、pci总线或eisa总线等。总线可以分为地址总线、数据总线、控制总线等。其中,存储器501用于存储程序,处理器500在接收到执行指令后,执行程序,前述本技术实施例任一实施方式揭示的数据的刷写方法可以应用于处理器500中,或者由处理器500实现。
87.处理器500可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器500中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器500可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器501,处理器500读取存储器501中的信息,结合其硬件完成上述方法的步骤。
88.本技术实施例提供的电子设备与本技术实施例提供的数据的刷写方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。
89.本技术实施例还提供一种与前述实施例所提供的数据的刷写方法对应的计算机可读存储介质,请参考图6,其示出的计算机可读存储介质为光盘600,其上存储有计算机程序(即程序产品),计算机程序在被处理器运行时,会执行前述任意实施例所提供的数据的刷写方法。
90.需要说明的是,计算机可读存储介质的例子还可以包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
91.本技术的上述实施例提供的计算机可读存储介质与本技术实施例提供的数据的刷写方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
92.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛
盾,都应当认为是本说明书记载的范围。
93.以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献