CN117632173A - 生成更新文件的方法及对应服务器设备、更新方法及对应客户端设备、更新方法及对应系统 - Google Patents
生成更新文件的方法及对应服务器设备、更新方法及对应客户端设备、更新方法及对应系统 Download PDFInfo
- Publication number
- CN117632173A CN117632173A CN202311092482.3A CN202311092482A CN117632173A CN 117632173 A CN117632173 A CN 117632173A CN 202311092482 A CN202311092482 A CN 202311092482A CN 117632173 A CN117632173 A CN 117632173A
- Authority
- CN
- China
- Prior art keywords
- version
- software
- binary file
- file
- update
- 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
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000015654 memory Effects 0.000 claims abstract description 323
- 238000013507 mapping Methods 0.000 claims abstract description 58
- 238000012545 processing Methods 0.000 claims description 37
- 230000004044 response Effects 0.000 claims description 6
- 238000004891 communication Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 13
- 230000008901 benefit Effects 0.000 description 9
- 238000010276 construction Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000006837 decompression Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000001131 transforming effect Effects 0.000 description 4
- 230000007774 longterm Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本公开涉及生成更新文件的方法及对应服务器设备、更新方法及对应客户端设备、更新方法及对应系统。服务器构建更新文件以更新软件。服务器编译软件的更新后的版本的源代码,从而生成软件的更新后的版本的二进制文件。基于软件的先前版本的二进制文件的部分的映射,将存储器位置映射到二进制文件的部分。将先前版本的二进制文件的多个部分中的部分的位与更新后的版本的二进制文件的对应部分的位逐位进行逻辑组合。逻辑组合包括:应用异或运算;或应用异或非运算。更新文件是基于存储器位置的映射并基于逻辑组合的结果构建的。
Description
技术领域
实施方式和实施例涉及用于更新软件的技术,特别是由服务器设备生成更新文件以及由客户端设备更新软件。
背景技术
就用于将更新文件传输到客户端设备的能耗带宽而言,特别是对于带宽有限且旨在节省能量的情况,用于更新软件的技术会是关键功能性。
例如,这正是在地面上部署的IoT物联网类型的客户端设备的OTA空中下载更新的活动中的情况,其中网络带宽通常有限且成本高昂,并且IoT客户端设备通常倾向于使用很少的能量。
例如,带宽有限且旨在节省能量的网络可以是LPWAN(术语“低功耗广域网”的缩写)类型,诸如LoRaWAN、BLE、Cat-M1、NB-IoT(分别表示长距离WAN、蓝牙低功耗、机器类型通信、类别1和窄带IoT)或Wi-Fi类型(受IEEE 802.11组的标准管辖的通信协议)。
减少所传输的数据量对于IoT客户端设备接收更新文件期间的能量节省以及相关联带宽的成本具有相当大的影响。
话虽如此,一般而言,出于效率和/或使用可用资源的限制的原因,限制所传输的数据量和能量消耗总是有利的,即使是在这方面没有特别限制的通信系统中(例如,在分别表示长期演进、第四代、第五代的LTE、4G、5G类型的通信中)也是如此。
图1图示了允许限制从软件的旧版本FW_vN到新版本FWvN+1的更新文件FWupdt中的数据量的常规技术的示例。软件的各种模块App、UTIL、HAL、SBSFU和各种函数MWfunc1、MWfunc2_vN、…、MWfuncN占用存储器的存储器区域,这些存储器区域由各自的矩形表示。
更新文件FWupdt将已经修改的存储器区域“XX..X”从软件的旧版本传送到新版本,而不传送那些未改变的“0”。即,如果在存储器卷中添加或移除存储器区域,或者如果函数MWfunc2_vN+1的修改改变了对应存储器区域的尺寸(更大或更小),那么之后的所有存储器区域MWfunc2_vN+1,…,MWfuncN,UTIL、HAL、SBSFU都偏移,即使它们的内容在新版本中没有修改。事实上,常规的存储器映射机制将存储器中连续位置处的存储器位置指派给代码的连续的函数。因此,连续地定位在修改的位置之后的存储器区域通常全部偏移,并且在更新文件FWupdt中作为修改后的存储器区域“XX..X”被传送。
而且,常规的压缩技术,例如通常是“ZIP”或“RAR”压缩,在性能上具有限制并且要求为客户端设备提供对应的解压缩手段。但是,这种类型的解压缩手段可以表示记录在存储器中的代码的相对大部分,例如10%至15%,特别是在最简单且成本最低的IoT设备中。
发明内容
下面提出的实施例和实施方式促进以与当前和通常的软件体系架构兼容的方式发送极小的更新文件,几乎仅包括软件版本之间的二进制差异。而且,更新文件的“解压缩”简单并且要求的资源少,并且更新的记录可以直接在存储器中“现场”执行,而无需整个软件的尺寸的“缓冲”存储器空间。
在实施例中,一种方法包括:构建与软件的第一版本相关联的更新文件,构建更新文件包括:编译与软件的第二版本相关联的源代码,该编译生成软件的第二版本的二进制文件;基于软件的第一版本的二进制文件的部分到存储器位置的映射将存储器位置映射到软件的第二版本的二进制文件的部分,其中软件的第二版本的二进制文件的在软件的第一版本的二进制文件中具有对应部分的部分被映射到与软件的第一版本的二进制文件的对应部分相同的存储器位置;对于软件的第一版本的二进制文件的多个部分中的一个或多个部分,将软件的第一版本的二进制文件的位与软件的第二版本的二进制文件的对应部分的位逐位进行逻辑组合,该逻辑组合包括:应用异或运算;或应用异或非运算;以及基于存储器位置到软件的第二版本的二进制文件的部分的映射并且基于软件的第一版本的二进制文件的多个部分中的一个或多个部分与软件的第二版本的二进制文件的对应部分的逻辑组合的结果来构建更新文件。
在实施例中,一种方法包括:基于更新文件将软件的第一版本的二进制文件更新为软件的第二版本的二进制文件,该更新包括:基于更新文件识别软件的第一版本的二进制文件的多个部分中的一个或多个部分;将软件的第一版本的二进制文件的识别出的部分的位与更新文件的与识别出的部分对应的位逐位进行逻辑组合,该逻辑组合包括:应用异或运算;或应用异或非运算;以及用逻辑组合的结果替换软件的第一版本的二进制文件的识别出的部分的位。
在实施例中,一种系统包括:接口;以及耦合到接口的处理电路系统,其中处理电路系统在操作中构建与软件的第一版本的二进制文件相关联的更新文件,构建更新文件包括:编译与软件的第二版本相关联的源代码,该编译生成软件的第二版本的二进制文件;基于软件的第一版本的二进制文件的部分到存储器位置的映射,将存储器位置映射到软件的第二版本的二进制文件的部分,其中软件的第二版本的二进制文件的在软件的第一版本的二进制文件中具有对应部分的部分被映射到与软件的第一版本的二进制文件中的对应部分相同的存储器位置;对于软件的第一版本的二进制文件的多个部分中的一个或多个部分,将软件的第一版本的二进制文件的位与软件的第二版本的二进制文件的对应部分的位逐位进行逻辑组合,该逻辑组合包括:应用异或运算;或应用异或非运算;以及基于存储器位置到软件的第二版本的二进制文件的部分的映射并且基于软件的第一版本的二进制文件的多个部分中的一个或多个部分与软件的第二版本的二进制文件的对应部分的逻辑组合的结果来构建更新文件。
在实施例中,一种设备包括:存储器;以及耦合到存储器的处理电路系统,其中处理电路系统在操作中基于更新文件将软件的第一版本的二进制文件更新为软件的第二版本的二进制文件,该更新包括:基于更新文件识别软件的第一版本的二进制文件的多个部分中的一个或多个部分;将软件的第一版本的二进制文件的识别出的部分的位与更新文件的与识别出的部分对应的位逐位进行逻辑组合,该逻辑组合包括:应用异或运算;或应用异或非运算;以及用逻辑组合的结果替换软件的第一版本的二进制文件的识别出的部分的位。
在实施例中,一种非暂态计算机可读介质的内容使得服务器构建与软件的第一版本相关联的更新文件,构建更新文件包括:编译与软件的第二版本相关联的源代码,该编译生成软件的第二版本的二进制文件;基于软件的第一版本的二进制文件的部分到存储器位置的映射,将存储器位置映射到软件的第二版本的二进制文件的部分,其中软件的第二版本的二进制文件的在软件的第一版本的二进制文件中具有对应部分的部分被映射到与软件的第一版本的二进制文件的对应部分相同的存储器位置;对于软件的第一版本的二进制文件的多个部分中的一个或多个部分,将软件的第一版本的二进制文件的位与软件的第二版本的二进制文件的对应部分的位逐位进行逻辑组合,该逻辑组合包括:应用异或运算;或应用异或非运算;以及基于存储器位置到软件的第二版本的二进制文件的部分的映射并且基于软件的第一版本的二进制文件的多个部分中的一个或多个部分与软件的第二版本的二进制文件的对应部分的逻辑组合的结果来构建更新文件。
在实施例中,一种非暂态计算机可读介质的内容使得设备将软件的第一版本的二进制文件更新为软件的第二版本的二进制文件,该更新包括:识别软件的第一版本的二进制文件的多个部分中的一个或多个部分;将软件的第一版本的二进制文件的识别出的部分的位与和识别出的部分对应的位逐位进行逻辑组合,该逻辑组合包括:应用异或运算;或应用异或非运算;以及用逻辑组合的结果替换软件的第一版本的二进制文件的识别出的部分的位。
根据一个方面,在这方面提出了一种用于生成用于将软件的较旧版本更新为软件的较晚版本的文件的方法,包括:
源代码的编译,生成较晚版本的二进制文件;
链接的发布,将存储器的存储器位置指派给较晚版本的二进制文件的部分,该较晚版本的所述部分的存储器位置被限制为与较早版本的对应部分的存储器位置相同;
较晚版本的二进制文件与较早版本的二进制文件之间的比较;以及
更新文件的构建,该更新文件包括所述被比较的二进制文件之间按存储器区域的差异。
所述链接的发布可以由术语“映射”来指定。
因此,由于较晚版本的二进制数据的映射受到较早版本的映射的约束,因此,特别地,对部分的修改不会产生位于这个被修改的部分之后且尚未被修改的部分的偏移,各部分的相应位置在映射期间受到约束,换言之被强加。因此,只有与被有效修改的源代码的部分对应的二进制文件的存储器区域才在映射之后被有效修改。因此,只有二进制文件的这些存储器区域会在更新文件中被传送。
而且,应该理解的是,部分与存储器中允许容纳来自源代码的基本对象(例如,函数或标量)的代码的尺寸对应。通常,在这种情况下,当8位的八位字节是处理器的基本尺寸时,部分的尺寸可以在8位和n*8位之间(8位的八位字节的整数倍“n”)。至于存储器区域,它们与传送差异的粒度对应。一般而言,存储器区域可以具有1位和整个存储器页之间的尺寸(换言之存储器中可访问的最大尺寸)。实际上,存储器区域可以具有16个八位字节或更多的尺寸。
根据一个实施例,更新文件不包括在所述被比较的二进制文件之间没有差异的存储器区域,并且其中更新文件包括具有所述被比较的二进制文件之间的所述差异的存储器区域的在较早版本的二进制文件中的存储器位置的标识。
这与其中更新文件不包括与相对于较早版本没有任何差异的存储器区域相关的信息的压缩技术对应。
根据一个实施例:
所述二进制文件之间的所述比较是通过异或运算符逐位执行的;以及
所述更新文件的构建包括由异或运算符逐位比较的结果,以传送所述被比较的二进制文件之间的所述差异。
异或运算符有利地允许将差异直接引入到接收更新的存储器中,而不必存储较晚版本的二进制文件的整个图像,因为异或运算符是其自身的逆。
根据一个实施例,如果较晚版本的二进制文件包括这样的部分:该部分在存储器中具有比在较早版本中指派给这个部分的存储器位置更大的尺寸,那么链接的发布将较早版本中空闲的新存储器位置指派给所述较大的部分,并在指派给较早版本中的这个部分的存储器位置中引入用于调用新存储器位置的指令。
因此,位于指派给较早版本中经修改的部分的存储器位置与新存储器位置之间的部分没有被偏移或修改,尽管经修改的部分的尺寸较大。
根据一个实施例,如果较晚版本的二进制文件包括在存储器中比指派给较早版本中的这个部分的存储器位置更小的部分,那么链接的发布指派具有这个相同尺寸的相同存储器位置并且将存储器位置的过多尺寸留空。
因此,位于指派给较早版本中经修改的部分的存储器位置之后的部分不会被偏移或修改,尽管经修改的部分的尺寸较小。
特别地,在这个实施例中,经修改的部分可以被完全擦除,并且因此在存储器中具有空尺寸。在这种情况下,映射指派与较早版本中具有相同尺寸的相同存储器位置,而在较晚版本中将这个存储器位置留空。
根据另一方面,提出了一种用于将存储器中包含的软件的较早版本更新为软件的较晚版本的方法,包括:
接收更新文件,该更新文件包括较晚版本的二进制文件与较早版本的二进制文件之间按存储器区域的差异;
在包含较早版本的二进制文件的存储器的部分中,用较晚版本的二进制文件的存储器区域的位替换具有差异的存储器区域的位。
换句话说,提出了直接在存储器中替换文件的二进制位,以便仅从存储器中包含的二进制数据的视角,而不是从在较晚版本中修改的代码对象(函数和标量数据)的“功能”的视角来更新差异。
根据一个实施例:
所述更新文件不包括在所述被比较的二进制文件之间没有差异的存储器区域,并且包括具有所述被比较的二进制文件之间的所述差异的存储器区域的在较早版本的二进制文件中的存储器位置的标识;
所述替换包括读取所述标识以及选择性地访问识别出的所述存储器位置。
基本上与对存储器地址的访问对应的这种“解压缩”机制,具有实现起来极其简单的优点,并且不要求像算法解压缩机制(例如,“zip”或“rar”类型)中通常那样的计算资源。
根据一个实施例:
所述更新文件包括较晚版本的二进制文件与较早版本的二进制文件通过异或运算符逐位比较的结果,以传送所述被比较的二进制文件之间的所述差异;
所述替换包括用逐位比较的所述结果的位的通过异或运算符对包含在较早版本的二进制文件的所述存储器区域中的位进行变换,所述逐位比较在所述二进制文件之间通过异或运算符进行。
根据用于将软件的较早版本更新为软件的较晚版本的方法的一个实施例,较早版本已经用较早更新文件从先前版本更新,并且较晚版本与返回到所述先前版本对应:
更新文件是较早更新文件;
所述替换包括用来自较早更新文件的比较结果的所述区域的位通过异或运算符对包含在较早版本的二进制文件的所述存储器区域中的位进行变换。
根据另一方面,还提出了一种用于针对至少一个设备将软件的较早版本更新为软件的较晚版本的方法,包括:
由服务器设备执行的如上定义的用于生成用于将软件的较早版本更新为软件的较晚版本的文件的方法;
通过通信网络向所述至少一个设备传送更新文件;
由所述至少一个客户端设备执行的如上定义的用于将软件的较早版本更新为软件的较晚版本的方法。
例如,通信可以适用于LPWAN(表示低功耗广域网)类型的通信网络,诸如LoRaWAN、BLE、Cat-M1、NB-IoT(分别表示长距离WAN、蓝牙低功耗、机器类型通信,类别1和窄带IoT),还有Wi-Fi类型(由标准IEEE 802.11定义)、LTE 4G/5G(表示长期演进,第四代/第五代)类型或有线连接类型(诸如以太网或USB)的通信网络。
根据另一方面,还提出了一种服务器设备,该服务器设备能够生成用于将软件的较早版本更新为软件的较晚版本的文件,包括:
编译器,被配置为对源代码进行编译,以生成较晚版本的二进制文件;
链接发布器,被配置为将存储器的存储器位置指派给较晚版本的二进制文件的部分,使得较晚版本的所述部分的存储器位置被约束为与较早版本的对应部分的存储器位置相同;
压缩器,被配置为:
将较晚版本的二进制文件与较早版本的二进制文件进行比较;以及
构建更新文件,该更新文件包括所述被比较的二进制文件之间按存储器区域的差异。
根据一种实施方式,压缩器被配置为构建不包括在所述被比较的二进制文件之间不具有差异的存储器区域的更新文件,并且构建包括在所述被比较的二进制文件之间具有所述差异的存储器区域在较早版本的二进制文件中的存储器位置的标识的更新文件。
根据一种实施方式,压缩器被配置为:
通过异或运算符逐位比较所述二进制文件;以及
构建包括通过异或运算符逐位比较的结果的更新文件,以传送所述被比较的二进制文件之间的所述差异。
根据一种实施方式,如果较晚版本的二进制文件包括在存储器中具有比指派给较早版本中的这个部分的存储器位置更大的尺寸的部分,那么链接发布器被配置为向所述较大部分指派较早版本中空闲的新存储器位置,并且在较早版本中指派给这个部分的存储器位置中引入用于调用新存储器位置的指令。
根据一种实施方式,如果较晚版本的二进制文件包括在存储器中比指派给较早版本中的这个部分的存储器位置更小的部分,那么链接发布器被配置为指派具有这个相同尺寸的相同存储器位置并且将存储器位置的过多尺寸留空。
根据另一方面,还提出了一种能够将包含在存储器中的软件的较早版本更新为软件的较晚版本的客户端设备,包括:
接收部件,被配置为接收更新文件,该更新文件包括较晚版本的二进制文件与较早版本的二进制文件之间按存储器区域的差异;
处理部件,被配置为用较晚版本的二进制文件的存储器区域的位在包含较早版本的二进制文件的存储器的部分中替换具有差异的存储器区域的位。
根据一个实施方式:
接收部件被配置为接收更新文件,该更新文件不包括在所述被比较的二进制文件之间没有差异的存储器区域,并且包括具有所述被比较的二进制文件之间的所述差异的存储器区域在较早版本的二进制文件中的存储器位置的标识;
处理部件被配置为读取所述标识并选择性地访问识别出的所述存储器位置。
根据一个实施方式:
接收部件被配置为接收更新文件,该更新文件包括在较早版本的二进制文件与较晚版本的二进制文件之间通过异或运算符进行逐位比较的结果,以传送所述被比较的二进制文件之间的所述差异;
处理部件被配置为用逐位比较的所述结果的位通过异或运算符对包含在较早版本的二进制文件的所述存储器区域中的位进行变换,所述逐位比较在所述二进制文件之间通过异或运算符进行。
根据一个实施方式,在能够将软件的较早版本更新为软件的较晚版本的客户端设备中,较早版本已经用较早的更新文件从先前版本更新,并且较晚版本与返回到所述先前版本对应:
接收部件被配置为将较早的更新文件恢复为更新文件;
处理部件被配置为用较早的更新文件的所述结果的位通过异或运算符对包含在较早版本的二进制文件的所述存储器区域中的位进行变换。
根据另一方面,还提出了一种系统,该系统包括如上面定义的服务器设备和至少一个如上面定义的客户端设备,该服务器设备能够通过通信网络将所述文件传送到所述至少一个客户端设备以将软件的较早版本更新为软件的较晚版本,并且该客户端设备能够利用这个更新文件将软件的较早版本更新为软件的较晚版本。
附图说明
本发明的其它优点和特征将在研究实施例和实施方式以及附图的详细描述(决不构成限制)后显现出来,其中:
上述图1图示了现有技术的情况;
图2图示了用于生成用于将软件的较早版本更新为软件的较晚版本的文件的方法的实施例;
图3图示了可以在关于图2描述的方法的实施例中采用的编译步骤的实施例和映射步骤的实施例;
图4图示了可以在关于图2描述的方法的实施例中采用的比较步骤的实施例和构建步骤的实施例;
图5图示了压缩的更新文件的结构的实施例;
图6图示了生成压缩的更新文件的方法的实施例;
图7图示了使用根据图6的方法的实施例生成的压缩的更新文件将客户端设备的存储器中包含的软件的较早版本更新为软件的较晚版本的方法的实施例;
图8是图示异或运算符xor的特性的示例优点的概念图,根据异或运算符的特性,在恢复软件的先前版本的上下文中异或运算符是其自身的逆;
图9是图示在更新尚未应用中间更新的先前版本的上下文中异或运算符的特性的示例优点的概念图;
图10是包括能够经由通信网络NTW一起通信的服务器设备SRV和至少一个客户端设备DEV的系统的功能框图;以及
图11是计算设备的实施例的功能框图。
具体实施方式
图2图示了用于生成用于将软件的较早版本更新为软件的较晚版本的文件的方法。该软件例如是IoT类型的客户端设备的固件,而更新文件的生成可以由服务器设备实现,该服务器设备在操作中远程执行客户端设备的软件的更新活动。
用于生成更新文件的方法包括:
步骤310,例如,如下面结合图3详细描述的,其中编译源代码,生成较晚版本的二进制文件;
步骤320,例如,如下面关于图3详细描述的,其中对客户端设备的存储器执行链接的发布或“映射”,以便将存储器位置指派给较晚版本的二进制文件的部分,较晚版本的所述部分的存储器位置被约束为与较早版本的对应部分的存储器位置相同;
步骤410,例如,如下面结合图4详细描述的,其中比较较晚版本的二进制文件与较早版本的二进制文件;以及
步骤420,例如,如下面关于图4详细描述的,其中构建更新文件,使得更新文件包括所述被比较的二进制文件之间按存储器区域的差异。
要注意的是,与在代码的编写期间通过“编程”方法执行的补丁叠加在旧版本上(“修补”)或插入旧版本中为此提供的空闲位置(“填充”)的常规技术相反,用于生成更新文件的方法促进以“计算”方法(即,在代码的编译和映射期间)最小化所传输的数据量。
图3图示了关于图2描述的方法的编译步骤310的实施例和发布链接或“映射”的步骤320的实施例,其例如在服务器设备中实现。在这方面,服务器设备可以包括BLD_bin块或电路系统,其在操作中根据步骤310和320构建二进制文件。
一方面,根据步骤310,编译器CMPLR被配置为对源代码vN+1_code进行编译以生成软件的较晚版本FW_vN+1的二进制文件vN+1_bin。
源代码vN+1_code可以用人可读的编程语言(.s/.c/.h)来编写,诸如C、C++、Python或其它。有利地,开发随后版本的源代码vN+1_code的程序员对于获得用于更新最小数据量的文件的生成没有特定的约束。
二进制文件vN+1_bin,也称为可执行文件,是其引用已被解析的文件,并且该文件可以被放入存储器中以供执行。二进制文件vN+1_bin可以例如用机器语言编写,并且通常包括在存储器部分中的以二进制编码的指令或基本函数。二进制文件的一部分与包含八位字节的序列的基本逻辑单元对应,该八位字节的序列与要放置在存储器的物理位置处的一段数据或代码对应。通常,部分可以具有以八位字节定义的尺寸,或者甚至为至少4个八位字节,并且例如,部分可以与32位的字(4个八位字节)对应以对跳转到或调用存储器地址的指令进行编码,以及与识别所述地址的32位对应。
另一方面,根据步骤320,链接发布器LNKR块或电路被配置为执行二进制文件vN+1_bin的映射,换言之,将旨在包含软件的存储器中的存储器位置指派给由编译器CMPLR生成的二进制文件vN+1_bin的每个部分。
链接发布器LNKR可以被配置为执行受配置文件vN_ScttrF约束的静态映射。约束链接发布器LNKR的配置文件与软件的较早版本FW_vN的各部分的映射文件vN_ScttrF(通常是分散文件)对应。
因此,链接发布器LNKR可以被配置为使得较晚版本FW_vN+1的部分的存储器位置被强制与较早版本FW_vN的对应部分的存储器位置相同。
实际上,在映射步骤320期间,较晚版本的二进制文件vN+1_bin的在较早版本的二进制文件vN_bin中已经存在的所有部分被放置在相同的存储器位置。较晚版本的二进制文件vN+1_bin的新部分可以被放置在新的存储器位置(参见下面与图6相关的#200)。
而且,通过MAP EXTRCT块或电路提取较晚版本的文件vN+1_bin的部分的映射文件vN+1_ScttrF,以便特别约束来自这个较晚版本vN+1的可能的未来更新的映射。
图4图示了可以由关于图2描述的方法所采用的比较步骤410的实施例和构建步骤420的实施例,其例如在服务器设备中实现。在这方面,服务器设备可以包括压缩器CPRSSR块或电路,其在操作中根据步骤410和420构建更新文件。
一方面,根据步骤410,压缩器CPRSSR被配置为将在步骤310和320中编译和映射的较晚版本的二进制文件vN+1_bin与较早以同样的方式获得的较早版本的二进制文件vN_bin进行比较。
有利地,比较步骤410可以是在所述二进制文件N+1_bin、vN_bin之间通过异或运算符xor进行逐位比较。
通过异或运算符xor逐位比较得出的结果(将被称为非压缩结果文件)ΔFW是二进制文件,其尺寸是较早版本vN与较晚版本vN+1中较大的二进制文件的尺寸。结果文件ΔFW中的每一位与被比较的二进制文件vN+1_bin、vN_bin中相应位的位置对应,以及,结果文件ΔFW中的每一位的值当被比较的二进制文件vN+1、vN中这个位置的位相同时等于“0”,而当被比较的二进制文件vN+1、vN中这个位置的位不同时等于“1”。
这确实允许传送所述被比较的二进制文件之间的差异,这足以在知道较早版本vN_bin的情况下将整个二进制文件更新到较晚版本vN+1_bin。
可替代地,要注意的是,也可以选择用于识别差异的等效机制,诸如通过异或非运算符提供其中“0”和“1”反转的相同结果。
而且,根据步骤420,压缩器CPRSSR被配置为建立包括所述被比较的二进制文件vN+1_bin、vN_bin之间的按存储器区域的差异DAT_diff的更新文件ΔFW、ΔFW_cpr。
因此,如果通过异或运算符xor逐位执行比较410,那么更新文件ΔFW、ΔFW_cpr的构建有利地包括在通过异或运算符xor逐位比较期间获得的“压缩之前”的结果文件ΔFW,或非压缩的更新文件ΔFW。
换言之,在非压缩的更新文件ΔFW中,不需要发送代表版本之间的一致性的“0”零。因此提出通过消除“0”零来压缩更新文件ΔFW_cpr,并且通过引入报头DSCR来描述二进制文件vN_bin、vN+1_bin中的差异DAT_diff的映射。压缩器CPRSSR可以包括串接电路或块CONCAT,其被提供以生成报头DSCR并且将包括差异DAT的数据组分组在一起。
在这方面参考图5。
图5图示了由上面关于图4描述的串接CONCAT块生成的压缩的更新文件ΔFW_cpr的结构。
在这个示例中,差异DAT_diff按照存储器区域DIFF_1、DIFF_2、...、DIFF_k被传送。每个存储器区域DIFF_i,i=[1,2,…,k]与比较的结果文件ΔFW的一部分对应,其可以例如通过相应的起始地址Offst_i和相应的长度Lght_i来识别。选择存储器区域以定义传送差异DIFF_1、DIFF_2、...、DIFF_k的粒度。实际上,如果给定存储器区域中单个位发生变化,那么比较的结果文件ΔFW的这整个存储器区域被传送(换言之,在这种情况下单个“1”和其余的“0”)。
一般而言,存储器区域可以具有1位和整个存储器页之间的尺寸(换言之存储器中可访问的最大尺寸)。实际上,存储器区域可以具有以八位字节定义的尺寸,例如至少16个八位字节的尺寸。
一方面,这允许与在修改合理最小部分的代码的情况下实际发生的二进制文件vN+1_bin中的合理最小修改数量对应;另一方面,存储器区域的尺寸的阈值,例如至少16个八位字节,允许补偿要添加到报头DSCR中以识别所述存储器区域DIFF_1、...、DIFF_k的信息量。
因此,报头DSCR至少包括具有所述差异DIFF_1、...、DIFF_k的存储器区域在较早版本的二进制文件vN_bin中的存储器位置的标识。
有利地,报头DSCR可以包括:包含差异的存储器区域的数量“k”NBR(k);更新所适用的较早版本vN和较晚版本vN+1的指定“vN->vN+1”;软件的较早版本的签名Sign_vN(可选地被截断);软件的较晚版本的签名Sign_vN+1(可选地被截断);包含分别用于每个存储器区域DIFF_1、DIFF_2、…、DIFF_k的起始地址Offst_1、Offst_2、…、Offst_k和长度Lgnth_1、Lgnth_2、…、Lgnth_k的对。而且,在压缩的更新文件ΔFW_cpr的结构中字段可以保留为空,例如为其它未来的功能性保留。
图6从总体角度图示了用于生成更新文件ΔFW_cpr的方法的实施例以及各个实施例的示例优点。
软件的较早版本FW_vN和软件的较晚版本FW_vN+1根据相应版本的源代码编译之后获得的其二进制文件的相应存储器映射被示意性示出(在图6和图7中)。
每个矩形App、MWfunc1-MWfuncN、UTIL、HAL、SBSFU表示包含软件的模块App、UTIL、HAL、SBSFU或软件的函数MWfunc1-MWfuncN的一个或多个存储器位置。
模块和函数各自由二进制代码的基本对象编码,每个对象包含在存储器的一部分中,在相应的存储器位置处。
假定较晚版本FW_vN+1的部分的存储器位置的映射在编译310和映射320步骤期间全部被约束到与较早版本FW_vN的对应部分的位置相同的位置,那么较晚版本FW_vN+1的二进制文件中的差异DIFF_1、DIFF_2与较晚版本FW_vN+1的源代码的有效修改对应。
因此,较晚版本FW_vN+1与较早版本FW_vN的比较xor的结果揭示了二进制文件FW_vN+1的与较晚版本的源代码的有效修改对应的位置处的差异DIFF_1、DIFF_2。
事实上,较晚版本FW_vN+1的二进制文件的映射到较早版本FW_vN的二进制文件的映射的约束特别允许不产生定位在经修改的函数MWfunc2_vN+1之后的所有存储器区域MWfuncN、UTIL、HAL、SBSFU的偏移,并且不产生已被修改的函数的对应存储器位置的尺寸的偏移。
因此,在经编译的二进制文件中,在较早版本FW_vN与较晚版本FW_vN+1之间已经改变的数据量被最小化,并且专门隔离包括差异DIFF_1、DIFF_2的存储器区域的压缩允许生成极其紧凑的更新文件。
更新文件ΔFW_cpr被压缩以便不包括在所述被比较的二进制文件vN+1_bin、vN_bin之间没有差异的0、…、0的存储器区域(App、MWfunc1、MWfuncN、UTIL、HAL、SBSFU)。具有所述差异DIFF_1、DIFF_2的存储器区域的存储器位置的标识DSCR在压缩的更新文件ΔFW_cpr中被传送。
而且,为了允许在源代码中进行所有可能的修改,同时保留映射期间存储器部分的约束的优点,有利地提出,如果较晚版本FW_vN+1的二进制文件vN+1_bin包括经修改的部分MWfunc2_vN+1,且该经修改的部分MWfunc2_vN+1的尺寸sz_200大于较早版本FW_vN中指派给该部分MWfunc2_vN的第一存储器位置#100的尺寸sz_100,那么链接发布LNKR将较早版本FW_vN中空闲的更大的新存储器位置#200指派给所述经修改的部分MWfunc2_vN+1。并行地,映射LNKR自动引入到新存储器位置#200的调用或跳转指令Call_#200,该指令位于第一存储器位置#100。
因此,可以修改函数MWfunc2_vN+1,而对较晚版本FW_vN+1的(一个或多个)对应部分的尺寸sz_200没有任何约束。而且,调用或跳转指令Call_#200的部分的尺寸通常与任何部分的尺寸sz_100兼容(换言之,小于或等于该尺寸),约束第一存储器位置#100。
如果较晚版本FW_vN+1的二进制文件vN+1_bin包括其尺寸(未示出)小于较早版本FW_vN中指派给这个部分MWfunc2_vN的存储器位置#100的尺寸sz_100的经修改的部分MWfunc2_vN+1,那么映射LNKR指派具有该相同尺寸sz_100的相同存储器位置#100,同时将这个存储器位置的过多尺寸留空或空置。
“留空”或“空置”意味着存储器的这个部分不用于包含有用信息,并且存储器的这个部分可以例如用任意值(例如“0”零)填充。
图7图示了用于使用以上面关于图2至图6描述的方式生成的压缩的更新文件ΔFW_cpr将客户端设备的存储器中包含的软件的较早版本FW_vN更新为软件的较晚版本FW_vN+1的对应方法。
客户端设备包括:所述存储器,通常是非易失性存储器,诸如“闪存”或“EEPROM”(表示电可擦除可编程只读存储器)存储器,其中记录有软件的较早版本FW_vN的二进制文件;接收器或接口(参见图11的接口108),被配置为接收更新文件ΔFW,有利地是压缩的ΔFW_cpr,如上所述;以及处理电路系统,被配置为在包含较早版本FW_vN的二进制文件的存储器的部分中用较晚版本FW_vN+1的二进制文件的对应存储器区域的位替换具有差异的存储器区域的位。
因此,基于更新文件ΔFW、ΔFW_cpr,软件的较晚版本FW_vN+1的写入可以直接在存储器中执行,以代替较早版本FW_vN。换句话说,在执行中访问更新文件之前,不必提供至少与整个软件的尺寸一样大的存储器空间来存储包含整个软件的更新文件。
处理电路系统在操作中将压缩的更新文件ΔFW_cpr解压缩,换言之,例如被配置为读取所述标识DSCR并选择性地访问识别出的所述存储器位置。
在这方面,处理电路系统还可以被配置为通过用“0”零(换言之,存储器中的位替换的运算符的中性项,下面示例中的异或运算符)填充未在报头DSCR中识别出的存储器区域来重建比较的结果的文件ΔFW。
在用通过异或运算符xor逐位比较的结果执行更新文件ΔFW、ΔFW_cpr的所述构建的情况下,软件的更新就可以有利地利用运算符xor的特性,根据该特性,A xor B=C<=>B=C xor A,换言之,根据该特性,运算符xor是其自身的逆。
事实上,假定更新文件ΔFW是通过FW_vN xor FW_vN+1=ΔFW生成的,那么通过FW_vN+1=FW_vN xorΔFW从较早版本FW_vN和更新文件ΔFW获得较晚版本FW_vN+1。
更特别地,在上面关于图6描述的示例中:
DIFF_1xor MWfunc2_vN=Call_#200(对于第一存储器位置#100);以及
DIFF_2xor 0…0=MWfunc2_vN+1(对于新存储器位置#200)。
图8图示了在其中较晚版本与返回到在执行上一次更新FW_vN+1之前的先前版本FW_vN对应的情况下异或运算符xor的特性的另一个优点,根据该特性,异或运算符xor是其自身的逆(换言之“A xor B xor B=A”)。
因此,在将软件的较早版本更新为软件的较晚版本的方法的情况下,较早版本FW_vN+1是用较早的更新文件ΔFW_cpr(vN->vN+1)从先前版本FW_vN更新而来的,例如如上面关于图7所描述的,并且较晚版本与返回到所述先前版本FW_vN对应。
较早的更新文件ΔFW_cpr(vN->vN+1)允许经由异或运算符xor的特性通过无区别地应用上述替换机制来直接回到所述先前版本FW_vN。
详细而言,FW_vN+1xorΔFW=FW_vN;以及
DIFF_1xor Call_#200=MWfunc2_vN;以及
DIFF_2xor MWfunc2_vN+1=0…0。
图9图示了异或运算符的特性的另一个优点,允许基于用于将版本FW_v1更新到版本FW_v2的文件和用于将版本FW_v2更新到版本FW_v3的文件来立即创建用于版本FW_v1到版本FW_v3的更新文件。
事实上,通过构造:ΔFW(v1->v3)=ΔFW(v1->v2)xorΔFW(v2->v3)。
这实际上允许由服务器设备设计更新文件,从而允许以一种既受益于极大简单性又受益于适应特定情况的方式来弥补某些客户端设备在过去的更新活动中的缺漏。
图10示意性地图示了一种系统,该系统包括能够经由通信网络NTW一起通信的服务器设备SRV和至少一个客户端设备DEV。
服务器设备SRV能够根据上面关于图2至图6描述的方法生成用于将软件的较早版本FW_vN更新为软件的较晚版本FW_vN+1的文件ΔFW_cpr,并且能够经由通信网络NTW将所述更新文件ΔFW_cpr传送到客户端设备。
客户端设备DEV能够用如此传送的更新文件ΔFW_cpr将其存储器中包含的软件的较早版本FW_vN更新为软件的较晚版本FW_vN+1。
例如,通信网络NTW可以有利地是带宽和数据速率相对受限的网络,例如LPWAN(表示低功率广域网)类型的网络,诸如LoRaWAN、BLE、Cat-M1、NB-IoT(分别表示长距离广域网、蓝牙低功耗、机器类型通信、类别1和窄带IoT)。
话虽如此,通信网络NTW在带宽和数据速率方面也可以不受特别限制,例如Wi-Fi类型(由标准IEEE 802.11定义)、LTE 4G/5G(表示长期演进,第4/5代)类型或有线连接类型(诸如以太网或USB)的网络。
图11是所描述的实施例可以应用的类型的电子设备或系统100的实施例的功能框图。例如,系统100可以用作图10的系统的实施例中的设备DEV之一。在另一个示例中,系统100可以用作图10的系统的实施例中的服务器SRV。
系统100包括一个或多个处理核心或电路102。处理核心102可以包括例如一个或多个处理器、状态机、微处理器、可编程逻辑电路、分立电路系统、逻辑门、寄存器等及其各种组合。处理核心可以控制系统100的整体操作、系统100对应用程序的执行(例如,对传感器数据进行分类的程序、使用CNN对图像进行分类的程序)等。
系统100包括一个或多个存储器104,诸如一个或多个易失性和/或非易失性存储器,这些存储器可以存储例如与系统100的控制、由系统100执行的应用和操作相关的指令和数据全部或部分。存储器104中的一个或多个可以包括存储器阵列、通用寄存器等,其在操作中可以由系统100执行的一个或多个过程共享。
系统100可以包括一个或多个传感器106(例如,图像传感器、音频传感器、加速度计、压力传感器、温度传感器等)、一个或多个接口108(例如,无线通信接口、有线通信接口、总线系统接口等),以及其它功能电路110,其可以包括天线、电源、一个或多个内置自测试(BIST)电路等,以及主总线系统190。主总线系统190可以包括耦合到系统100的各种组件的一个或多个数据、地址、电源、中断和/或控制总线。可以采用专有总线系统和接口,诸如高级可扩展接口(AXI)总线系统和接口。
如图所示,处理器102包括一个或多个内部存储器104、一个或多个接口108、一个或多个内部功能逻辑电路110。如上面所提到的,一个或多个内部存储器104可以包括一个或多个易失性和/或非易失性存储器,这些存储器可以存储例如与系统100的控制、由系统100执行的应用和操作等相关的指令和数据的全部或部分,并且可以包括存储器阵列(例如,内部高速缓存存储器)、通用寄存器等,其在操作中可以由系统100执行的一个或多个过程共享。一个或多个接口108可以包括无线通信接口、有线通信接口、总线系统接口等,以及其它功能电路110,其可以包括天线、电源、一个或多个内置自测试(BIST)电路等。
如图所示,系统100包括更新处理电路系统120,其在操作中可以执行与更新客户端设备中的嵌入软件相关联的操作,诸如上面参考图1-10所描述的。例如,当系统100被用作服务器设备时,更新处理电路系统120可以被配置为根据以上关于图2至图6描述的方法生成用于将软件的较早版本FW_vN更新为软件的较晚版本FW_vN+1的文件ΔFW_cpr,并将文件ΔFW_cpr传输到一个或多个客户端设备(例如,经由接口108)。当系统100被用作客户端设备时,更新处理电路系统可以被配置为使用从服务器设备接收(例如,经由接口108)的更新文件ΔFW_cpr将存储器104中包含的软件的较早版本FW_vN更新为软件的较晚版本FW_vN+1。
图11的系统100的实施例可以包括比所示更多的组件、可以包括比所示更少的组件、可以组合组件、可以将组件分离成子组件,及其前述的各种组合。例如,密码电路系统可以被包括在系统100的各种组件中(例如,总线系统190、传感器106等,或者作为系统100的附加组件)。
在实施例中,用于生成用于将软件的较早版本(FW_vN)更新为软件的较晚版本(FW_vN+1)的文件的方法可以概括为包括:源代码(vN+1_code)的编译(CMPLR),生成较晚版本(FW_vN+1)的二进制文件(vN+1_bin);链接(LNKR)的发布,将存储器的存储器位置指派给较晚版本(FW_vN+1)的二进制文件(vN+1_bin)的部分,较晚版本(FW_vN+1)的所述部分的存储器位置被约束为与较早版本(FW_vN)的对应部分的存储器位置相同(vN_ScttrF);较晚版本(FW_vN+1)的二进制文件(vN+1_bin)与较早版本(FW_vN)的二进制文件(vN_bin)之间的比较;以及更新文件(ΔFW,ΔFW_cpr)的构建,该文件包括所述被比较的二进制文件(vN+1_bin,vN_bin)之间按存储器区域(Offst_1-Lgth_1,…,Offst_k-Lgth_k)的差异(DAT_diff)。
在实施例中,更新文件(ΔFW_cpr)可以不包括在所述被比较的二进制文件(vN+1_bin,vN_bin)之间没有差异(0,...,0)的存储器区域,并且更新文件(ΔFW_cpr)可以包括在所述被比较的二进制文件(vN+1_bin,vN_bin)之间具有所述差异(DIFF_1,…,DIFF_k)的存储器区域在较早版本(FW_vN)的二进制文件(vN_bin,vN+1_bin)中的存储器位置的标识(DSCR)。
在实施例中,所述二进制文件(vN+1_bin,vN_bin)之间的比较可以通过异或运算符(xor)逐位执行,并且更新文件(ΔFW,ΔFW_cpr)的所述构建可以包括通过异或运算符(xor)逐位比较的结果,以传送所述被比较的二进制文件(vN+1_bin,vN_bin)之间的所述差异(DIFF_1,...,DIFF_k)。
在实施例中,当较晚版本(FW_vN+1)的二进制文件(vN+1_bin)包括部分(MWfunc2_vN+1)并且该部分(MWfunc2_vN+1)在存储器(sz_200)中具有比指派给较早版本(FW_vN)中的这个部分(MWfunc2_vN)的存储器位置(#100;sz_100)更大的尺寸时,链接的发布(LNKR)可以将较早版本(FW_vN)中空闲的新存储器位置(#200;sz_200)指派给所述较大部分(MWfunc2_vN+1),并且可以在指派给较早版本中的这个部分(MWfunc2_vN)的存储器位置(#100;sz_100)中引入用于调用新存储器位置(#200)的指令(Call_#200)。
在实施例中,当较晚版本(FW_vN+1)的二进制文件(vN+1_bin)包括部分(MWfunc2_vN+1)并且该部分(MWfunc2_vN+1)在存储器中小于指派给较早版本中的这个部分(MWfunc2_vN)的存储器位置(#100;sz_100)时,链接(LNKR)的发布可以指派具有这个相同尺寸的相同存储器位置(#100;sz_100),并且可以将存储器位置(#100;sz_100)的过多尺寸留空。
在实施例中,用于将存储器中包含的软件的较早版本(FW_vN)更新为软件的较晚版本(FW_vN+1)的方法可以概括为包括:接收包括较晚版本(FW_vN+1)的二进制文件(vN+1_bin)与较早版本(FW_vN)的二进制文件(vN_bin)之间按存储器区域(Offst_1-Lgth_1,...,Offst_k-Lgth_k)的差异(DAT_diff)的更新文件(ΔFW,ΔFW_cpr);以及用较晚版本(FW_vN+1)的二进制文件(vN+1_bin)的存储器区域的位在存储器的包含较早版本(FW_vN)的二进制文件(vN_bin)的部分中替换具有差异的存储器区域的位。
在实施例中,更新文件(ΔFW_cpr)可以不包括在所述被比较的二进制文件(vN+1_bin,vN_bin)之间没有差异的存储器区域(0,...,0),并且可以包括在所述被比较的二进制文件(vN+1_bin,vN_bin)之间具有所述差异(DIFF_1,…,DIFF_k)的存储区域在较早版本(FW_vN)的二进制文件(vN_bin,vN+1_bin)中的存储器位置的标识(DSCR);并且所述替换可以包括读取所述标识(DSCR)以及选择性地访问识别出的所述存储器位置。
在实施例中,更新文件(ΔFW,ΔFW_cpr)可以包括通过异或运算符(xor)在较晚版本的二进制文件(vN+1_bin)与较早版本的二进制文件(vN_bin)之间逐位比较的结果,以传送所述被比较的二进制文件(vN+1_bin,vN_bin)之间的所述差异(DIFF_1,...,DIFF_k);并且所述替换可以包括用在所述二进制文件(vN+1_bin,vN_bin)之间通过异或运算符(xor)的逐位比较的所述结果的位通过异或运算符(xor)对在较早版本的二进制文件(vN_bin)的所述存储器区域中包含的位进行变换。
在实施例中,将软件的较早版本(FW_vN+1)更新为软件的较晚版本(FW_vN),较早版本(FW_vN+1)已经用较早的更新文件(ΔFW,ΔFW_cpr)从先前版本(FW_vN)更新,并且较晚版本(FW_vN)与返回到所述先前版本(FW_vN)对应,更新文件(ΔFW,ΔFW_cpr)可以是较早的更新文件;并且所述替换可以包括用来自较早的更新文件的比较结果的所述区域的位通过异或运算符(xor)对较早版本的二进制文件的所述存储区域中包含的位进行变换。
在实施例中,用于针对至少一个设备将软件的较早版本(FW_vN)更新为软件的较晚版本(FW_vN+1)的方法可以被概括为包括:用于由服务器设备(SRV)生成文件(ΔFW、ΔFW_cpr)的方法,该文件(ΔFW、ΔFW_cpr)用于将软件的较早版本(FW_vN)更新为软件的较晚版本(FW_vN+1);通过通信网络(NTW)向所述至少一个设备传送更新文件(ΔFW、ΔFW_cpr);以及用于由所述至少一个客户端设备(DEV)将软件的较早版本(FW_vN)更新为软件的较晚版本(FW_vN+1)的方法。
在实施例中,能够生成用于将软件的较早版本(FW_vN)更新为软件的较晚版本(FW_vN+1)的文件的服务器设备可以被概括为包括编译器(CMPLR),编译器(CMPLR)被配置为编译源代码(vN+1_code)以便生成较晚版本(FW_vN+1)的二进制文件(vN+1_bin);链接发布器(LNKR),被配置为将存储器的存储器位置指派给较晚版本(FW_vN+1)的二进制文件(vN+1_bin)的部分,使得较晚版本(FW_vN+1)的所述部分的存储器位置被约束为与较早版本(FW_vN)的对应部分的存储器位置相同(vN_ScttrF);压缩器(CPRSSR),被配置为:将较晚版本(FW_vN+1)的二进制文件(vN+1_bin)与较早版本(FW_vN)的二进制文件(vN_bin)进行比较;以及构建更新文件(ΔFW,ΔFW_cpr),该文件包括所述被比较的二进制文件(vN+1_bin,vN_bin)之间按存储器区域的差异(DAT_diff)。
在实施例中,压缩器可以被配置为构建不包括在所述被比较的二进制文件(vN+1_bin,vN_bin)之间没有差异(0,…,0)的存储器区域的更新文件(ΔFW_cpr),并且构建包括在所述被比较的二进制文件(vN+1_bin,vN_bin)之间具有所述差异(DIFF_1,...,DIFF_k)的存储器区域在较早版本(FW_vN)的二进制文件(vN_bin,vN+1_bin)中的存储器位置的标识(DSCR)的更新文件(ΔFW_cpr)。
在实施例中,压缩器可以被配置为:通过异或运算符(xor)逐位比较所述二进制文件(vN+1_bin,vN_bin),以及可以构建包括通过异或运算符(xor)逐位比较的结果的更新文件(ΔFW,ΔFW_cpr),以传送所述被比较的二进制文件(vN+1_bin,vN_bin)的所述差异(DIFF_1,…,DIFF_k)。
在实施例中,如果较晚版本(FW_vN+1)的二进制文件(vN+1_bin)包括部分(MWfunc2_vN+1)并且该部分(MWfunc2_vN+1)在存储器中具有比指派给较早版本(FW_vN)中的这个部分(MWfunc2_vN)的存储器位置(#100;sz_100)更大的尺寸(sz_200),那么链接发布器(LNKR)可以被配置为将较早版本(FW_vN)中空闲的新存储器位置(#200;sz_200)指派给所述更大部分(MWfunc2_vN+1),并在指派给较早版本中的这个部分(MWfunc2_vN)的存储器位置(#100;sz_100)中引入对新存储器位置(#200)的调用指令(Call_#200)。
在实施例中,如果较晚版本(FW_vN+1)的二进制文件(vN+1_bin)包括部分(MWfunc2_vN+1)并且该部分(MWfunc2_vN+1)在存储器中小于指派给较早版本中的这个部分(MWfunc2_vN)的存储器位置(#100;sz_100),那么链接发布器(LNKR)可以被配置为指派具有这个相同尺寸(#100;sz_100)的相同存储器位置并将存储器位置(#100;sz_100)的过多尺寸留空。
在实施例中,能够将存储器中包含的软件的较早版本(FW_vN)更新为软件的较晚版本(FW_vN+1)的客户端设备可以被概括为包括:被配置为接收更新文件(ΔFW,ΔFW_cpr)的接收器,该更新文件包括较晚版本(FW_vN+1)的二进制文件(vN+1_bin)与较早版本(FW_vN)的二进制文件(vN_bin)之间按存储器区域(Offst_1-Lgth_1,…,Offst_k-Lgth_k)的差异(DAT_diff);以及处理电路系统,被配置为用较晚版本(FW_vN+1)的二进制文件(vN+1_bin)的存储器区域的位在包含较早版本(FW_vN)的二进制文件(vN_bin)的存储器的部分中替换具有差异的存储器区域的位。
在实施例中,接收器可以被配置为接收更新文件(ΔFW_cpr),该更新文件不包括在所述被比较的二进制文件(vN+1_bin,vN_bin)之间没有差异(0,...,0)的存储器区域,并且包括在所述被比较的二进制文件(vN+1_bin,vN_bin)之间具有所述差异(DIFF_1,…,DIFF_k)的存储器区域在较早版本(FW_vN)的二进制文件(vN_bin,vN+1_bin)中的存储器位置的标识(DSCR);并且处理电路系统可以被配置为读取所述标识(DSCR)并选择性地访问识别出的所述存储器位置。
在实施例中,接收器可以被配置为接收更新文件(ΔFW,ΔFW_cpr),该更新文件包括在较晚版本的二进制文件(vN+1_bin)与较早版本的二进制文件(vN_bin)通过异或运算符(xor)逐位比较的结果,以传送所述被比较的二进制文件(vN+1_bin,vN_bin)之间的所述差异(DIFF_1,...,DIFF_k);并且处理电路系统可以被配置为用通过异或运算符(xor)在所述二进制文件(vN+1_bin,vN_bin)之间逐位比较的所述结果的位通过异或运算符(xor)对较早版本的二进制文件(vN_bin)的所述存储器区域中包含的位进行变换。
在实施例中,接收器可以被配置为将较早的更新文件恢复为更新文件(ΔFW,ΔFW_cpr);并且处理电路系统可以被配置为用较早的更新文件的所述结果的位通过异或运算符(xor)对包含在较早版本的二进制文件(vN_bin)的所述存储器区域中的位进行变换。
在实施例中,一种系统包括服务器设备(SRV)和至少一个客户端设备(DEV),该服务器设备能够通过通信网络(NTW)将用于将软件的较早版本(FW_vN)更新到软件的较晚版本(FW_vN+1)的所述文件(ΔFW_cpr)传送到所述至少一个客户端设备(DEV),并且客户端设备(DEV)能够用这个更新文件(ΔFW_cpr)将软件的较早版本(FW_vN)更新到软件的较晚版本(FW_vN+1)。
在实施例中,一种方法包括:构建与软件的第一版本相关联的更新文件,构建更新文件包括:编译与软件的第二版本相关联的源代码,该编译生成软件的第二版本的二进制文件;基于软件的第一版本的二进制文件的部分到存储器位置的映射,将存储器位置映射到软件的第二版本的二进制文件的部分,其中软件的第二版本的二进制文件的在软件的第一版本的二进制文件中具有对应部分的部分被映射到与软件的第一版本的二进制文件的对应部分相同的存储器位置;对于软件的第一版本的二进制文件的多个部分中的一个或多个部分,将软件的第一版本的二进制文件的位与软件的第二版本的二进制文件的对应部分的位逐位进行逻辑组合,该逻辑组合包括:应用异或运算;或应用异或非运算;以及基于存储器位置到软件的第二版本的二进制文件的部分的映射并且基于软件的第一版本的二进制文件的多个部分中的一个或多个部分与软件的第二版本的二进制文件的对应部分的逻辑组合的结果来构建更新文件。
在实施例中,构建更新文件包括基于逻辑组合来识别软件的第一版本的二进制文件的与软件的第二版本的二进制文件的对应部分不同的部分。在实施例中,更新文件包括识别软件的第一版本的二进制文件的与软件的第二版本的二进制文件的对应部分不同的部分的信息。在实施例中,该方法包括:基于更新文件更新软件的第一版本的二进制文件,更新软件的第一版本的二进制文件包括逻辑组合软件的第一版本的二进制文件的识别出的部分的位与软件的第一版本的二进制文件的部分与软件的第二版本的二进制文件的对应部分的逻辑组合的结果的位。在实施例中,该方法包括:基于更新文件更新软件的第一版本的二进制文件,更新软件的第一版本的二进制文件包括逻辑组合软件的第一版本的二进制文件的部分的位与软件的第一版本的二进制文件的部分与软件的第二版本的二进制文件的对应部分的逻辑组合的结果的位。在实施例中,构建更新文件包括:确定软件的第二版本的二进制文件的映射到第一存储器位置的部分是否大于软件的第一版本的二进制文件的对应部分;以及响应于确定软件的第二版本的二进制文件的映射到第一存储器位置的部分大于软件的第一版本的二进制文件的对应部分:将第二存储器位置映射到软件的第二版本的二进制文件的该部分;以及在更新文件中包括在第一存储器位置处插入调用第二存储器位置的跳转或调用指令的指示。在实施例中,构建更新文件包括:确定软件的第二版本的二进制文件的映射到第一存储器位置的部分是否小于软件的第一版本的二进制文件中的对应部分;以及响应于确定软件的第二版本的二进制文件的映射到第一存储器位置的部分小于软件的第一版本的二进制文件的对应部分,在更新文件中包括将第一存储器位置的一部分留空的指示。在实施例中,逻辑组合包括应用异或运算。
在实施例中,一种方法包括:基于更新文件将软件的第一版本的二进制文件更新为软件的第二版本的二进制文件,该更新包括:基于更新文件识别软件的第一版本的二进制文件的多个部分中的一个或多个部分;将软件的第一版本的二进制文件的识别出的部分的位与更新文件的与识别出的部分对应的位逐位进行逻辑组合,该逻辑组合包括:应用异或运算;或应用异或非运算;以及用逻辑组合的结果替换软件的第一版本的二进制文件的识别出的部分的位。
在实施例中,该方法包括:接收更新文件。在实施例中,该方法包括:编译与软件的第二版本相关联的源代码,生成软件的第二版本的二进制文件;以及构建更新文件,构建更新文件包括:基于软件的第一版本的二进制文件的部分到存储器位置的映射,将存储器位置映射到软件的第二版本的二进制文件的部分,其中软件的第二版本的二进制文件的在软件的第一版本的二进制文件中具有对应部分的部分被映射到与软件的第一版本的二进制文件的对应部分相同的存储器位置;对于软件的第一版本的二进制文件的多个部分中的一个或多个部分,将软件的第一版本的二进制文件的位与软件的第二版本的二进制文件的对应部分的位逐位进行逻辑组合,该逻辑组合包括:应用异或运算;或应用异或非运算;以及基于存储器位置到软件的第二版本的二进制文件的部分的映射并且基于软件的第一版本的二进制文件的多个部分中的一个或多个部分与软件的第二版本的二进制文件的对应部分的逻辑组合的结果来构建更新文件。在实施例中,构建更新文件包括基于逻辑组合来识别软件的第一版本的二进制文件的与软件的第二版本的二进制文件的对应部分不同的部分。在实施例中,更新软件的第一版本的二进制文件包括:在映射到大于软件的第一版本的二进制文件的对应部分的软件的第二版本的二进制文件的部分的第一存储器位置处,插入识别第二存储器位置的跳转或调用指令;以及将软件的第二版本的二进制文件的部分插入到第二存储器位置。
在实施例中,一种系统包括:接口;以及耦合到接口的处理电路系统,其中处理电路系统在操作中构建与软件的第一版本的二进制文件相关联的更新文件,构建更新文件包括:编译与软件的第二版本相关联的源代码,该编译生成软件的第二版本的二进制文件;基于软件的第一版本的二进制文件的部分到存储器位置的映射,将存储器位置映射到软件的第二版本的二进制文件的部分,其中软件的第二版本的二进制文件的在软件的第一版本的二进制文件中具有对应部分的部分被映射到与软件的第一版本的二进制文件的对应部分相同的存储器位置;对于软件的第一版本的二进制文件的多个部分中的一个或多个部分,将软件的第一版本的二进制文件的位与软件的第二版本的二进制文件的对应部分的位逐位进行逻辑组合,该逻辑组合包括:应用异或运算;或应用异或非运算;以及基于存储器位置到软件的第二版本的二进制文件的部分的映射并且基于软件的第一版本的二进制文件的多个部分中的一个或多个部分与软件的第二版本的二进制文件的对应部分的逻辑组合的结果来构建更新文件。
在实施例中,构建更新文件包括:基于逻辑组合识别软件的第一版本的二进制文件的与软件的第二版本的二进制文件的对应部分不同的部分;以及在更新文件中包括识别软件的第一版本的二进制文件的与软件的第二版本的二进制文件的对应部分不同的部分的信息。在实施例中,处理电路系统在操作中经由接口传输更新文件。在实施例中,构建更新文件包括:确定软件的第二版本的二进制文件的映射到第一存储器位置的部分是否大于软件的第一版本的二进制文件的对应部分;以及响应于确定软件的第二版本的二进制文件的映射到第一存储器位置的部分大于软件的第一版本的二进制文件的对应部分:将第二存储器位置映射到软件的第二版本的二进制文件的部分;以及在更新文件中包括在第一存储器位置处插入调用第二存储器位置的跳转或调用指令的指示。在实施例中,该系统包括:耦合到接口的处理设备,其中处理设备在操作中基于更新文件更新软件的第一版本的二进制文件,该更新包括:基于更新文件识别软件的第一版本的二进制文件的多个部分中的一个或多个部分;将软件的第一版本的二进制文件的识别出的部分的位与更新文件的与识别出的部分对应的位进行逻辑组合,该逻辑组合包括:应用异或运算;或应用异或非运算;以及用逻辑组合的结果替换软件的第一版本的二进制文件的识别出的部分的位。
在实施例中,一种设备包括:存储器;以及耦合到存储器的处理电路系统,其中处理电路系统在操作中基于更新文件将软件的第一版本的二进制文件更新为软件的第二版本的二进制文件,该更新包括:基于更新文件识别软件的第一版本的二进制文件的多个部分中的一个或多个部分;将软件的第一版本的二进制文件的识别出的部分的位与更新文件的与识别出的部分对应的位逐位进行逻辑组合,该逻辑组合包括:应用异或运算;或应用异或非运算;以及用逻辑组合的结果替换软件的第一版本的二进制文件的识别出的部分的位。
在实施例中,该设备包括:接口,其在操作中接收更新文件。在实施例中,处理电路系统在操作中:在映射到大于软件的第一版本的二进制文件的对应部分的软件的第二版本的二进制文件的部分的第一存储器位置处插入识别第二存储器位置的跳转或调用指令;以及将软件的第二版本的二进制文件的部分插入到第二存储器位置。
在实施例中,一种非暂态计算机可读介质的内容使得服务器构建与软件的第一版本相关联的更新文件,构建更新文件包括:编译与软件的第二版本相关联的源代码,该编译生成软件的第二版本的二进制文件;基于软件的第一版本的二进制文件的部分到存储器位置的映射,将存储器位置映射到软件的第二版本的二进制文件的部分,其中软件的第二版本的二进制文件的在软件的第一版本的二进制文件中具有对应部分的部分被映射到与软件的第一版本的二进制文件的对应部分相同的存储器位置;对于软件的第一版本的二进制文件的多个部分中的一个或多个部分,将软件的第一版本的二进制文件的位与软件的第二版本的二进制文件的对应部分的位逐位进行逻辑组合,该逻辑组合包括:应用异或运算;或应用异或非运算;以及基于存储器位置到软件的第二版本的二进制文件的部分的映射并且基于软件的第一版本的二进制文件的多个部分中的一个或多个部分与软件的第二版本的二进制文件的对应部分的逻辑组合的结果来构建更新文件。在实施例中,构建更新文件包括:基于逻辑组合识别软件的第一版本的二进制文件的与软件的第二版本的二进制文件的对应部分不同的部分;以及在更新文件中包括识别软件的第一版本的二进制文件的与软件的第二版本的二进制文件的对应部分不同的部分的信息。在实施例中,内容包括可由服务器执行的指令。
在实施例中,一种非暂态计算机可读介质的内容使得设备将软件的第一版本的二进制文件更新为软件的第二版本的二进制文件,该更新包括:识别软件的第一版本的二进制文件的多个部分中的一个或多个部分;将软件的第一版本的二进制文件的识别出的部分的位与和识别出的部分对应的位逐位进行逻辑组合,该逻辑组合包括:应用异或运算;或应用异或非运算;以及用逻辑组合的结果替换软件的第一版本的二进制文件的识别出的部分的位。在实施例中,更新软件的第一版本的二进制文件包括:在映射到大于软件的第一版本的二进制文件的对应部分的软件的第二版本的二进制文件的部分的第一存储器位置处插入识别第二存储器位置的跳转或调用指令;以及将软件的第二版本的二进制文件的部分插入到第二存储器位置。在实施例中,内容包括与识别出的部分对应的位。
一些实施例可以采取计算机程序产品的形式或包括计算机程序产品。例如,根据实施例,提供了一种计算机可读介质,包括适于执行上述方法或功能中的一个或多个的计算机程序。该介质可以是物理存储介质,诸如例如只读存储器(ROM)芯片,或者盘,诸如数字多功能盘(DVD-ROM)、压缩盘(CD-ROM)、硬盘、存储器、网络,或由适当的驱动器或经由适当的连接读取的便携式介质物品,包括编码在一个或多个这样的计算机可读介质上存储的一个或多个条形码或其它相关代码中并且可由适当的阅读器设备读取。
此外,在一些实施例中,方法和/或功能性中的一些或全部可以以其它方式实现或提供,诸如至少部分地以固件和/或硬件的方式实现或提供,包括但不限于一种或多种专用集成电路(ASIC)、数字信号处理器、分立电路系统、逻辑门、标准集成电路、控制器(例如,通过执行适当的指令,并且包括微控制器和/或嵌入式控制器)、现场可编程门阵列(FPGA)、复杂的可编程逻辑器件(CPLD)等,以及采用RFID技术的设备,及其各种组合。
上述各种实施例可以组合以提供另外的实施例。如果有必要采用各种专利、申请和出版物的概念来提供另外的实施例,那么可以修改实施例的各方面。
根据上述详细描述,可以对实施例进行这些和其它改变。一般而言,在以下权利要求书中,所使用的术语不应当被解释为将权利要求限制于说明书和权利要求书中公开的具体实施例,而应当被解释为包括所有可能的实施例连同这些实施例应当享有的等同形式的完整范围。因而,权利要求书不受本公开的限制。
Claims (27)
1.一种方法,包括:
构建与软件的第一版本相关联的更新文件,构建更新文件包括:
编译与软件的第二版本相关联的源代码,该编译生成软件的第二版本的二进制文件;
基于软件的第一版本的二进制文件的部分到存储器位置的映射将存储器位置映射到软件的第二版本的二进制文件的部分,其中软件的第二版本的二进制文件的在软件的第一版本的二进制文件中具有对应部分的部分被映射到与软件的第一版本的二进制文件的对应部分相同的存储器位置;
对于软件的第一版本的二进制文件的多个部分中的一个或多个部分,将软件的第一版本的二进制文件的位与软件的第二版本的二进制文件的对应部分的位逐位进行逻辑组合,该逻辑组合包括:
应用异或运算;或
应用异或非运算;以及
基于存储器位置到软件的第二版本的二进制文件的部分的映射并且基于软件的第一版本的二进制文件的所述多个部分中的一个或多个部分与软件的第二版本的二进制文件的对应部分的逻辑组合的结果来构建更新文件。
2.根据权利要求1所述的方法,其中构建更新文件包括基于逻辑组合来识别软件的第一版本的二进制文件的与软件的第二版本的二进制文件的对应部分不同的部分。
3.根据权利要求2所述的方法,其中更新文件包括识别软件的第一版本的二进制文件的与软件的第二版本的二进制文件的对应部分不同的部分的信息。
4.根据权利要求3所述的方法,包括:
基于更新文件来更新软件的第一版本的二进制文件,更新软件的第一版本的二进制文件包括将软件的第一版本的二进制文件的识别出的部分的位与软件的第一版本的二进制文件的识别出的部分和软件的第二版本的二进制文件的对应部分的逻辑组合的结果的位逻辑组合。
5.根据权利要求1所述的方法,包括:
基于更新文件更新软件的第一版本的二进制文件,更新软件的第一版本的二进制文件包括将软件的第一版本的二进制文件的部分的位与软件的第一版本的二进制文件的该部分和软件的第二版本的二进制文件的对应部分的逻辑组合的结果的位逻辑组合。
6.根据权利要求1所述的方法,其中构建更新文件包括:
确定软件的第二版本的二进制文件的映射到第一存储器位置的部分是否大于软件的第一版本的二进制文件的对应部分;以及
响应于确定软件的第二版本的二进制文件的映射到第一存储器位置的部分大于软件的第一版本的二进制文件的对应部分:
将第二存储器位置映射到软件的第二版本的二进制文件的部分;以及
在更新文件中包括在第一存储器位置处插入调用第二存储器位置的跳转或调用指令的指示。
7.根据权利要求1所述的方法,其中构建更新文件包括:
确定软件的第二版本的二进制文件的映射到第一存储器位置的部分是否小于软件的第一版本的二进制文件中的对应部分;以及
响应于确定软件的第二版本的二进制文件的映射到第一存储器位置的部分小于软件的第一版本的二进制文件的对应部分,在更新文件中包括将第一存储器位置的一部分留空的指示。
8.根据权利要求1所述的方法,其中逻辑组合包括应用异或运算。
9.一种方法,包括:
基于更新文件将软件的第一版本的二进制文件更新为软件的第二版本的二进制文件,该更新包括:
基于更新文件识别软件的第一版本的二进制文件的多个部分中的一个或多个部分;
将软件的第一版本的二进制文件的识别出的部分的位与更新文件的与识别出的部分对应的位逐位进行逻辑组合,该逻辑组合包括:
应用异或运算;或
应用异或非运算;以及
用逻辑组合的结果替换软件的第一版本的二进制文件的识别出的部分的位。
10.根据权利要求9所述的方法,包括:
接收更新文件。
11.根据权利要求9所述的方法,包括:
编译与软件的第二版本相关联的源代码,从而生成软件的第二版本的二进制文件;以及
构建更新文件,构建更新文件包括:
基于软件的第一版本的二进制文件的部分到存储器位置的映射,将存储器位置映射到软件的第二版本的二进制文件的部分,其中软件的第二版本的二进制文件的在软件的第一版本的二进制文件中具有对应部分的部分被映射到与软件的第一版本的二进制文件的对应部分相同的存储器位置;
对于软件的第一版本的二进制文件的多个部分中的一个或多个部分,将软件的第一版本的二进制文件的位与软件的第二版本的二进制文件的对应部分的位逐位进行逻辑组合,该逻辑组合包括:
应用异或运算;或
应用异或非运算;以及
基于存储器位置到软件的第二版本的二进制文件的部分的映射并且基于软件的第一版本的二进制文件的所述多个部分中的一个或多个部分与软件的第二版本的二进制文件的对应部分的逻辑组合的结果来构建更新文件。
12.根据权利要求11所述的方法,其中构建更新文件包括基于逻辑组合来识别软件的第一版本的二进制文件的与软件的第二版本的二进制文件的对应部分不同的部分。
13.根据权利要求9所述的方法,其中更新软件的第一版本的二进制文件包括:
在映射到软件的第二版本的二进制文件的部分的第一存储器位置处,插入识别第二存储器位置的跳转或调用指令,其中所述软件的第二版本的二进制文件的该部分大于软件的第一版本的二进制文件的对应部分;以及
将软件的第二版本的二进制文件的该部分插入在第二存储器位置处。
14.一种系统,包括:
接口;以及
耦合到接口的处理电路系统,其中处理电路系统在操作中构建与软件的第一版本的二进制文件相关联的更新文件,构建更新文件包括:
编译与软件的第二版本相关联的源代码,该编译生成软件的第二版本的二进制文件;
基于软件的第一版本的二进制文件的部分到存储器位置的映射,将存储器位置映射到软件的第二版本的二进制文件的部分,其中软件的第二版本的二进制文件的在软件的第一版本的二进制文件中具有对应部分的部分被映射到与软件的第一版本的二进制文件的对应部分相同的存储器位置;
对于软件的第一版本的二进制文件的多个部分中的一个或多个部分,将软件的第一版本的二进制文件的位与软件的第二版本的二进制文件的对应部分的位逐位进行逻辑组合,该逻辑组合包括:
应用异或运算;或
应用异或非运算;以及
基于存储器位置到软件的第二版本的二进制文件的部分的映射并且基于软件的第一版本的二进制文件的所述多个部分中的一个或多个部分与软件的第二版本的二进制文件的对应部分的逻辑组合的结果来构建更新文件。
15.根据权利要求14所述的系统,其中构建更新文件包括:
基于逻辑组合识别软件的第一版本的二进制文件的与软件的第二版本的二进制文件的对应部分不同的部分;以及
在更新文件中包括识别软件的第一版本的二进制文件的与软件的第二版本的二进制文件的对应部分不同的部分的信息。
16.根据权利要求15所述的系统,其中处理电路系统在操作中经由接口传输更新文件。
17.根据权利要求14所述的系统,其中构建更新文件包括:
确定软件的第二版本的二进制文件的映射到第一存储器位置的部分是否大于软件的第一版本的二进制文件的对应部分;以及
响应于确定软件的第二版本的二进制文件的映射到第一存储器位置的部分大于软件的第一版本的二进制文件的对应部分:
将第二存储器位置映射到软件的第二版本的二进制文件的该部分;以及
在更新文件中包括在第一存储器位置处插入调用第二存储器位置的跳转或调用指令的指示。
18.根据权利要求16所述的系统,包括:
耦合到接口的处理设备,其中处理设备在操作中基于更新文件更新软件的第一版本的二进制文件,该更新包括:
基于更新文件识别软件的第一版本的二进制文件的所述多个部分中的一个或多个部分;
将软件的第一版本的二进制文件的识别出的部分的位与更新文件的与识别出的部分对应的位进行逻辑组合,该逻辑组合包括:
应用异或运算;或
应用异或非运算;以及
用逻辑组合的结果替换软件的第一版本的二进制文件的识别出的部分的位。
19.一种设备,包括:
存储器;以及
耦合到存储器的处理电路系统,其中处理电路系统在操作中基于更新文件将软件的第一版本的二进制文件更新为软件的第二版本的二进制文件,该更新包括:
基于更新文件识别软件的第一版本的二进制文件的多个部分中的一个或多个部分;
将软件的第一版本的二进制文件的识别出的部分的位与更新文件的与识别出的部分对应的位逐位进行逻辑组合,该逻辑组合包括:
应用异或运算;或
应用异或非运算;以及
用逻辑组合的结果替换软件的第一版本的二进制文件的识别出的部分的位。
20.根据权利要求19所述的设备,包括:
接口,所述接口在操作中接收更新文件。
21.根据权利要求19所述的设备,其中处理电路系统在操作中:
在映射到软件的第二版本的二进制文件的部分的第一存储器位置处插入识别第二存储器位置的跳转或调用指令,其中软件的第二版本的二进制文件的该部分大于软件的第一版本的二进制文件的对应部分;以及
将软件的第二版本的二进制文件的该部分插入在第二存储器位置处。
22.一种非暂态计算机可读介质,具有使得服务器构建与软件的第一版本相关联的更新文件的内容,构建更新文件包括:
编译与软件的第二版本相关联的源代码,该编译生成软件的第二版本的二进制文件;
基于软件的第一版本的二进制文件的部分到存储器位置的映射,将存储器位置映射到软件的第二版本的二进制文件的部分,其中软件的第二版本的二进制文件的在软件的第一版本的二进制文件中具有对应部分的部分被映射到与软件的第一版本的二进制文件的对应部分相同的存储器位置;
对于软件的第一版本的二进制文件的多个部分中的一个或多个部分,将软件的第一版本的二进制文件的位与软件的第二版本的二进制文件的对应部分的位逐位进行逻辑组合,该逻辑组合包括:
应用异或运算;或
应用异或非运算;以及
基于存储器位置到软件的第二版本的二进制文件的部分的映射并且基于软件的第一版本的二进制文件的所述多个部分中的一个或多个部分与软件的第二版本的二进制文件的对应部分的逻辑组合的结果来构建更新文件。
23.根据权利要求22所述的非暂态计算机可读介质,其中构建更新文件包括:
基于逻辑组合识别软件的第一版本的二进制文件的与软件的第二版本的二进制文件的对应部分不同的部分;以及
在更新文件中包括识别软件的第一版本的二进制文件的与软件的第二版本的二进制文件的对应部分不同的部分的信息。
24.根据权利要求22所述的非暂态计算机可读介质,其中内容包括能够由服务器执行的指令。
25.一种非暂态计算机可读介质,具有使得设备将软件的第一版本的二进制文件更新为软件的第二版本的二进制文件的内容,该更新包括:
识别软件的第一版本的二进制文件的多个部分中的一个或多个部分;
将软件的第一版本的二进制文件的识别出的部分的位与和识别出的部分对应的位逐位进行逻辑组合,该逻辑组合包括:
应用异或运算;或
应用异或非运算;以及
用逻辑组合的结果替换软件的第一版本的二进制文件的识别出的部分的位。
26.根据权利要求25所述的非暂态计算机可读介质,其中更新软件的第一版本的二进制文件包括:
在映射到软件的第二版本的二进制文件的部分的第一存储器位置处插入识别第二存储器位置的跳转或调用指令,其中软件的第二版本的二进制文件的该部分大于软件的第一版本的二进制文件的对应部分;以及
将软件的第二版本的二进制文件的该部分插入在第二存储器位置处。
27.根据权利要求25所述的非暂态计算机可读介质,其中内容包括与识别出的部分对应的位。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR2208639A FR3139216B1 (fr) | 2022-08-29 | 2022-08-29 | Procédé de génération d’un fichier de mise à jour et dispositif serveur correspondant, procédé de mise à jour et dispositif client correspondant, méthode de mise à jour et système correspondant. |
FR2208639 | 2022-08-29 | ||
US18/364,957 | 2023-08-03 | ||
US18/364,957 US20240069901A1 (en) | 2022-08-29 | 2023-08-03 | Method for generating an update file and corresponding server device, updating method and corresponding client device, updating method and corresponding system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117632173A true CN117632173A (zh) | 2024-03-01 |
Family
ID=85017794
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311092482.3A Pending CN117632173A (zh) | 2022-08-29 | 2023-08-28 | 生成更新文件的方法及对应服务器设备、更新方法及对应客户端设备、更新方法及对应系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240069901A1 (zh) |
CN (1) | CN117632173A (zh) |
FR (1) | FR3139216B1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE59108978D1 (de) * | 1990-08-28 | 1998-06-10 | Landis & Gyr Tech Innovat | Verfahren zum Aendern einer in einem Computer eines Gerätes abgespeicherten Maschinensprachenfassung eines ersten Programms in eine Maschinensprachenfassung eines durch mindestens eine Aenderung vom ersten Programm abgeleiteten zweiten Programms |
DE602004026822D1 (de) * | 2004-02-27 | 2010-06-10 | Ericsson Telefon Ab L M | Programmieren eines Flash-Speichers |
ATE413644T1 (de) * | 2005-08-18 | 2008-11-15 | Ericsson Telefon Ab L M | Rückgekoppelter linker for erhöhte delta- performanz |
EP1956482B1 (en) * | 2007-02-09 | 2011-08-17 | Telefonaktiebolaget LM Ericsson | Generating delta updates for a processing device |
US9268552B1 (en) * | 2013-06-18 | 2016-02-23 | Ayla Networks, Inc. | Patching improvement for executables in memory constrained devices |
-
2022
- 2022-08-29 FR FR2208639A patent/FR3139216B1/fr active Active
-
2023
- 2023-08-03 US US18/364,957 patent/US20240069901A1/en active Pending
- 2023-08-28 CN CN202311092482.3A patent/CN117632173A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
FR3139216A1 (fr) | 2024-03-01 |
US20240069901A1 (en) | 2024-02-29 |
FR3139216B1 (fr) | 2024-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3358465B1 (en) | In-vehicle control device, program update system, and program update software | |
US7055035B2 (en) | Method for generating a read only memory image | |
US7089270B2 (en) | Processing software images for use in generating difference files | |
KR101359834B1 (ko) | 압축 버전을 포함하는 내용을 업데이트하는 방법 및시스템들 | |
CN105009067B (zh) | 管理对存储数据单元的操作 | |
CN112424747B (zh) | 生成二进制目标文件的方法、处理系统和存储介质 | |
US20060039618A1 (en) | Method for reducing binary image update package sizes | |
US20210089294A1 (en) | Control apparatus, program update system, and program update method | |
CN111475195A (zh) | 一种固件升级方法、装置和系统 | |
US11556326B2 (en) | Methods for performing a rollback-capable software update at a device | |
WO2023221735A1 (zh) | 嵌入式设备固件更新方法、嵌入式设备及开发端设备 | |
CN109542495A (zh) | 一种软件升级方法及装置 | |
CN110597814A (zh) | 结构化数据的序列化、反序列化方法以及装置 | |
US20200042313A1 (en) | Methods and systems for remote software update | |
EP1589430A1 (en) | Differential data creating device and method, updated data recovery device and method, and program | |
KR20210041972A (ko) | 차량 ecu 소프트웨어 업데이트 장치 | |
CN109716289B (zh) | 二值图像差分修补 | |
CN113238789B (zh) | 电子设备及其固件升级方法、装置和计算机可读存储介质 | |
Mazumder et al. | An efficient code update solution for wireless sensor network reprogramming | |
CN115878351B (zh) | 消息的传输方法及装置、存储介质及电子装置 | |
CN117632173A (zh) | 生成更新文件的方法及对应服务器设备、更新方法及对应客户端设备、更新方法及对应系统 | |
CN116301602A (zh) | 数据记录或读取方法、装置、采集设备、车辆及介质 | |
CN118259964A (zh) | 指令编译码方法、设备、存储介质以及编译码系统 | |
CN115509961A (zh) | 实体存储对照表产生装置及方法 | |
JP2010020416A (ja) | データ転送方法およびデータ転送装置 |
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 |