CN109716289B - 二值图像差分修补 - Google Patents
二值图像差分修补 Download PDFInfo
- Publication number
- CN109716289B CN109716289B CN201680089463.7A CN201680089463A CN109716289B CN 109716289 B CN109716289 B CN 109716289B CN 201680089463 A CN201680089463 A CN 201680089463A CN 109716289 B CN109716289 B CN 109716289B
- Authority
- CN
- China
- Prior art keywords
- source image
- patch
- image
- updates
- series
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 53
- 230000015654 memory Effects 0.000 claims abstract description 50
- 238000006243 chemical reaction Methods 0.000 claims description 11
- 238000003860 storage Methods 0.000 claims description 7
- 230000036962 time dependent Effects 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 8
- 230000008859 change Effects 0.000 abstract description 4
- 238000011065 in-situ storage Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
提供了一种补丁生成器,用于生成表示将源图像转换为目标图像的源图像的一系列更新的补丁。所述补丁生成器用于将各部分目标图像与各版本源图像逐一进行比较。所述补丁生成器用于通过以下方式确定各版本源图像:假设补丁所针对的设备将通过逐步更新其存储的源图像来实现补丁;确定各版本源图像是当所述补丁生成器实现补丁表示的一系列更新的每次更新时所述补丁生成器期望设备存储的源图像的版本。所述补丁生成器用于比较每部分目标图像与当所述补丁生成器实现补丁中该部分目标图像对应的更新时所述补丁生成器期望设备存储的源图像的版本。所述补丁生成器根据各部分目标图像与各版本源图像之间的比较,生成补丁的一系列更新。将每部分目标图像与在实现补丁的过程期间期望设备存储的源图像的版本进行比较时,允许存在设备在其实现补丁时可以在其存储器中改变源图像。这可以减少设备的内存使用量,因为不需要设备在构建替换时保持存储器中源图像不变。
Description
本发明涉及用于生成表示软件更新的补丁的技术以及使用这些补丁更新软件的技术。
通过将替换代码发送到具有原始代码的设备,可以远程更新软件。然后,接收设备用替换代码覆盖其旧代码的副本。软件更新通常很大,因此最好在传输之前压缩替换代码,以便更有效地利用可用带宽。通常,在传输之前压缩替换代码大概减少了50%的传输数据量。
BSDiff是一种通过空口传输数据量比单独压缩数据量能更大程度减少数据量的技术。这种技术认识到,大部分替换代码一般与旧代码相同。因此,这种技术不是要传输整个图像,而是生成通过空口传输的补丁文件,所述补丁文件是对替换代码和旧代码之间的差异进行的编码。与单独压缩相比,这种技术可以更有效地利用可用带宽。与未压缩的替换代码相比,BSDiff可以减少高达90%的传输数据量。设备通过将补丁中指定的差异应用于其存储的代码版本来构建替换图像,从而逐步构建自己的替换代码副本。这种方法对于受限于小闪存的设备并不理想,因为这种方法要求设备在仍然存储原始软件图像的同时存储正在构建的新图像。
本发明的目的在于提供用于生成和实现补丁文件的技术,其中所述补丁文件能够由存储器受限的设备执行。
上述目的以及其它目的通过独立权利要求中的特征来实现。进一步的实现方式在从属权利要求、说明书和附图中体现。
根据第一方面,提供了一种补丁生成器,用于生成表示将源图像转换为目标图像的源图像的一系列更新的补丁。所述补丁生成器用于将各部分目标图像与各版本源图像逐一进行比较。所述补丁生成器用于通过以下方式确定各版本源图像:假设补丁所针对的设备将通过逐步更新其存储的源图像来实现补丁;确定各版本源图像是当所述补丁生成器实现补丁所表示的一系列更新的每次更新时所述补丁生成器期望设备存储的源图像的版本。所述补丁生成器用于比较每部分目标图像与当所述补丁生成器实现补丁中该部分目标图像对应的更新时所述补丁生成器期望设备存储的源图像的版本。所述补丁生成器根据各部分目标图像与各版本源图像之间的比较,生成补丁的一系列更新。在将每部分目标图像与在实现补丁的过程期间期望设备存储的源图像的版本进行比较时,允许存在设备在其实现补丁时可以在其存储器中改变源图像。这可以减少设备的内存使用量,因为不需要设备在构建替换时保持存储器中源图像不变。
所述补丁生成器可用于生成补丁,从而将更新表示为将源图像转换为目标图像的源图像的一系列渐进变化。将更新表示为一系列渐进变化,通过简单地预测在实现补丁的过程中设备的存储器中源图像的版本,简化了生成补丁的操作。
所述补丁生成器可用于通过以下方式将一部分目标图像与源图像进行比较:搜索期望由设备存储的候选部分对应的源图像的版本;确定如何改变所述候选部分来复制这部分目标图像。通过允许软件更新表示为设备已经存储在其存储器中的一系列变化,减小了补丁的大小。
所述补丁生成器可用于生成补丁,其中包括定义如何改变所述候选部分来复制这部分目标图像的指令。这使得接收补丁的设备能够构建自己的目标图像的版本。
所述补丁生成器可用于将一部分目标图像与源图像的存储版本进行比较。所述补丁生成器可以确定如何改变源图像的存储版本来复制这部分目标图像。然后,所述补丁生成器根据确定的变化来更新源图像的存储版本,其中,更新的源图像因此成为与目标图像后续部分相比较的源图像的存储版本。这使得补丁生成器能够直接跟踪源图像的版本,可以预期由设备在补丁中的不同点存储源图像的该版本。
所述补丁生成器可用于识别与补丁所针对的设备的存储器相关联的缓冲器的大小;根据识别的缓冲器大小延迟更新源图像的存储版本。这使得所述补丁生成器能够考虑设备的典型编程周期,其中闪存的更新在写入存储器之前存储在缓冲器中,例如,NAND闪存,在用来自缓冲器的目标图像进行编程之前,擦除整个闪存块。
所述补丁生成器可用于延迟更新存储版本一段时间,这段时间取决于设备在缓冲器中存储源图像的更新部分与设备在存储器中写入源图像的更新部分之间预期经过的时间。这使得所述补丁生成器能够解释在实现补丁中的更新和将更新结果写回存储器之间预期会导致设备延迟的任何因素。
所述补丁生成器可用于识别目标图像是否大于源图像;若是,与目标图像不大于源图像时相比,颠倒各部分目标图像与各版本源图像进行比较的顺序。这有助于所述补丁生成器使补丁大小最小化,而不管目标图像和源图像的相对大小。
根据第二方面,提供了一种用于生成表示将源图像转换为目标图像的源图像的一系列更新的补丁的方法。所述方法包括:将各部分目标图像与各版本源图像逐一进行比较。各版本源图像通过以下方式确定:假设补丁所针对的设备将通过逐步更新其存储的源图像来实现补丁;确定各版本源图像是当实现补丁表示的一系列更新的每次更新时期望设备存储的源图像的版本。比较每部分目标图像与源图像的版本,其中包括比较该部分目标图像与当实现补丁中该部分目标图像对应的更新时期望设备存储的源图像的版本。所述方法还包括:根据各部分目标图像与各版本源图像之间的比较,生成补丁的一系列更新。
根据第三方面,提供了一种非瞬时性机器可读存储介质,所述非瞬时性机器可读存储介质上存储有处理器可执行指令,来实现一种用于生成表示将源图像转换为目标图像的源图像的更新的补丁的方法。所述指令实现了一种方法,其中包括:将各部分目标图像与各版本源图像逐一进行比较。各版本源图像通过以下方式确定:假设补丁所针对的设备将通过逐步更新其存储的源图像来实现补丁;确定各版本源图像是当实现补丁表示的一系列更新的每次更新时期望设备存储的源图像的版本。比较每部分目标图像与源图像的版本,其中包括比较该部分目标图像与当实现补丁中该部分目标图像对应的更新时期望设备存储的源图像的版本。所述指令还实现了一种方法,其中包括:根据各部分目标图像与各版本源图像之间的比较,生成补丁的一系列更新。
根据第四方面,提供了一种程序管理器,用于接收一个表示将源图像转换为目标图像的源图像的更新的补丁。所述程序管理器用于从存储源图像的存储器中读取要更新的一部分源图像。所述程序管理器根据所述补丁更新该部分源图像;覆盖至少部分存储的源图像来将更新的部分写入存储器。覆盖源图像使所述程序管理器能够“原位”复制目标图像,这比单独构建目标图像使用的内存更少。
所述程序管理器可用于接收补丁,其中,所述补丁将更新表示为对一个或多个部分的源图像的一系列按特定顺序发生的改变。所述程序管理器可用于根据这个顺序读取和更新一个或多个部分的源图像。这可确保所述程序管理器将补丁中的每个更新应用于正确版本的源图像,以便重建过程与用于生成补丁的过程保持一致。
所述程序管理器可用于通过覆盖与这部分相对应的部分存储的源图像来将更新的部分写入存储器。这样可以保持程序管理器访问的源图像的版本,以实现与用于生成补丁的版本一致的补丁。
根据第五方面,提供了一种方法,包括:接收一个表示将源图像转换为目标图像的源图像的更新的补丁。所述方法包括:读取存储器中存储的一部分源图像;根据所述补丁更新该部分源图像。所述方法还包括:覆盖至少部分存储的源图像来将更新的部分写入存储器。
根据第六方面,提供了一种非瞬时性机器可读存储介质,所述非瞬时性机器可读存储介质上存储有处理器可执行指令,来实现一种方法,所述方法包括:接收一个表示将源图像转换为目标图像的源图像的更新的补丁。所述指令实现了一种方法,其中包括:读取存储器中存储的一部分源图像。所述指令还实现了一种方法,其中包括:根据所述补丁更新该部分源图像;覆盖至少部分存储的源图像来将更新的部分写入存储器。
现结合附图通过例子来描述本发明。在附图中:
图1示出了一种补丁生成器的示例;
图2示出了一种补丁形成方法的流程图;
图3示出了一个关于补丁生成的示例;
图4示出了一种程序管理器的示例;
图5示出了一种更新源图像的方法的流程图。
图1示出了一种补丁生成器100的示例。示例性地示出的补丁生成器包括多个功能块。在实践中,补丁生成器可能通过软件来实现。因此,补丁生成器可以全部或部分由在软件控制下起作用的处理器实现。因此,图1中所示的功能块可以由存储在非瞬时性机器可读存储介质上的单个计算机程序来实现。在其它实现方式中,图1中的补丁生成器可以由多个单独的计算机程序实现。图1并非旨在定义软件中不同程序、不同流程或不同功能之间的严格划分。在一个实现方式中,补丁生成器可以形成服务器的补丁生成工具,所述服务器的任务是为多个分布式设备生成固件。
在其它实现方式中,补丁生成器的一些或所有功能可以全部或部分以硬件的方式实现。
所述补丁生成器(100)包括多个功能块,其中包括比较单元101、差异生成器102和图像更新器103。至少比较单元和图像更新器可访问存储器104。参考图2来描述这些功能块的操作,图2提供了补丁生成技术的概述。
所述补丁生成器(100)用于生成补丁。所述补丁包括与所述补丁生成器分开的“设备”的一系列指令(所述设备也可以是较大设备的组成部分,例如单个芯片)。本质上,所述补丁是一个文件,指示设备如何更新其软件。替换软件被称为“目标图像”,存储在所述设备中的原始代码被称为“源图像”。图像可以是设备软件中的任何程序、流程或功能,或其任何部分。所述补丁描述了设备如何更新其源图像从而将源图像转换为目标图像。
当比较单元101将一部分目标图像与源图像进行比较时,在步骤S201中开始使用用于生成补丁的技术。源图像和目标图像都存储在存储器104中。在大多数实现方式中,比较单元将在源图像中搜索与目标图像部分非常相似的部分,以便使必须在补丁中表示的差异的数量最小化。差异生成器102识别在步骤S201中识别的目标图像部分和源图像部分之间的任何差异,以便确定如何更新源图像部分以复制目标图像部分(步骤S202)。然后将这些差异添加到补丁中(步骤S203)。
然后,在步骤S204中,将在先前步骤中确定的更新应用于由存储器104存储的源图像的版本。因此,所述方法的下一次迭代将下一目标图像部分与更新的源图像而不是原始源图像进行比较。因此,补丁生成器使用“参考”源图像生成补丁,其中如果要将源图像转换为目标图像,每当补丁生成器确定应该对源图像进行改变时,所述“参考”源图像也随之改变。
重复图2的步骤S201至S204所示的处理,直到补丁生成器已经完成对所有目标图像(步骤S205)的操作。生成的补丁将更新表示为将源图像转换为目标图像的对源图像的一系列渐进式变化。
与始终将目标图像部分与原始源图像进行比较的技术相比,连续地改变“参考”源图像导致在步骤S202中确定的更新不同。生成的补丁也是不同的,其更新指令引用的是不断变化的源图像,而不是始终相同的源图像。这对设备有重要影响。如果补丁生成器始终将目标图像部分与原始源图像进行比较,则设备不得不原封不动地保存原始源图像作为参考,一直到设备完成构建替换为止。相比之下,上面描述的补丁生成技术模仿了在设备上应用补丁时会发生什么,即如果设备直接更新存储在其存储器中的源图像,而不是存储源图像和“过程中的”目标图像。该技术使得设备上的源图像的“原位”更新成为可能,减少了设备实现补丁所需的内存量。
图3中示出了关于补丁生成的实施例的更详细示例。图3示出了源图像301和目标图像302。该过程开始时,对于源图像和目标图像,将指针303均设置为零。将源图像编入索引,优选地使用后缀阵列,因为可以用来快速定位源图像内的特定子串模式的每次出现。同样也可以使用任何其它合适的模式匹配技术。然后,将一部分目标图像与源图像进行比较,以识别为复制这部分目标图像提供良好起点的候选部分。该比较产生所谓的“控制三分量”306。该分量由三个值组成:x、y和z。该分量还可以伴有“diff”和“extra”(分别为306和307)。这些数据共同表示对接收设备的指令,应通过应用改变“diff”并添加额外字节“e”,将“x”字节数据从位置“y”复制到位置“z”。
控制三分量应用于源图像,将源图像从原始图像更改为“中间”图像。然后将指针向下移动适当的数量的字节(即已经复制的字节的数量加上额外字节的数量)。然后重复该过程,直到指针到达文件末尾。因此,补丁生成器引用的“源图像”是在模拟将在设备中发生的渐进转换时不断变化的图像。
补丁由控制三分量构成,所述控制三分量表示接收设备的一系列指令。指令是有顺序的,并且当接收设备按顺序应用指令时,源图像会逐渐转换为目标图像(如下所述)。补丁大多是空的,因此可以很好地压缩补丁从而通过空口进行传输。
在生成补丁时更新参考源图像,从而模拟当接收设备逐渐更新其自身版本的源图像时开始的图像。有时会有影响设备如何操作的因素,这些因素会影响设备在补丁中实现特定指令时存储在存储器中的源图像的版本。当补丁生成器更新自己的源图像版本时,补丁生成器优先考虑任何这样的因素。一个例子是设备将更新写入其存储的源图像版本的速度。一些设备一次只能擦除一个内存块,因此这些设备将内存写入存储在中间缓冲器中,直到有一块写入要传输到内存中。因此,对源图像的更新将在覆盖设备存储器中原始源图像之前在缓冲器中存储一段时间。为了解决这个问题,补丁生成器优先用于模拟补丁针对的设备的典型闪存编程循环。因此,图像更新器可以延迟更新其自身版本的源图像一段时间,这段时间就是预期在设备实现该部分补丁与设备更新自己版本的源图像之间经过的时间。
一可用示例中,源图像和目标图像如下:
源图像:“abcdefghijklmnopqrstuvwxyz”
目标图像:“abfghijkpqrstuvcde”
生成补丁的过程可包括下列指令:
从偏置0复制两个字符
源图像现为“abcdefghijklmnopqrstuvwxyz”(未变化)
从偏置5复制六个字符
源图像现为“abfghijkijklmnopqrstuvwxyz”
从偏置15复制七个字符
源图像现为“abfghijkpqrstuvpqrstuvwxyz”
添加三个字符“cde”并结束
源图像现为“abfghijkpqrstuvcde”,符合目标。
注意:通过排除将作为标准BSDiff算法的一部分执行的diff方面,已经简化了上述指令。
同样要注意的是:即使字符“cde”在原始源图像中也存在,但是这些字符在先前的一个操作中被消除了,所以在步骤4中,仍然有必要添加这些字符。构造补丁以允许这样的消除,可能在源图像朝向目标图像当场修改的过程中发生。
如果目标图像大于源图像,则补丁生成器还可以修改上述技术;如果目标图像大于源图像,则补丁生成器优选地以相反的顺序实现目标图像。因此,用于生成补丁的技术与上述相同,只是补丁生成器从目标图像的末尾开始工作一直到开始,而不是从开始到末尾。如果没有这种处理,在渐进式更新到达那些部分之前,目标图像与源图像之间最相关的部分将会被覆盖。这将导致补丁更大,空口可用带宽的使用更低效。
本文描述的技术还促进了接收补丁的设备的创新。现在的设备可以用于通过逐步覆盖存储在存储器中的源图像来原位实现补丁。
图4示出了一种设备中程序管理器400的示例。示例性地示出的程序管理器包括多个功能块,如图1中的补丁生成器。在实践中,程序管理器可能通过软件来实现。因此,图4中所示的功能块可以由存储在非瞬时性机器可读存储介质上的单个计算机程序来实现。在其它实现方式中,图4中的程序管理器可以由多个单独的计算机程序实现。图4并非旨在定义软件中不同程序、不同流程或不同功能之间的严格划分。程序管理器可以全部或部分由在软件控制下起作用的处理器实现。(在其它实现方式中,程序管理器的部分或全部功能可以全部或部分通过硬件实现。)在一个实现方式中,程序管理器可以在包括在设备中的芯片上形成一部分引导加载程序。
所述程序管理器(400)包括多个功能块,其中包括输入单元401、转换单元402和图像更新器403。至少转换单元和图像更新器可访问存储器404。参考图5来描述这些功能块的操作,图5提供了如何在设备中原位应用补丁的概述。
当输入单元接收补丁并将其传递给转换单元402时,应用补丁的过程开始于步骤S501。包括程序管理器(400)的设备适当的包括天线、接收链、解调器、解码器和解压缩器等,所以输入到程序管理器的补丁与补丁生成器输出的补丁相同(假设补丁已成功发送并接收)。在步骤S502中,转换单元通过从存储器读取第一补丁指令所涉及的部分来开始更新源图像。转换单元通过应用补丁中的指令来更新这部分源图像(步骤S503)。该指令可能涉及从源图像中的一个位置读取字节,以便可以将它们写回到不同的位置,在将它们写回存储器之前对读取字节进行一些更改和/或为读取字节添加一些额外的字节。通过覆盖已经存储在那里的至少部分源图像,图像更新器403将更新的部分写回存储器(步骤S504)。在许多情况下,当更新的部分被写回存储器时,覆盖在步骤S504中从存储器读取的那部分源图像。在一些设备中,可以通过缓冲器将更新的部分写回存储器(如上所述)。
程序管理器使源图像的更新部分直接写回存储的源图像的一个结果是设备不必同时存储原始源图像和目标图像的“过程中”版本。相反,设备只存储逐步更新版本的源图像,这有效节约了内存。程序管理器优先以与更新在补丁中呈现的顺序相同的顺序实现补丁中的更新,以便以补丁生成器预期的方式逐步更新其存储版本的源图像。
尽管上面的描述涉及通过无线连接发送和接收的补丁,但是应该理解,这仅是可以有益地使用本文描述的技术的一个应用实例。这些技术同样可以用于生成通过其它通信手段交换的补丁,包括有线连接。
申请人在此独立地公开了本文所述的每个单独的特征以及两个或以上这样的特征的任何组合。只要这些特征或组合能够基于本说明书作为整体根据本领域技术人员的常识来执行,不管这些特征或特征的组合是否解决了本文公开的任何问题,不限于权利要求的范围。申请人指出本发明的各方面可以包括任何这样的单独的特征或特征组合。鉴于前面的描述,对于本领域技术人员显而易见的是,可以在本发明的范围内进行各种修改。
Claims (14)
1.一种补丁生成器,其特征在于:用于生成表示将源图像转换为目标图像的所述源图像的一系列更新的补丁,所述补丁用于在所针对的设备中通过逐步进行所述一系列更新的方式实现所述源图像到所述目标图像的转换,其中所述目标图像包括多个目标图像部分,所述多个目标图像部分与所述一系列更新一一对应,所述一系列更新的每一次更新用于将所述设备存储的当前版本的源图像转换成在所述设备存储的下一个版本的源图像;
所述补丁生成器包括:
比较单元,用于将每个目标图像部分与对应更新所要更新的版本的源图像进行比较;
差异生成器,用于根据各目标图像部分与对应更新所要更新的版本的源图像之间的比较,生成所述补丁的所述一系列更新。
2.如权利要求1所述的补丁生成器,其特征在于,用于通过以下方式将每个目标图像部分与对应更新所要更新的版本的源图像进行比较:
在该版本的源图像中搜索候选部分;
确定如何改变所述候选部分来复制所述目标图像部分。
3.如权利要求2所述的补丁生成器,其特征在于,用于生成补丁,其中包括定义如何改变所述候选部分来复制所述目标图像部分的指令。
4.如权利要求1所述的补丁生成器,其特征在于,用于:
识别与所述补丁所针对的设备的存储器相关联的缓冲器的大小;
根据识别的缓冲器大小延迟更新存储的相应版本的源图像。
5.如权利要求4所述的补丁生成器,其特征在于,用于延迟更新存储的相应版本的源图像一段时间,这段时间取决于所述设备在缓冲器中存储更新部分的源图像与所述设备在存储器中写入所述更新部分的源图像之间预期经过的时间。
6.如权利要求1-5中任一项所述的补丁生成器,其特征在于,用于:
识别目标图像是否大于源图像;
若是,与目标图像不大于源图像时相比,颠倒每个目标图像部分与对应更新所要更新的源图像之间进行比较的顺序。
7.一种用于生成补丁的方法,所述补丁表示将源图像转换为目标图像的源图像的一系列更新,其特征在于,所述补丁用于在所针对的设备中通过逐步进行所述一系列更新的方式实现所述源图像到所述目标图像的转换,其中所述目标图像包括多个目标图像部分,所述多个目标图像部分与所述一系列更新一一对应,所述一系列更新的每一次更新用于将所述设备存储的当前版本的源图像转换成所述设备存储的下一个版本的源图像,所述方法包括:
将各目标图像部分与对应更新所要更新的版本的源图像进行比较;
根据各目标图像部分与对应更新所要更新的版本的源图像之间的比较,生成所述补丁的所述一系列更新。
8.一种非瞬时性机器可读存储介质,所述非瞬时性机器可读存储介质上存储有处理器可执行指令,来实现一种用于生成补丁的方法,所述补丁表示将源图像转换为目标图像的源图像的一系列更新,其特征在于,所述补丁用于在所针对的设备中通过逐步进行所述一系列更新的方式实现所述源图像到所述目标图像的转换,其中所述目标图像包括多个目标图像部分,所述多个目标图像部分与所述一系列更新一一对应,所述一系列更新的每一次更新用于将所述设备存储的当前版本的源图像转换成所述设备存储的下一个版本的源图像,所述方法包括:
将每个目标图像部分与对应更新所要更新的版本的源图像进行比较;
根据每个目标图像部分与对应更新所要更新的版本的源图像之间的比较,生成所述补丁的所述一系列更新。
9.一种程序管理器,其特征在于,用于:
接收补丁,所述补丁表示将源图像转换为目标图像的源图像的一系列更新;所述补丁用于在所针对的设备中通过逐步进行所述一系列更新的方式实现所述源图像到所述目标图像的转换,
在所述一系列更新的每次更新时:将所述设备存储的当前版本的源图像转换成所述设备存储的下一个版本的源图像。
10.如权利要求9所述的程序管理器,其特征在于,在所述一系列更新的每次更新时:从存储相应版本的源图像的存储器中读取要更新的源图像的一部分,根据所述补丁更新该部分的源图像,通过覆盖与这部分的源图像相对应的源图像的存储部分来将更新的部分写入存储器。
11.一种更新源图像的方法,其特征在于,包括:
接收补丁,所述补丁表示将源图像转换为目标图像的源图像的一系列更新;所述补丁用于在所针对的设备中通过逐步进行所述一系列更新的方式实现所述源图像到所述目标图像的转换,
在所述一系列更新的每次更新时:将所述设备存储的当前版本的源图像转换成所述设备存储的下一个版本的源图像。
12.如权利要求11所述的方法,其特征在于,在所述一系列更新的每次更新时:从存储相应版本的源图像的存储器中读取要更新的源图像的一部分,根据所述补丁更新该部分的源图像,通过覆盖与这部分的源图像相对应的源图像的存储部分来将更新的部分写入存储器。
13.一种非瞬时性机器可读存储介质,其特征在于,所述非瞬时性机器可读存储介质上存储有处理器可执行指令,来实现一种更新源图像的方法,所述方法包括:
接收补丁,所述补丁表示将源图像转换为目标图像的源图像的一系列更新;
所述补丁用于在所针对的设备中通过逐步进行所述一系列更新的方式实现所述源图像到所述目标图像的转换,
所述一系列更新的每一次更新时:将所述设备存储的当前版本的源图像转换成所述设备存储的下一个版本的源图像。
14.如权利要求13所述的非瞬时性机器可读存储介质,其特征在于,在所述一系列更新的每次更新时:从存储相应版本的源图像的存储器中读取要更新的源图像的一部分,根据所述补丁更新该部分的源图像,通过覆盖与这部分的源图像相对应的源图像的存储部分来将更新的部分写入存储器。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2016/072753 WO2018054496A1 (en) | 2016-09-23 | 2016-09-23 | Binary image differential patching |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109716289A CN109716289A (zh) | 2019-05-03 |
CN109716289B true CN109716289B (zh) | 2021-01-12 |
Family
ID=56985629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680089463.7A Active CN109716289B (zh) | 2016-09-23 | 2016-09-23 | 二值图像差分修补 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10802819B2 (zh) |
EP (1) | EP3510483B1 (zh) |
CN (1) | CN109716289B (zh) |
WO (1) | WO2018054496A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3830689A4 (en) | 2018-08-03 | 2022-03-23 | Sierra Wireless, Inc. | REMOTE SOFTWARE UPDATING METHODS AND SYSTEMS |
EP3884377A1 (en) | 2018-12-13 | 2021-09-29 | Huawei Technologies Co., Ltd. | In place patch buffer offset optimisation |
EP3680773B1 (en) * | 2019-01-08 | 2023-08-02 | Argus Cyber Security Ltd | System and method for updating a computing device |
CN111415708B (zh) * | 2020-03-24 | 2023-05-05 | 山东大学 | 双缓冲模型实现大规模数据库聚类方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033728A (zh) * | 2009-09-25 | 2011-04-27 | Arm有限公司 | 图形处理系统 |
CN103294439A (zh) * | 2013-06-28 | 2013-09-11 | 华为技术有限公司 | 一种图像更新方法、系统及装置 |
CN104424872A (zh) * | 2013-09-03 | 2015-03-18 | 三星电子株式会社 | 图像调整装置和使用碎片图像执行图像校正的方法 |
CN105046701A (zh) * | 2015-07-08 | 2015-11-11 | 安徽大学 | 一种基于构图线的多尺度显著目标检测方法 |
EP3038017A1 (en) * | 2014-12-23 | 2016-06-29 | Thomson Licensing | Method of generating descriptor for interest point in image and apparatus implementing the same |
CN105913065A (zh) * | 2016-04-12 | 2016-08-31 | 中国科学院遥感与数字地球研究所 | 一种图像目标区域提取的方法及系统 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4304936B2 (ja) * | 2002-08-20 | 2009-07-29 | セイコーエプソン株式会社 | 画像形成装置および画像形成方法 |
JP4464657B2 (ja) * | 2002-11-12 | 2010-05-19 | パナソニック株式会社 | 曲面画像処理装置及び曲面画像処理方法 |
US7353284B2 (en) * | 2003-06-13 | 2008-04-01 | Apple Inc. | Synchronized transmission of audio and video data from a computer to a client via an interface |
WO2004114130A2 (en) | 2003-06-23 | 2004-12-29 | Red Bend Ltd. | Method and system for updating versions of content stored in a storage device |
US7509635B2 (en) * | 2003-09-26 | 2009-03-24 | Red Hat, Inc. | Software and data file updating process |
US7492953B2 (en) * | 2004-06-17 | 2009-02-17 | Smith Micro Software, Inc. | Efficient method and system for reducing update requirements for a compressed binary image |
EP1855197B1 (en) * | 2006-05-10 | 2012-12-19 | Research In Motion Limited | Method and system for incremental patching of binary files |
US8015220B1 (en) * | 2008-08-05 | 2011-09-06 | Smith Micro Software, Inc. | Block-based differencing algorithm |
US8468516B1 (en) * | 2008-12-19 | 2013-06-18 | Juniper Networks, Inc. | Creating hot patches for embedded systems |
JP5346253B2 (ja) * | 2009-08-24 | 2013-11-20 | 株式会社日立ソリューションズ | ファームウェア更新システム、及び情報機器、並びにプログラム |
US20130104119A1 (en) * | 2011-10-24 | 2013-04-25 | Brian Matsuo | Streaming packetized binary patching system and method |
US9053107B1 (en) * | 2011-12-06 | 2015-06-09 | Google Inc. | Determining updates for files based on an organization of the files on different blocks of a storage device |
JP2013225760A (ja) * | 2012-04-20 | 2013-10-31 | Sony Corp | 記録装置、撮像記録装置、記録方法及びプログラム |
CN102722386B (zh) * | 2012-05-28 | 2015-09-30 | 华为终端有限公司 | 生成无线固件升级包的方法和装置 |
US9588884B2 (en) | 2012-06-26 | 2017-03-07 | Red Bend Ltd. | Systems and methods for in-place reorganization of device storage |
US9110939B2 (en) | 2012-10-05 | 2015-08-18 | Here Global B.V. | Method and apparatus for providing incremental database updates based on delta pages |
US9780938B2 (en) * | 2015-06-25 | 2017-10-03 | Intel IP Corporation | Patch download with improved acknowledge mechanism |
US20170277517A1 (en) * | 2016-03-22 | 2017-09-28 | M2Communication Inc. | Method Of Updating Program Code And Electronic Device Using The Same |
US10203947B2 (en) * | 2016-08-03 | 2019-02-12 | Toyota Infotechnology Center Usa, Inc. | Efficient over-the-air software update for a connected vehicle |
-
2016
- 2016-09-23 CN CN201680089463.7A patent/CN109716289B/zh active Active
- 2016-09-23 WO PCT/EP2016/072753 patent/WO2018054496A1/en unknown
- 2016-09-23 EP EP16770291.9A patent/EP3510483B1/en active Active
-
2019
- 2019-03-22 US US16/362,325 patent/US10802819B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033728A (zh) * | 2009-09-25 | 2011-04-27 | Arm有限公司 | 图形处理系统 |
CN103294439A (zh) * | 2013-06-28 | 2013-09-11 | 华为技术有限公司 | 一种图像更新方法、系统及装置 |
CN104424872A (zh) * | 2013-09-03 | 2015-03-18 | 三星电子株式会社 | 图像调整装置和使用碎片图像执行图像校正的方法 |
EP3038017A1 (en) * | 2014-12-23 | 2016-06-29 | Thomson Licensing | Method of generating descriptor for interest point in image and apparatus implementing the same |
CN105046701A (zh) * | 2015-07-08 | 2015-11-11 | 安徽大学 | 一种基于构图线的多尺度显著目标检测方法 |
CN105913065A (zh) * | 2016-04-12 | 2016-08-31 | 中国科学院遥感与数字地球研究所 | 一种图像目标区域提取的方法及系统 |
Non-Patent Citations (3)
Title |
---|
Infrared Patch-Image Model for Small Target Detection in a Single Image;Gao, C等;《IEEE Transactions on Image Processing》;20131231;第22卷(第12期);第4996-5009页 * |
基于形状特征的棉花异性纤维图像分割方法;夏心怡等;《农机化研究》;20101231(第7期);第13-16页 * |
直接基于灰度图象的多尺度角点检测方法;吴更石等;《信号处理》;19981231;第14卷(第A期);第6-11页 * |
Also Published As
Publication number | Publication date |
---|---|
US20190220272A1 (en) | 2019-07-18 |
EP3510483B1 (en) | 2023-12-20 |
EP3510483A1 (en) | 2019-07-17 |
CN109716289A (zh) | 2019-05-03 |
WO2018054496A1 (en) | 2018-03-29 |
US10802819B2 (en) | 2020-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8055096B2 (en) | Method and system for incremental patching of binary files | |
CN109716289B (zh) | 二值图像差分修补 | |
KR101359834B1 (ko) | 압축 버전을 포함하는 내용을 업데이트하는 방법 및시스템들 | |
US10430176B2 (en) | In-vehicle control device, program update system, and program update software | |
US8943492B2 (en) | Method and system for generating a reverse binary patch | |
US10228934B2 (en) | Vehicle-mounted control device, program writing device, program generating device and program | |
US10067032B2 (en) | Back-up and restoration of data between volatile and flash memory | |
EP1934727B1 (en) | Method and system for in-place updating content stored in a storage device | |
CA2588001C (en) | Method and system for incremental patching of binary files | |
US9577666B2 (en) | Method and system | |
WO2004068348A1 (ja) | 差分データ生成装置及び方法、更新後データ復元装置及び方法、並びにプログラム | |
CN111052075B (zh) | 提高在位固件更新稳健性的方法及装置 | |
KR20070089380A (ko) | 패치 파일 생성 방법 및 그 방법을 수행하는 프로그램을기록한 컴퓨터 판독 가능한 기록매체 | |
US11108405B2 (en) | Devices and methods for compression and decompression | |
EP1873631B1 (en) | Method and system for generating a reverse binary patch | |
CN117632173A (zh) | 生成更新文件的方法及对应服务器设备、更新方法及对应客户端设备、更新方法及对应系统 | |
JP2021015388A (ja) | 電子制御装置 | |
WO2020119904A1 (en) | In place patch buffer offset optimisation |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |