一种远程升级的方法技术

技术编号:33953138 阅读:21 留言:0更新日期:2022-06-29 22:53
本发明专利技术提供的一种远程升级的方法,其可以控制升级文件的尺寸,极大地提高远程版本升级的效率。本发明专利技术的技术方案中,先基于函数迁移表记录新老两个版本文件中的函数名相同的函数的位置变化情况,基于差异表记录新老两个文件中内容的差异点,将升级文件发送到待升级终端后,引导程序将老版本文件基于迁移表进行字节块的搬运,再将差异表中的差异点内容填充进去,生成新版本文件,完成版本升级。完成版本升级。完成版本升级。

【技术实现步骤摘要】
一种远程升级的方法


[0001]本专利技术涉及嵌入式软件
,具体为一种远程升级的方法。

技术介绍

[0002]在很多功能相对简单的嵌入式产品中,如:一些仪器设备控制用仪表,其软件构成中是不包括操作系统的,而只包括一个设备控制用应用程序和一个引导程序。日常工作时基于控制用应用程序实现对仪表的功能控制。在需要版本升级的时候,通过有线或者无线的方式,将新版本的应用程序传输到设备中,引导程序运行新版本的控制用应用程序,替换老版本的控制用应用程序。
[0003]在这些低成本终端设备中,系统存储空间、内存大小以及CPU的运算能力有限,虽然升级时的通讯可以采用4G、5G等高速链路,但是受限于终端内部CPU和通讯模块之间的通讯速率、终端缓存的大小,整个版本升级过程却很慢,可能只有几百KB的文件,升级用的时间确要几十分钟。然而,在日常工作中,很多时候更新的内容只是对一些参数的更新或者bug的修改,这个升级后的控制用应用程序与老版本的文件相比,可能只修改了很小的一部分内容,但基于现有的版本更新技术,却必须将控制用应用程序的整个文件进行更新。这种低效的升级过程严重限制了设备的版本更新和bug修改效率。

技术实现思路

[0004]为了解决现有的低端嵌入式设备远程版本升级效率低的问题,本专利技术提供的一种远程升级的方法,其可以控制升级文件的尺寸,极大地提高远程版本升级的效率。
[0005]本专利技术的技术方案是这样的:一种远程升级的方法,其特征在于,其包括以下步骤:
[0006]S1:获取老版本的控制用应用程序的编译后文件,记作:老版本文件;
[0007]获取新版本的控制用程序的编译后文件,记作:新版本文件;
[0008]S2:分别得到两个文件中包括的每个函数的函数名和每个函数对应的函数地址;
[0009]S3:找到同时存在于两个文件中的所有的函数,记作:共通函数;
[0010]根据所述共通函数分别在两个文件中的地址和函数长度,计算后得到函数迁移表;
[0011]所述函数迁移表包括:旧地址、新地址、迁移数据长度;
[0012]所述旧地址为所述共通函数在所述老版本文件中的头地址;
[0013]所述新地址为所述共通函数在所述老版本文件中的头地址;
[0014]所述迁移数据长度为所述共通函数在所述老版本文件占用的字节数;
[0015]S4:基于所述老版本文件,根据所述函数迁移表,对文件中的数据进行迁移,迁移后的文件记作:中间文件;
[0016]S5:比对所述中间文件和所述新版本文件,找到所有的不同的地方,记作:差异点;
[0017]S6:根据所述差异点,制作差异表;
[0018]所述差异表包括:差异点的起始地址、差异点的内容;
[0019]S7:将所述函数迁移表和所述差异表的内容封包后,作为升级文件提交到升级服务器;
[0020]S8:将所述升级文件传输到待升级终端中;
[0021]S9:所述待升级终端中的引导程序,基于所述迁移表将所述待升级终端中的老版本文件中的字节块进行进行搬运,生成中间版本文件;
[0022]S10:所述引导程序将所述差异表中的所述差异点内容,按照所述差异点的起始地址填充到所述中间版本文件中,得到新版本文件,完成版本升级。
[0023]其进一步特征在于:
[0024]步骤S3中,计算得到所述函数迁移表的详细步骤如下:
[0025]a1:找到所述共通函数分别在两个文件中的地址和函数长度,做成中间迁移表;
[0026]所述中间迁移表包括:
[0027]函数名、旧地址、新地址、迁移数据长度;
[0028]a2:找到同时符合下面条件的函数,记作相邻函数:
[0029]条件1:函数在老版本文件、新版本文件中都是同样顺序的头尾相接;
[0030]条件2:函数由老版本文件向新版本文件中迁移的时候,头地址的改变方向和距离都相同;
[0031]a3:将所述相邻函数合并为一个新迁移函数,记录在迁移表中,得到最终的函数迁移表;
[0032]合并方法为:
[0033]将排列在前的函数的头地址作为所述新迁移函数的头地址;
[0034]将所有的相邻函数在所述老版本文件占用的字节数的和,作为所述新迁移函数的迁移数据长度;
[0035]步骤S6中,制作差异表的过程,包括以下步骤:
[0036]b1:预设一个比对基数N;
[0037]所述比对基数N为比较所述中间文件和所述新版本文件的内容差异时,每次同时比对的字节数;
[0038]b2:从文件的头字节开始,依次分别从两个文件中取出N个字节的内容,进行比对;
[0039]如果二者不同,则记录为差异点;
[0040]将所述新版本文件中对应N字节的内容,作为所述差异点的内容,放入所述差异表中;
[0041]将比对次数,作为所述差异点的起始地址,放入所述差异表中;
[0042]所述比对基数N设置为16。
[0043]本专利技术提供的一种远程升级的方法,其通过比较版本升级前后的二进制文件,基于函数迁移表记录新老两个版本文件中的函数名相同的函数的位置变化,基于差异表记录新老两个文件中内容的差异点,升级过程中将送函数迁移表和差异表作为版本升级文件进行远程传输,而无需传输完整的新版本升级文件,极大地降低了需要传输的数据文件尺寸,提高了远程版本升级的效率;同时,在文件升级时只需要按照函数迁移表和差异表对旧版本文件进行搬运和填充,无需进行复杂计算,尤其适用于计算能力有限的低成本嵌入式设
备。在制作函数迁移表时,通过对相邻函数的合并,减少了函数迁移表中记载的内容,降低了函数迁移表的文件尺寸,进一步降低了版本升级文件的尺寸;在制作差异表时,通过设置比对基数,降低了差异表中对地址记载的需求,降低了差异表的文件尺寸,进一步降低了版本升级文件的尺寸,尤其适用于部分修改的版本升级需求。
附图说明
[0044]图1为本专利技术中的远程升级方法的流程示意图;
[0045]图2为新版本文件和老版本文件的比较实施例;
[0046]图3为中间文件和老版本文件的比较实施例;
[0047]图4为新版本文件和中间文件的比较实施例;
[0048]图5为新版本文件和中间文件的二进制文件比较实施例。
具体实施方式
[0049]如图1所示,本专利技术一种远程升级的方法,其包括以下步骤。
[0050]S1:获取老版本的控制用应用程序的编译后文件,记作:老版本文件;
[0051]获取新版本的控制用程序的编译后文件,记作:新版本文件。
[0052]程序是由一个个函数组成的,而函数是由一行行代码组成,程序经过编译链接生成了二进制文件,这个文件也就是最终烧录到终端上的应用程序。当因为某些原因增加、删除、或者修改了代码后,也会导致编译后生成的二进制文件发生变化。通常,程序编译后产生的二进制文件中,虽然看本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种远程升级的方法,其特征在于,其包括以下步骤:S1:获取老版本的控制用应用程序的编译后文件,记作:老版本文件;获取新版本的控制用程序的编译后文件,记作:新版本文件;S2:分别得到两个文件中包括的每个函数的函数名和每个函数对应的函数地址;S3:找到同时存在于两个文件中的所有的函数,记作:共通函数;根据所述共通函数分别在两个文件中的地址和函数长度,计算后得到函数迁移表;所述函数迁移表包括:旧地址、新地址、迁移数据长度;所述旧地址为所述共通函数在所述老版本文件中的头地址;所述新地址为所述共通函数在所述老版本文件中的头地址;所述迁移数据长度为所述共通函数在所述老版本文件占用的字节数;S4:基于所述老版本文件,根据所述函数迁移表,对文件中的数据进行迁移,迁移后的文件记作:中间文件;S5:比对所述中间文件和所述新版本文件,找到所有的不同的地方,记作:差异点;S6:根据所述差异点,制作差异表;所述差异表包括:差异点的起始地址、差异点的内容;S7:将所述函数迁移表和所述差异表的内容封包后,作为升级文件提交到升级服务器;S8:将所述升级文件传输到待升级终端中;S9:所述待升级终端中的引导程序,基于所述迁移表将所述待升级终端中的老版本文件中的字节块进行进行搬运,生成中间版本文件;S10:所述引导程序将所述差异表中的所述差异点内容,按照所述差异点的起始地址填充到所述中间版本文件中,得到新版本文件,完成版本升...

【专利技术属性】
技术研发人员:付宏博朱超夏顺飞郭金国张艳锋
申请(专利权)人:无锡蓝天电子股份有限公司
类型:发明
国别省市:

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

1