CN110837393A - 一种固件差分升级包的制作方法及装置、可读存储介质 - Google Patents
一种固件差分升级包的制作方法及装置、可读存储介质 Download PDFInfo
- Publication number
- CN110837393A CN110837393A CN201911118061.7A CN201911118061A CN110837393A CN 110837393 A CN110837393 A CN 110837393A CN 201911118061 A CN201911118061 A CN 201911118061A CN 110837393 A CN110837393 A CN 110837393A
- Authority
- CN
- China
- Prior art keywords
- difference
- target file
- version
- current version
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
Abstract
本申请提供一种固件差分升级包的制作方法及装置、可读存储介质。其中,固件差分升级包的制作方法,包括:获取目标固件的当前版本的目标文件以及升级版本的目标文件;其中,所述当前版本的目标文件和所述升级版本的目标文件对应的源代码均采用与地址无关的编译方式得到,且所述当前版本的目标文件与所述升级版本的目标文件的连接顺序一致;确定所述当前版本的目标文件和所述升级版本的目标文件中存在差异的差异目标文件;对所述差异目标文件进行差异分析,分别得到所述当前版本和所述升级版本的差异信息;根据所述差异信息生成差分升级包。该方法提高了差分升级包的适用性。
Description
技术领域
本申请涉及物联网技术领域,具体而言,涉及一种固件差分升级包的制作方法及装置、可读存储介质。
背景技术
随着物联网技术的迅猛发展,嵌入式联网设备已经广泛应用于各个领域。在万物互联的物联网中设备终端规模数量巨大,且行业会由于功能需要和安全需求产生对物联网设备在线升级的需求。嵌入式设备全量升级会传输大量的数据,在一些网络环境下可能不太适用。传统的差分算法对处理器能力有一定的需求,对于低端不适用。
在现有技术中,将升级文件分块,依次对比新老升级文件对应块的差值,记录有差别的偏移量和差值,写入差分升级包。该算法虽然提供了正向反向两种计算的方式,取一个最小升级包的方法,但是在新老程序出现多个程序块修改时或者修改的程序段大小变化了,计算出的差分文件比较大,并不能最优化的提供差分升级包。
因此,现有的嵌入式设备的固件的生成差分升级包的方式适用性较差。
发明内容
本申请实施例的目的在于提供一种固件差分升级包的制作方法及装置、可读存储介质,用以提高差分升级包的适用性。
第一方面,本申请实施例提供一种固件差分升级包的制作方法,包括:获取目标固件的当前版本的目标文件以及升级版本的目标文件;其中,所述当前版本的目标文件和所述升级版本的目标文件对应的源代码均采用与地址无关的编译方式得到,且所述当前版本的目标文件与所述升级版本的目标文件的连接顺序一致;确定所述当前版本的目标文件和所述升级版本的目标文件中存在差异的差异目标文件;对所述差异目标文件进行差异分析,分别得到所述当前版本和所述升级版本的差异信息;根据所述差异信息生成差分升级包。
在本申请实施例中,目标固件的当前版本和升级版本中的目标文件对应的源代码均采用与地址无关的编译方式得到,且两者的目标文件的连接顺序也是一致的。与现有技术相比,利用与地址无关的编译技术,保证目标文件的连接顺序,能够精确定位到当前版本和升级版本的固件差异位置,由于能够较准确的定位到差异位置,那么对应的,算法的计算难度也降低,最后生成的差分包也不会太大,进而使该方法能够应用于低端,也能够得到比较优化的差分升级包,提高制作差分升级包的适用性。
作为一种可能的实现方式,获取目标固件的当前版本的目标文件以及升级版本的目标文件,包括:通过编译器采用与地址无关的编译方式分别对所述当前版本和所述升级版本的源代码进行编译;其中,所述源代码为C语言或者汇编语言;按照相同的顺序分别连接对所述当前版本的源代码进行编译得到的目标文件和对所述升级版本的源代码进行编译得到的目标文件,得到所述当前版本的目标固件以及所述升级版本的目标固件。
在本申请实施例中,对于当前版本和升级版本的目标文件,采用与地址无关的编译方式编译C语言或者汇编语言得到,并且目标固件的当前版本和升级版本中的目标文件按照相同的顺序进行连接,进而保证两者的目标文件的连接顺序一致。
作为一种可能的实现方式,对所述差异目标文件进行差异分析,分别得到所述当前版本和所述升级版本的差异信息,包括:确定所述当前版本和所述升级版本中的所述差异目标文件中的多个差异对象;计算所述多个差异对象的偏移量、大小以及差值,得到所述差异信息。
在本申请实施例中,在定位到当前版本和升级版本的差异目标文件后,在分析时,针对不同的差异对象进行分析,得到差异信息,提高差异信息的统计效率。
作为一种可能的实现方式,根据所述差异信息生成差分升级包,包括对所述多个差异对象的偏移量、大小以及差值进行统计;根据统计结果和预设的升级包格式生成所述差分升级包。
在本申请实施例中,在生成差分升级包时,统计得到的差异信息,并按照升级包格式生成差分升级包,使生成的差分升级包可以直接用于固件升级。
作为一种可能的实现方式,所述差异对象包括:所述差异目标文件中的:差异代码段、所述差异代码段被连接到所述差异目标文件对应的目标固件的部分、调用所述差异代码段的调用代码段、所述调用代码段被连接到所述对应的目标固件的部分、全局变量、差异数据段。
在本申请实施例中,差异对象既包含了差异代码段,还包含了与差异代码段相关的代码段,还包括了差异数据段以及全局变量,使得到的差异信息较全面,进而优化生成的差分升级包。
作为一种可能的实现方式,所述方法还包括:根据所述差分升级包对所述目标固件的当前版本进行替换、删除、或者插入操作,以对所述目标固件进行升级。
在本申请实施例中,在生成差分升级包后,可以基于差分升级包对当前版本的目标固件进行升级,快速的完成固件的升级过程,提高固件的升级效率。
第二方面,本申请实施例提供一种固件差分升级包的制作装置,所述装置包括用于实现第一方面以及第一方面任意一种可能的实现方式中所述的方法的功能模块。
第三方面,本申请实施例提供一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被计算机运行时执行如第一方面以及第一方面任意一种可能的实现方式中所述的方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的固件差分升级包的制作方法的流程图;
图2为本申请实施例提供的计算差异信息的举例示意图;
图3为本申请实施例提供的固件差分升级包的制作装置的功能模块框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
本申请实施例所提供的技术方案可应用于嵌入式设备的固件升级,且应用的是利用差分升级包进行固件升级的方式,具体涉及一种固件差分升级包的制作方法,即在生成差分升级包后,再利用差分升级包进行升级。其中,固件升级是将固件从当前版本升级到升级版本,对于固件的每一个版本,一般都对应有一个该版本号,每个版本中是一个版本数据包的形式,该数据包中包含有目标固件,目标固件是通过编译版本对应的源代码所得到的。
基于该应用场景,图1为本申请实施例提供的固件差分升级包的制作方式的流程图,该方法包括:
步骤101:获取目标固件的当前版本的目标文件以及升级版本的目标文件。其中,当前版本的目标文件和升级版本的目标文件对应的源代码均采用与地址无关的编译方式得到,且当前版本的目标文件与升级版本的目标文件的连接顺序一致。
步骤102:确定当前版本的目标文件和升级版本的目标文件中存在差异的差异目标文件。
步骤103:对差异目标文件进行差异分析,分别得到当前版本和升级版本的差异信息。
步骤104:根据差异信息生成差分升级包。
与现有技术相比,本申请实施例中利用与地址无关的编译技术,保证目标文件的连接顺序,能够精确定位到当前版本和升级版本的固件差异位置,由于能够较准确的定位到差异位置,那么对应的,算法的计算难度也降低,最后生成的差分包也不会太大,进而使该方法能够应用于低端,也能够得到比较优化的差分升级包,提高制作差分升级包的适用性。
接下来对步骤101-步骤104的实施流程作介绍。
在步骤101中,不管是当前版本的目标文件,还是升级版本的目标文件,其对应的源代码均采用与地址无关的编译方式进行编译,且目标固件的当前版本与升级版本的中的目标文件的连接顺序一致。为了保证这两点,步骤101的一种可选的实施方式:通过编译器采用与地址无关的编译方式分别对当前版本和升级版本的源代码进行编译;其中,源代码为C语言或者汇编语言;按照相同的顺序分别连接对当前版本的源代码进行编译得到的目标文件和对升级版本的源代码进行编译得到的目标文件,得到当前版本的目标固件以及升级版本的目标固件。
在这种实施方式中,与地址无关的编译方式是指采用地址无关代码,地址无关代码是指在主存储器中任意位置正确地运行,而不受其绝对地址影响的一种机器码。
在低端的嵌入式设备中,大多数都是使用C语言或者汇编语言,在编译成最终目标固件前,先将对应的源代码进行预处理、编译、汇编生成OBJ(目标)文件,然后将OBJ(目标)文件连接成最终的目标固件。不管是当前版本还是升级版本,都按照该种方式得到目标固件,但是在本申请实施例中,与现有技术不同的是,在连接各个目标文件时,保证当前版本和升级版本的目标文件的连接顺序是一致的,可以理解为相同的连接顺序。
对于该种实施方式,当前版本和升级版本中可能既包含有相同的目标文件也包含有不相同的目标文件,不管是相同还是不相同,每次生成的目标文件都按照一样的顺序进行连接,那么能够保证最终生成的目标固件中的目标文件的排列顺序都是一致的,那么在确定差异目标文件时,可以快速的定位到对应的位置。举个例来说,假设当前版本的目标固件中有5个目标文件,但是升级版本的目标固件中有6个目标文件,两者的目标固件中的前5个目标文件都是相同的,且按照了相同的顺序进行连接,那么对于升级版本中的第6个目标文件,连接到第5个目标文件后,相当于是新增的目标文件,也没有影响前面5个目标文件的连接。对于减少一个目标文件也是同理,总之,采用这种编译与连接方式能够保证目标文件的连接顺序,进而精确定位到当前版本和升级版本的目标固件的差异位置。
在步骤101中,获取到了目标固件的当前版本和升级版本的目标文件,接下来可以执行步骤102,即确定目标固件的当前版本的目标文件和升级版本的目标文件中存在差异的差异目标文件。其中,在具体确定时,可以将当前版本和升级版本中的所有目标文件都列出来,然后比对各个目标文件的信息,例如文件名、文件中的具体内容等,通过比对这种信息便能判断是否存在差异。对于不存在差异的目标文件,各项文件信息都是相同的。例如文件名不同,可确定为差异目标文件,文件中的具体内容不同,也可以确定为差异目标文件。需要注意的是,步骤102中确定出的差异目标文件指的是当前版本和升级版本中的差异目标文件,比如文件一和文件二存在差异,那么文件一和文件二都视为差异目标文件。在比对时,可以按照步骤101中的连接顺序进行比对,例如将当前版本中序号为1的目标文件与升级版本中序号为1的目标文件进行比对,若比对确定两个目标文件是存在差异的,那么这两个目标文件都视为差异目标文件。
在步骤102中确定出差异目标文件后,执行步骤103,即对差异目标文件进行差异分析,分别得到当前版本和升级版本的差异信息。
作为步骤103的一种可选的实施方式,步骤103包括:确定当前版本和升级版本中的差异目标文件中的多个差异对象;计算多个差异对象的偏移量、大小以及差值,得到差异信息。
在这种实施方式中,先确定出差异目标文件中的多个差异对象,该差异对象可以代表差异目标文件存在差异的具体是什么。然后再基于差异对象,计算偏移量、大小以及差值作为差异信息。
其中,差异对象可以包括:差异目标文件中的:差异代码段、差异代码段被连接到差异目标文件对应的目标固件的部分、调用差异代码段的调用代码段、调用代码段被连接到对应的目标固件的部分、全局变量、差异数据段。对于差异代码段,可以理解为有差异的代码。对于差异代码段被连接到对应的目标固件的部分,可以理解为差异代码段所连接到目标固件中的信息,如连接到目标固件中的其他目标文件或者其他代码。对于调用差异代码段的调用代码段,可以理解为调用差异代码的代码。对于全局变量,为对象或者函数中的变量。对于差异数据段,可以理解为存在差异的数据。
在本申请实施例中,在定位到当前版本和升级版本的差异目标文件后,在分析时,针对不同的差异对象进行分析,得到差异信息,提高差异信息的统计效率。
进一步的,若采用步骤103的该种实施方式,步骤104:根据差异信息生成差分升级包的一种可选的实施方式:对多个差异对象的偏移量、大小以及差值进行统计,根据统计结果和预设的升级包格式生成差分升级包。
在这种实施方式中,预设的升级包格式可以代表差分升级包中需要哪些差异信息,以及各个差异信息的排列方式。
接下来结合步骤103和步骤104,对步骤103和步骤104的实施方式以举例的形式进行更详细的介绍。
在确定各个差异对象的差异信息时,举例来说:先对比存在差异的差异目标文件的列表中所有的函数,找出存在差异的函数,将所有存在差异的函数名记录到文件1中。然后扫描源代码找出所有调用文件1中记录函数的函数列表,记录在文件2中。然后扫描源代码找出所有调用全局变量的函数,将函数名记录到文件3中。将文件1、文件2和文件3中记录的函数名、函数列表进行合并去重,生成文件4。进一步的,对比存在差异的差异目标文件的列表中所有的全局变量,找出存在差异(初值、大小不同、新增或删除)的全局变量,将所有存在差异的全局变量记录到文件5中。
在得到文件1-文件5后,可以进行具体的差异信息计算过程,具体可以包括:首先从文件4中取出存在差异的函数,分别根据当前版本和升级版本的map文件中对应函数被连接到当前版本和升级版本分别对应的目标固件的地址和大小计算出:对应函数在目标固件中的偏移和大小。其中,当前版本和升级版本的map文件是在连接目标文件生成目标固件的过程中生成的,因此,可以直接找到该map文件。进一步的,根据前一步计算出的偏移和大小计算当前版本和升级版本中函数的差值,计算差值时使用指令长度为单位进行对比,按照函数代码指令块不进一步拆分,最小差值的方式进行计算,其具体的匹配过程可以如图2所示,使用当前版本的函数代码指令块依次从升级版本的0x0800256c开始计算差分,直到计算到0x08002588,共计算7次,7次中图2所示的位置差分最小。在匹配计算时,若当前版本和升级版本中函数代码指令块长度相同,直接依次对比计算函数代码指令块的差值。若升级版本函数代码指令长度大于当前版本代码指令长度,假设大于n个指令长度,使用当前版本代码指令块依次与升级版本函数代码指令块(0-n)*指令长度为偏移计算差值,取差值最小依次作为结果,未参与差值计算的部分按照新增进行处理。若当前版本函数代码指令长度大于升级版本代码指令长度,假设大于n个指令长度,使用升级版本代码指令块依次与老版本函数代码指令块(0-n)*指令长度为偏移计算差值,取差值最小依次作为结果,未参与差值计算的部分按照删除进行处理。
进一步的,再使用文件5中记录的变化的全局变量,分别根据当前版本和升级版本中map文件中对应的全局变量被连接到当前版本和升级版本的目标固件的地址和大小计算出对应的全局变量在各自对应的目标固件中的偏移、大小。进一步的,再根据对应的目标固件中的偏移、大小计算出当前版本和升级版本中全局变量的差值,计算方法与图2所示的最小差值的计算方式相同,在此不再重复介绍。
进一步的,在计算出各个差异对象的差异信息后,可以对差异信息进行统计,统计生成代码差分文件条目,生成的差分文件条目可以如表1所示:
表1
在表1中,当前版本大小为0时,表示新增的函数或全局变量,表1中func1在当前版本中没有,在升级版本中增加,对应的差值即为新增函数的二进制内容。升级版本大小为0时,表示删除的函数或全局变量,表1中fun2在当前版本的目标固件中存在,在升级版本的目标固件中不存在,所以需要删除。func3在当前版本函数代码指令块长度比在升级版本函数代码指令块长度,长两个指令长度(8个字节,arm指令长度未32),在计算差分文件时从最开始的位置匹配差值最小,有8个字节存在差异,最后8个字节按照删除进行处理。
进一步的,基于表1所示的差分条目,可以生成差分升级包,其中,预设的差分升级包格式可以如表2和表3所示,表2为包头格式,表3为差分条目格式,在表3中的偏移量可以按照第一关键字当前版本偏移量、第二关键字升级版本偏移量升序组织排序存放:
当前版本号 | 升级版本号 | 差分包大小 | 差分条目数 | 新版本md5 |
表2
表3
结合上述举例可以看出,在本申请实施例中,在生成差分升级包时,统计得到的差异信息,并按照升级包格式生成差分升级包,使生成的差分升级包可以直接用于固件升级。
进一步的,在得到差分升级包以后,可以基于差分升级包进行固件升级,因此本申请实施例所提供的方法还包括:根据差分升级包对当前版本的目标固件进行替换、删除、或者插入操作,以对当前版本的目标固件进行升级。
接下来继续结合前述的举例对具体的升级过程作介绍。
在升级之前,可以先使用差分升级包和当前版本的目标固件生成升级版本的目标固件,从差分升级包中获取当前版本号,与当前运行的版本进行比较,如果不匹配则终止升级。
此外,还可以对差分升级包进行完整性校验,可以通过计算差分包大小,与差分升级包中的差分包大小进行比较,如果不一致则终止升级。
在具体升级时:根据当前版本和升级版本的偏移量信息从当前版本的固件中拷贝固件数据。(1)如果当前版本大小为0时,说明是新增代码,如果拷贝的条目是第一个条目,先从当前版本固件中偏移量为0处拷贝升级版本偏移量大小的数据到待恢复的升级版本固件文件(或内存或存储器)中,然后从差分包条目中拷贝对应条目升级版本大小的差值追加到待恢复升级版本固件文件中。(2)如果差分条目中升级版本大小为0时,则跳过拷贝当前版本大小的当前版本固件。(3)如果差分条目中当前版本和升级版本大小相同,如果拷贝的条目是第一个条目,先从当前版本固件中偏移量为0处拷贝当前版本偏移量大小的数据到待恢复的升级版本固件文件(或内存或存储器)中,然后从当前版本固件指定的偏移量处拷贝指定大小的数据内容,最后使用差分条目的差值与当前版本进行计算后更新拷贝的内容。重复上述升级过程,直到差分升级包中的所有差分条目处理完成。
在升级后,还可以计算利用当前版本固件和差分升级包恢复版本的md5,与包头记录的md5比较,一致则表征恢复成功,不一致则表征恢复失败。
通过上述举例可以看出,在本申请实施例中,在生成差分升级包后,可以基于差分升级包对当前版本的目标固件进行升级,快速的完成固件的升级过程,提高固件的升级效率。
基于同一发明构思,请参照图3,本申请实施例中还提供一种固件差分升级包的制作装置,包括:获取模块201、确定模块202、分析模块203以及生成模块204。
获取模块201,用于获取目标固件的当前版本的目标文件以及升级版本的目标文件;其中,所述当前版本的目标文件和所述升级版本的目标文件对应的源代码均采用与地址无关的编译方式得到,且所述当前版本的目标文件与所述升级版本的目标文件的连接顺序一致。确定模块202,用于确定所述当前版本的目标文件和所述升级版本的目标文件中存在差异的差异目标文件。分析模块203,用于对所述差异目标文件进行差异分析,分别得到所述当前版本和所述升级版本的差异信息。生成模块204,用于根据所述差异信息生成差分升级包。
可选的,获取模块201还用于:通过编译器采用与地址无关的编译方式分别对所述当前版本和所述升级版本的源代码进行编译;其中,所述源代码为C语言或者汇编语言;按照相同的顺序分别连接对所述当前版本的源代码进行编译得到的目标文件和对所述升级版本的源代码进行编译得到的目标文件,得到所述当前版本的目标固件以及所述升级版本的目标固件。
可选的,分析模块203还用于:确定所述当前版本和所述升级版本中的所述差异目标文件中的多个差异对象;计算所述多个差异对象的偏移量、大小以及差值,得到所述差异信息。
可选的,生成模块204还用于:对所述多个差异对象的偏移量、大小以及差值进行统计;根据统计结果和预设的升级包格式生成所述差分升级包。
可选的,制作装置200还包括升级模块,用于:根据所述差分升级包对所述目标固件的当前版本进行替换、删除、或者插入操作,以对所述目标固件进行升级。
前述实施例中的固件差分升级包的制作方法中的各实施方式和具体实例同样适用于图3的装置,通过前述对固件差分升级包的制作方法的详细描述,本领域技术人员可以清楚的知道图3中的固件差分升级包的制作装置的实施方法,所以为了说明书的简洁,在此不再详述。
基于同一发明构思,本申请实施例还提供一种可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被计算机运行时执行上述任一实施方式的固件差分升级包的制作方法。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种固件差分升级包的制作方法,其特征在于,包括:
获取目标固件的当前版本的目标文件以及升级版本的目标文件;其中,所述当前版本的目标文件和所述升级版本的目标文件对应的源代码均采用与地址无关的编译方式得到,且所述当前版本的目标文件与所述升级版本的目标文件的连接顺序一致;
确定所述当前版本的目标文件和所述升级版本的目标文件中存在差异的差异目标文件;
对所述差异目标文件进行差异分析,分别得到所述当前版本和所述升级版本的差异信息;
根据所述差异信息生成差分升级包。
2.根据权利要求1所述的制作方法,其特征在于,获取目标固件的当前版本的目标文件以及升级版本的目标文件,包括:
通过编译器采用与地址无关的编译方式分别对所述当前版本和所述升级版本的源代码进行编译;其中,所述源代码为C语言或者汇编语言;
按照相同的顺序分别连接对所述当前版本的源代码进行编译得到的目标文件和对所述升级版本的源代码进行编译得到的目标文件,得到所述当前版本的目标文件以及所述升级版本的目标文件。
3.根据权利要求1所述的制作方法,其特征在于,对所述差异目标文件进行差异分析,分别得到所述当前版本和所述升级版本的差异信息,包括:
确定所述当前版本和所述升级版本中的所述差异目标文件中的多个差异对象;
计算所述多个差异对象的偏移量、大小以及差值,得到所述差异信息。
4.根据权利要求3所述的制作方法,其特征在于,根据所述差异信息生成差分升级包,包括:
对所述多个差异对象的偏移量、大小以及差值进行统计;
根据统计结果和预设的升级包格式生成所述差分升级包。
5.根据权利要求3所述的制作方法,其特征在于,所述差异对象包括:
所述差异目标文件中的:差异代码段、所述差异代码段被连接到所述差异目标文件对应的目标固件的部分、调用所述差异代码段的调用代码段、所述调用代码段被连接到所述对应的目标固件的部分、全局变量、差异数据段。
6.根据权利要求1所述的制作方法,其特征在于,所述方法还包括:
根据所述差分升级包对所述目标固件的当前版本进行替换、删除、或者插入操作,以对所述目标固件进行升级。
7.一种固件差分升级包的制作装置,其特征在于,包括:
获取模块,用于获取目标固件的当前版本的目标文件以及升级版本的目标文件;其中,所述当前版本的目标文件和所述升级版本的目标文件对应的源代码均采用与地址无关的编译方式得到,且所述当前版本的目标文件与所述升级版本的目标文件的连接顺序一致;
确定模块,用于确定所述当前版本的目标文件和所述升级版本的目标文件中存在差异的差异目标文件;
分析模块,用于对所述差异目标文件进行差异分析,分别得到所述当前版本和所述升级版本的差异信息;
生成模块,用于根据所述差异信息生成差分升级包。
8.根据权利要求7所述的制作装置,其特征在于,所述获取模块还用于:
通过编译器采用与地址无关的编译方式分别对所述当前版本和所述升级版本的源代码进行编译;其中,所述源代码为C语言或者汇编语言;
按照相同的顺序分别连接对所述当前版本的源代码进行编译得到的目标文件和对所述升级版本的源代码进行编译得到的目标文件,得到所述当前版本的目标固件以及所述升级版本的目标固件。
9.根据权利要求7所述的制作装置,其特征在于,所述分析模块还用于:
确定所述当前版本和所述升级版本中的所述差异目标文件中的多个差异对象;
计算所述多个差异对象的偏移量、大小以及差值,得到所述差异信息。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被计算机运行时执行如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911118061.7A CN110837393A (zh) | 2019-11-14 | 2019-11-14 | 一种固件差分升级包的制作方法及装置、可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911118061.7A CN110837393A (zh) | 2019-11-14 | 2019-11-14 | 一种固件差分升级包的制作方法及装置、可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110837393A true CN110837393A (zh) | 2020-02-25 |
Family
ID=69575044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911118061.7A Pending CN110837393A (zh) | 2019-11-14 | 2019-11-14 | 一种固件差分升级包的制作方法及装置、可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110837393A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111381851A (zh) * | 2020-03-03 | 2020-07-07 | 上海御渡半导体科技有限公司 | 一种基于特殊编码的多固件分布式板卡的批量升级方法 |
CN111506342A (zh) * | 2020-04-23 | 2020-08-07 | 北京奇艺世纪科技有限公司 | 版本差异检测方法、装置、电子设备及存储介质 |
CN111552503A (zh) * | 2020-05-12 | 2020-08-18 | 重庆科技学院 | 工程文件处理方法、装置、计算机设备及存储介质 |
CN111913733A (zh) * | 2020-06-09 | 2020-11-10 | 武汉中科医疗科技工业技术研究院有限公司 | 制作自动升级包方法、装置、计算机设备和存储介质 |
CN112732319A (zh) * | 2021-01-22 | 2021-04-30 | 百度在线网络技术(北京)有限公司 | 文件升级方法、装置、设备和存储介质 |
CN112799707A (zh) * | 2021-01-18 | 2021-05-14 | 福建新大陆通信科技股份有限公司 | 一种ctid门禁固件升级方法及系统 |
CN112925553A (zh) * | 2021-03-18 | 2021-06-08 | 上海创功通讯技术有限公司 | 一种嵌入式设备的系统升级方法及装置 |
CN113031997A (zh) * | 2021-02-26 | 2021-06-25 | 深圳壹账通创配科技有限公司 | 升级包生成及管理方法、装置、计算机设备及存储介质 |
CN113721966A (zh) * | 2021-08-27 | 2021-11-30 | 杭州华橙软件技术有限公司 | 节点升级方法、装置、存储介质及电子装置 |
CN113721967A (zh) * | 2021-08-30 | 2021-11-30 | 苏州磐联集成电路科技股份有限公司 | 差分包生成方法,差分包生成设备,及升级方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140304697A1 (en) * | 2011-12-01 | 2014-10-09 | Tencent Technology (Shenzhen) Company Limited | Method and system for upgrading software |
CN104184814A (zh) * | 2014-08-25 | 2014-12-03 | 中山市永衡日用制品有限公司 | 嵌入式固件差分升级的文件生成和合成的方法和系统 |
CN106528086A (zh) * | 2016-10-10 | 2017-03-22 | 广州视源电子科技股份有限公司 | 一种安卓软件升级的方法及系统 |
CN106802814A (zh) * | 2016-12-14 | 2017-06-06 | 智车优行科技(北京)有限公司 | 用于软件版本升级的方法及装置 |
CN107247608A (zh) * | 2017-05-31 | 2017-10-13 | 河南思维轨道交通技术研究院有限公司 | 一种具有应用软件硬件地址无关性的操作系统实现方法 |
CN107506219A (zh) * | 2017-09-21 | 2017-12-22 | 烽火通信科技股份有限公司 | 一种基于Android系统的通用版本升级方法 |
CN109271196A (zh) * | 2018-09-28 | 2019-01-25 | 平安普惠企业管理有限公司 | App版本升级方法、装置、系统及计算机设备 |
CN109634644A (zh) * | 2018-12-27 | 2019-04-16 | 广东优世联合控股集团股份有限公司 | 通过无线通信为传感器进行固件升级的方法及其设备 |
-
2019
- 2019-11-14 CN CN201911118061.7A patent/CN110837393A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140304697A1 (en) * | 2011-12-01 | 2014-10-09 | Tencent Technology (Shenzhen) Company Limited | Method and system for upgrading software |
CN104184814A (zh) * | 2014-08-25 | 2014-12-03 | 中山市永衡日用制品有限公司 | 嵌入式固件差分升级的文件生成和合成的方法和系统 |
CN106528086A (zh) * | 2016-10-10 | 2017-03-22 | 广州视源电子科技股份有限公司 | 一种安卓软件升级的方法及系统 |
CN106802814A (zh) * | 2016-12-14 | 2017-06-06 | 智车优行科技(北京)有限公司 | 用于软件版本升级的方法及装置 |
CN107247608A (zh) * | 2017-05-31 | 2017-10-13 | 河南思维轨道交通技术研究院有限公司 | 一种具有应用软件硬件地址无关性的操作系统实现方法 |
CN107506219A (zh) * | 2017-09-21 | 2017-12-22 | 烽火通信科技股份有限公司 | 一种基于Android系统的通用版本升级方法 |
CN109271196A (zh) * | 2018-09-28 | 2019-01-25 | 平安普惠企业管理有限公司 | App版本升级方法、装置、系统及计算机设备 |
CN109634644A (zh) * | 2018-12-27 | 2019-04-16 | 广东优世联合控股集团股份有限公司 | 通过无线通信为传感器进行固件升级的方法及其设备 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111381851B (zh) * | 2020-03-03 | 2023-11-24 | 上海御渡半导体科技有限公司 | 一种基于特殊编码的多固件分布式板卡的批量升级方法 |
CN111381851A (zh) * | 2020-03-03 | 2020-07-07 | 上海御渡半导体科技有限公司 | 一种基于特殊编码的多固件分布式板卡的批量升级方法 |
CN111506342A (zh) * | 2020-04-23 | 2020-08-07 | 北京奇艺世纪科技有限公司 | 版本差异检测方法、装置、电子设备及存储介质 |
CN111552503A (zh) * | 2020-05-12 | 2020-08-18 | 重庆科技学院 | 工程文件处理方法、装置、计算机设备及存储介质 |
CN111913733A (zh) * | 2020-06-09 | 2020-11-10 | 武汉中科医疗科技工业技术研究院有限公司 | 制作自动升级包方法、装置、计算机设备和存储介质 |
CN112799707A (zh) * | 2021-01-18 | 2021-05-14 | 福建新大陆通信科技股份有限公司 | 一种ctid门禁固件升级方法及系统 |
CN112732319A (zh) * | 2021-01-22 | 2021-04-30 | 百度在线网络技术(北京)有限公司 | 文件升级方法、装置、设备和存储介质 |
CN112732319B (zh) * | 2021-01-22 | 2024-02-23 | 百度在线网络技术(北京)有限公司 | 文件升级方法、装置、设备和存储介质 |
CN113031997A (zh) * | 2021-02-26 | 2021-06-25 | 深圳壹账通创配科技有限公司 | 升级包生成及管理方法、装置、计算机设备及存储介质 |
CN112925553A (zh) * | 2021-03-18 | 2021-06-08 | 上海创功通讯技术有限公司 | 一种嵌入式设备的系统升级方法及装置 |
CN113721966A (zh) * | 2021-08-27 | 2021-11-30 | 杭州华橙软件技术有限公司 | 节点升级方法、装置、存储介质及电子装置 |
CN113721966B (zh) * | 2021-08-27 | 2024-03-29 | 杭州华橙软件技术有限公司 | 节点升级方法、装置、存储介质及电子装置 |
CN113721967A (zh) * | 2021-08-30 | 2021-11-30 | 苏州磐联集成电路科技股份有限公司 | 差分包生成方法,差分包生成设备,及升级方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110837393A (zh) | 一种固件差分升级包的制作方法及装置、可读存储介质 | |
US7089270B2 (en) | Processing software images for use in generating difference files | |
JP5019578B2 (ja) | 記憶装置に記憶されたコンテンツのバージョンを更新する方法およびシステム | |
US7661102B2 (en) | Method for reducing binary image update package sizes | |
US20050234997A1 (en) | Byte-level file differencing and updating algorithms | |
US20050010870A1 (en) | Post-processing algorithm for byte-level file differencing | |
KR20080047432A (ko) | 소프트웨어 이미지 처리 및 차이 파일 발생 방법 및 시스템 | |
CN106843842B (zh) | 一种应用程序配置文件的更新方法及装置 | |
CN112732321B (zh) | 一种固件修改方法、装置、计算机可读存储介质和设备 | |
CN106796525A (zh) | 按需加载动态脚本语言代码以减少内存使用 | |
CN109165209B (zh) | 数据库中对象类型的数据校验方法、装置、设备及介质 | |
US8413132B2 (en) | Techniques for resolving read-after-write (RAW) conflicts using backup area | |
CN113110832A (zh) | 一种智能高效代码生成方法、装置及存储介质 | |
US10747514B2 (en) | Reduced save and restore instructions for call-clobbered registers | |
CN109947711B (zh) | 一种对ios项目开发过程中的多语言文件自动化管理方法 | |
CN112286565B (zh) | 一种基于存储容器的嵌入式系统差分升级方法 | |
CN112579141A (zh) | 一种嵌入式系统的固件更新方法、装置、设备及存储介质 | |
CN112527738A (zh) | 项目描述文件优化方法、系统及存储介质 | |
CN113326063B (zh) | 数据处理方法、电子设备及存储介质 | |
CN114706586A (zh) | 代码编译、代码运行方法、装置、计算机设备及存储介质 | |
CN115167862A (zh) | 补丁方法及相关设备 | |
CN114356404A (zh) | 接口文档生成方法、系统和计算机可读存储介质 | |
CN112799707A (zh) | 一种ctid门禁固件升级方法及系统 | |
CN111538651A (zh) | 接口测试方法、装置、服务器及存储介质 | |
CN112733199A (zh) | 数据处理方法、装置、电子设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |