CN111052075B - 提高在位固件更新稳健性的方法及装置 - Google Patents

提高在位固件更新稳健性的方法及装置 Download PDF

Info

Publication number
CN111052075B
CN111052075B CN201780094454.1A CN201780094454A CN111052075B CN 111052075 B CN111052075 B CN 111052075B CN 201780094454 A CN201780094454 A CN 201780094454A CN 111052075 B CN111052075 B CN 111052075B
Authority
CN
China
Prior art keywords
image
page
replacement
update apparatus
memory
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
Application number
CN201780094454.1A
Other languages
English (en)
Other versions
CN111052075A (zh
Inventor
克里斯托弗·凯万·洛伊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN111052075A publication Critical patent/CN111052075A/zh
Application granted granted Critical
Publication of CN111052075B publication Critical patent/CN111052075B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种用于更新由设备使用具有多个页面的存储器存储的镜像的镜像更新装置,用于:构建替换镜像部分;根据预定义的覆盖类型,识别对页面进行将所述替换镜像部分写入所述存储器的覆盖类型;记录所述识别的覆盖类型的所述替换镜像部分已为该页面构建。

Description

提高在位固件更新稳健性的方法及装置
本发明涉及使用补丁更新软件的技术。
通过向具有原始代码的设备发送替换代码,可以远程更新软件。然后,所述接收设备使用替换代码覆盖其旧代码的副本。软件更新通常会很大,因此最好在传输所述替换代码之前对其进行压缩,以便更有效地使用可用带宽。在传输之前压缩所述替换代码通常会使传输的数据量减少约50%。
一种可以比单用压缩技术更能减少通过空口传输的数据量是BSDiff。这种技术认识到,所述替换代码中有许多通常与所述旧代码相同。因此,这种技术不是传输整个镜像,而是通过空口生成补丁文件,对所述替换代码和所述旧代码之间的差异进行编码。这种技术可以比单用压缩更有效地使用可用带宽。与未压缩的替换代码相比,BSDiff可以将传输的数据量减少多达90%。设备通过将所述补丁中指定的差异应用于其存储的所述代码版本来构建替换镜像,从而逐步构建其自己的所述替换代码副本。这种方法不适合使用小型闪存的受限设备,因为它要求所述设备存储其正在构建的新镜像,同时仍存储原始软件镜像。
另一种方法是设备通过逐步覆盖所述存储的所述代码版本来构建所述替换镜像。在此方法中,所述补丁或Diff镜像指定替换镜像与不断变化的所述存储镜像版本之间的差异,以模拟将所述原始镜像逐步转换为最终将在所述设备中发生的所述替换镜像。这种方法有益于存储器受限的设备,因为所述设备存储所述原始镜像的逐步更新版本,而不是所述原始镜像的未修订版本和所述替换镜像的“正在进行”版本。但是,如果在所述镜像更新过程中断电,则此方法可能会出现问题。在部分更新的镜像从其原始形式变为新形式的过程中,如果所述设备发生中断,所述设备将如何从所述镜像中恢复尚不清楚。
本发明的一个目的在于提供应用补丁文件的技术。
上述及其它目的通过独立权利要求的特征来实现。根据从属权利要求、说明书以及附图,进一步的实现方式是显而易见的。
根据第一方面,提供了一种用于更新由设备使用具有多个页面的存储器存储的镜像的镜像更新装置,用于:构建替换镜像部分;根据预定义的覆盖类型,识别对页面进行将所述替换镜像部分写入所述存储器的覆盖类型;记录所述识别的覆盖类型的所述替换镜像部分已为该页面构建。这可以允许所述装置保持跟踪更新过程中已完成哪些操作。
所述镜像更新装置可用于记录所述替换镜像部分已在写入所述存储器时构建。
所述镜像更新装置可用于:使所述替换镜像部分存储在非易失性存储器中;记录所述替换镜像部分已在存储在非易失性存储器中后构建。将所述替换镜像部分存储在非易失性存储器中可确保在断电时保留所述替换镜像部分。
所述替换镜像部分可构建在第一缓存器中,并且所述镜像更新装置可用于记录所述替换镜像部分已在写入第二缓存器时构建。所述第一缓存器可以是易失性存储器。所述第二缓存器可以是非易失性存储器。将所述替换镜像部分写入非易失性缓存器可以允许在断电时保留所述镜像部分。
所述镜像更新装置可用于:通过应用补丁更新所述镜像;对所述页面中的任一页面进行应用所述补丁的覆盖的最大数量;为每个页面分配等于所述最大数量的记录数量。覆盖的所述最大数量可以不超过三个。这可以对存储所述源镜像的所述存储器减少闪存损耗,因为每个页面的写入次数很少。
所述镜像更新装置可用于:对于每个页面,为每个预定义覆盖类型保留两个子记录;当该页面的替换镜像部分和该覆盖类型从所述第一缓存器写入所述第二缓存器时,设置所述第一子记录;当该页面的替换镜像部分和该覆盖类型从所述第二缓存器写入存储所述镜像的所述存储器时,设置所述第二子记录。这可以允许所述装置记录哪些更新操作已完成。
所述镜像更新装置可用于在更新所述镜像之前设置所有记录,以指示替换镜像部分尚未构建。这可以允许所述装置检测更新是否正在进行中。
所述镜像更新装置可用于在更新所述镜像之前,确定将对哪个页面执行所述覆盖类型中的哪种覆盖类型。
所述镜像更新装置可用于通过应用补丁更新所述镜像,并模拟通过以下方式应用所述补丁:通过应用所述补丁构建替换镜像部分;识别哪些覆盖类型将对页面进行将这些替换镜像部分写入存储所述镜像的所述存储器;不将所述替换镜像部分写入存储所述镜像的所述存储器。这可以允许通过模拟所述操作而不修改所述镜像来设置所述记录中的所述初始值。
所述镜像更新装置可用于在应用所述补丁之前,仅设置与对页面执行的覆盖类型对应的记录,以指示这些覆盖类型的替换镜像部分尚未为该页面构建。这可以允许根据需要的实际操作设置所述记录中的所述初始值。
所述镜像更新装置可用于根据以下一种或多种覆盖类型识别覆盖类型:将替换镜像部分写入所述页面的所述开头但不写入该页面的所述末尾的覆盖;将替换镜像部分写入所述页面的末尾但不写入所述页面的所述开头的覆盖;将替换镜像部分写入所述页面的任何部分的覆盖。这可以对存储所述源镜像的所述存储器减少闪存损耗,因为每个页面的写入次数很少。
所述镜像更新装置可用于继续执行因以下原因中断的镜像更新:识别是否构建了替换镜像部分,但未写入所述存储器;如果识别出此类镜像部分,将所述替换镜像部分写入存储所述镜像的所述存储器。
所述镜像更新装置可用于通过应用补丁更新所述镜像,并继续执行因以下原因中断的镜像更新:首先通过应用所述补丁构建替换镜像部分;确定该替换镜像部分是否记录为已在提前终止的更新期间写入存储所述镜像的存储器;如果是,则不将所述替换镜像部分写入存储所述镜像的存储器;如果否,则将所述替换镜像部分写入存储所述镜像的存储器。
所述镜像更新装置可用于,如果将所述替换镜像部分写入所述存储器,则记录已存储所述识别的覆盖类型的所述替换镜像部分。这可以允许所述装置保持跟踪更新的所述进度。
根据第二方面,提供了一种用于更新由设备使用具有多个页面的存储器存储的镜像的方法,包括:构建替换镜像部分;根据预定义的覆盖类型,识别对页面进行将所述替换镜像部分写入所述存储器的覆盖类型;记录所述识别的覆盖类型的所述替换镜像部分已为该页面构建。这可以允许镜像更新装置保持跟踪更新的所述进度。
所述存储器控制器可以将所述记录存储在非易失性存储器中。这可以允许在断电时保留所述记录。
现在将结合附图以示例的方式描述本发明。在图纸中:
图1示出了镜像更新装置的示例;
图2示出了将补丁应用于源镜像的方法;
图3示出了在每个页面上执行的所述不同写入过程;
图4示出了镜像更新装置的另一实施例;
图5示出了页面操作位图;
图6示出了通过模拟写入操作填充图4实施例中的所述位图;
图7示出了图4的所述镜像更新装置在正常操作期间执行的所述操作;
图8示出了图4的所述镜像更新装置在断电后执行的所述操作。
图1示出了镜像更新装置100的示例。所述镜像更新装置以示例性方式显示为包括多个功能块,包括镜像更新器101。实际上,所述镜像更新器很可能是使用软件实现的。因此,所述镜像更新器可以全部或部分由在软件控制下运行的处理器实现。图1中所示的功能块可以通过存储在非瞬时性机器可读存储介质上的单个计算机程序来实现。在其它实现方式中,图1的镜像更新器可以由多个单独的计算机程序来实现。图1的目的不是定义如何严格划分软件中不同的程序、程序或功能。
在其它实现方式中,所述镜像更新器的部分或全部功能可以全部或部分在硬件中实施。
所述镜像更新装置100包括镜像更新器101和存储器102。所述存储器被配置为多个页面。在一些实现方式中,一个页面表示一次写入操作中可写入的最小存储器单位。所述页面可以是任意大小。例如,一些存储器的页面大小可以是2k、4k、8k或16k字节。所述存储器可以通过任何类型的存储器实现。所述存储器最好是非易失性存储器。在一个示例中,所述存储器由闪存实现。
存储器102用于存储源镜像。镜像更新器101用于通过应用补丁103来更新该源镜像。所述补丁103定义了如何对存储在所述存储器中的所述镜像进行一系列逐步更改。补丁103可以是Diff镜像。所述镜像更新器优选用于在位实施所述补丁,以便最初由所述存储器存储的所述源镜像通过所述补丁定义的所述一系列逐步更改被逐步转变为所述目标镜像。所述补丁可由补丁生成器(未在图1中显示)提供给所述镜像更新器。
所述补丁包含一系列用于所述镜像更新装置的指令。基本上,所述补丁是一种指示所述装置如何更新其软件的文件。所述替换软件被称为所述“目标镜像”,所述设备上存储的原始代码被称为所述“源镜像”。所述镜像可以是所述设备软件或其任何部分中的任何程序、过程或功能。所述补丁介绍所述设备如何更新其源镜像以将其转换为所述目标镜像。所述补丁通常由所述装置的一系列指令组成。所述指令是有顺序的,当所述接收设备按顺序应用时,将所述源镜像逐步转换为所述目标镜像。在一些实现方式中,所述指令可以包含所谓的“Ctrl-Tri组件”。这些组件由三个值组成:x、y和z。它们还可以伴随有“diff”和“extra”值。这些数据共同表示对所述装置的指令,即应该通过应用更改“diff”并添加额外的字节“e”,将“x”字节的数据从位置“y”复制到位置“z”。
通过逐步覆盖其存储在存储器中的所述源镜像,可以在位实施所述补丁。所述覆盖步骤可以在缓存器中执行,如图1中的104所示。
存储器102可以是闪存。虽然闪存是非易失性的,因此在断电时保持其状态,但由于所述闪存102的属性,可允许对闪存写入的数量有限制。因此,存储在所述闪存上的所述源镜像只能更新有限的次数。
缓存器104可以是RAM缓存器。其优点在于所述缓存器104可以执行写操作,但其缺点在于它是易失性存储器。因此,如果所述镜像更新器在所述更新过程中丢失电源或在任何点重置,所述RAM缓存器中包含的信息将被擦除。
现在将参考图2描述镜像更新器101的基本操作,图2概述了通过在所述设备上在位应用补丁来更新源镜像的方法。
当所述镜像更新器收到补丁时,应用所述补丁的过程开始于步骤201。所述补丁可以通过无线连接发送和接收。所述补丁也可以通过其它通信方式进行交换,包括有线连接。所述镜像更新器适当包括天线、接收链、解调器、解码器、解压器等,以便输入所述镜像更新器的所述补丁与补丁生成器输出的补丁相同(假设所述补丁已成功发送和接收)。在步骤202中,所述镜像更新单元开始通过从存储器中读取所述第一补丁指令涉及的部分来更新所述源镜像。所述镜像更新单元通过应用所述补丁中的所述指令来更新源镜像的该部分(步骤203)。这可以在缓存器104中执行。该指令可以涉及从源镜像中的一个位置读取字节,以便这些字节可以回写到另一个位置,在将所述读取的字节回写到存储器之前对其进行一些更改,和/或在将所述读取的字节回写到所述存储器之前向其添加一些额外的字节等。然后,所述镜像更新器通过覆盖所述存储的至少部分源镜像,将所述更新后的部分回写到存储器(步骤204)。在许多情况下,在所述步骤204中从存储器中读取的源镜像部分将被覆盖,因为更新后的部分将回写到存储器。然后,可以通过缓存器104将所述更新后的部分回写到存储器。
因此,在所述缓存器中通过提取和修改所述页面的相关部分更新所述源镜像的所述页面,然后再将其写入所述源镜像。
在所述实施例中,所述源镜像的每个页面最多可有三个但不超过三个写入操作来覆盖,例如,所述页面的开头、所述页面的中间和所述页面的末尾。这是非直观的结果,来源于对所述进程的研究。
所述补丁或Diff镜像中的指令指示将数据从源S移至目标T,并添加到所述Diff数据中。当从所述源镜像移动数据并使用所述补丁/Diff数据对其进行修改时,写入所述数据的顺序非常重要。如果S和T重叠,则必须注意它们的书写顺序。所述指令逐步处理整个所述文件,但每个指令可以自上而下或自下而上地处理。
例如,所述源数据可在100-300之间,所述目标数据可在200-400之间。
执行此类数据移动可写入如下:
对于(j=0;j<200;j++)
a[200+j]=a[100+j]
但是,这将在所述数据有机会被读取之前将其覆盖为200。当j==100时,a[100+100]已被覆盖。这样做的结果是重复所述部分,使其不会覆盖。因此,在这种情况下,必须从上至下处理该指令。
对于(j=199;j>=0;j--)
a[200+j]=a[100+j]
通过自上而下读取,所述数据不被覆盖。在其它情况下,所述数据可能需要自下而上写入。这些技术用于所述功能memmove()的实施。
每当完成对页面的写入操作并退出该页面时,将写入该页面。图3概述了页面退出和写入的时间。
所述页面退出三次:
1、在操作1的所述第一部分之后,所述页面变为页面0时。
2、在操作2b结束/操作3开始时,所述页面变为页面2时。
3、在操作3结束/操作4开始时,所述页面变为页面2时。
因此。闪存写入操作可根据页面开头、页面中间、完整页面、页面末尾操作进行分类。如果所述页面退出次数少于三次,则每页面的写入次数可以少于三次。所述“覆盖类型”定义修改该页面的哪些部分。例如,所述页面的全部、中间各部分、开头各部分或末尾各部分。
所述镜像更新器导致所述源镜像的更新部分直接写入所述存储的源镜像的一个结果是:所述设备无需同时存储所述原始源镜像和所述目标镜像的“正在进行”版本。相反,所述设备仅存储所述源镜像的逐步更新版本,从而可以有效节省存储器。所述镜像更新器优选地按照所述补丁中显示所述更新的相同顺序实施所述补丁的更新,以便其存储的所述源镜像版本以所述补丁生成器预期的方式逐步更新。
由于所述源镜像不断从所述旧表单变化到新表单和原始表单,如果在所述RAM缓存器回写到所述源镜像之前存在断电或重置,则不会所述存储页面的更新版本。因此,很难确定所述更新进行到什么阶段了,因此所述芯片很难从部分更新的镜像中恢复。准确了解断电前更新过程中达到的阶段非常重要,因为所述补丁中的指令依赖于正确的变化源镜像。
图4中示出了镜像更新装置300的更详细说明。在此图的实施例中,镜像更新器301包括除RAM缓存器304和页面操作位图306之外的闪存缓存器305。所述补丁303在此处显示为Diff镜像。存储器302包含所述源镜像。
使用图4的装置更新所述源镜像的标准过程如下所述。
待更新的所述旧源镜像位于存储器302中。所述新补丁303(Diff镜像)已下载到所述RAM缓存器304,在该缓存器中对新补丁303进行验证,并检查其是否适用于所述旧源镜像。然后,所述更新过程开始。这需要基于存储在存储器302中的部分修改后的源镜像构建页面,并将其一次写入所述RAM缓存器304的一个页面部分。从所述存储器302中提取所述页面的相关部分,并在所述RAM缓存器304中应用所述补丁。然后将此页面部分的副本写入闪存缓存器305。然后,所述页面部分从所述RAM缓存器中擦除,并由所述RAM缓存器写入存储在存储器302中的所述源镜像。
页面操作位图306用于跟踪所述更新过程中已执行的写入操作。在所述位图中,如图5所示,每次写入操作每页源镜像有两位(每页最多三位,单页显示为w1、w2和w3)。对于每个写入操作,第一位B用于指示何时将所需内容写入所述闪存缓存器305。第二位W用于指示所需的内容何时已回写到所述闪存302。
鉴于更新基于经过新验证的源镜像,所述位图将根据需要的实际操作初始化为“1”(每页操作两个“1”)。如果不需要为页面执行某些写入操作,则这些位最初可以设置为“0”。一旦其对应的所述写入操作完成,“1”位将设置为“0”。图5示出了部分完成页面更新的位图示例。在501中,所述页面部分w2已写入所述闪存缓存器,因此所述B位已设置为“0”,但尚未回写到所述源镜像中,因此所述W位读取“1”。
可以在修改所述闪存之前直接执行模拟,所述模拟结果构成所述更新镜像的一部分。或者,可以通过模拟所述操作而无需实际修改所述源/目标镜像设置所述位图中的初始值。这可用作所述闪存页面写入操作的可更改行为。这会对所述页面写入进行分类,并选择待填充的位。此可选步骤如图6中的307所示。在所述可选模拟步骤之后,所述更新将继续执行上述操作。
如上面所述,当通过将所述补丁应用到来自所述存储器302的源镜像部分,将页面写入所述RAM缓存器304时,执行以下步骤,如图7所示:
1、将所述页面写入所述闪存缓存器305(首先擦除所述缓存器内容),如308所示。
2、在所述页面操作位图306中将“B”位设置为零,如309所示。
3、擦除所述RAM缓存器中的页面并将该页面回写到存储器302,如310所示。
4、在所述页面操作位图306中将所述“W”位设置为零,如311所示。
在所述更新过程结束时,所述页面操作位图中的所有位都应设置为“0”,指示所述更新过程已完成。然后,所述更新镜像将从所述RAM缓存器中删除。
此进度记录的目标在于提供从中断恢复到所述更新过程的机制,所述中断涉及丢失所有易失性状态,包括CPU状态和RAM。
在所述更新过程的某个阶段可能会发生电源重启、中断或重置。在恢复所述电源后,可以检查所述位图,通过检查是否存在更新镜像以及所述页面操作位图中是否存在“1”位,以检查是否有更新正在进行。此步骤可由引导加载程序执行。如果找到“1”位,则表示更新操作未完成。
如果页面操作位图中没有“1”位,所述系统将继续正常运行。没有正在进行的更新,将使用当前源镜像。
如果更新正在进行,则执行以下过程,如图8所示。
如312处所示,检查所述位图以查找B==0且W==1的行(如图5中501处所示)。这表示已构建所述更新页面的此部分并将其写入所述闪存缓存器,但尚未回写所述源镜像。
一旦识别出B==0且W==1的这一行,则对应该行的所述闪存302中的页面将被擦除,所述相应的页面将从所述闪存缓存器305中读出,如313所示。所述页面内容作为所述缓存器305的副本写入存储器302,如314所示,然后验证所述页面内容。然后,此页面部分的所述W位设置为“0”,如315处所示。现在可以擦除或覆盖已消耗的所述缓存器305的内容。
如果在所述位图检查过程中有多于一个页面有B==0和W==1,则这表明发生了错误。例如,由于某些外部事件,所述闪存可能出现灾难性损坏。在由于停电或重置而中断的正常更新过程中,只有一个页面记录了这些位,其中一个页面被写入并复制到所述闪存缓存器中,但未回写到所述存储器中的源镜像。
检查完标记行后,以及所述缓存器305中的任何挂起写入对所述闪存302完成后,可以恢复所述更新过程。所述过程从开始并按通常的顺序处理每个Ctrl-Tri组件(指令),但所述过程跳过已完成的那些闪存页面上的覆盖类型,如所述位图中的“0”位所示。
上述技术允许芯片在固件更新过程中从电源故障中恢复。此过程不会使存储所述原始源镜像的闪存承受负担,并且适用于数十次固件更新,假定每个闪存页面的写入/擦除周期为10,000次(对于某些闪存来说是典型的最低保证写入数)。对存储所述源镜像的存储器降低闪存损耗,因为每个页面的写入次数很少(根据识别的覆盖类型,每个镜像页面最多写入三次)。
如果通过指令(Ctrl-Tri组件)而不是通过页面保留所述状态,所述页面可能会被写入,最坏情况平均为10次。这将限制可执行的闪存更新次数,并且还会消耗大量电流。使用每指令方案存储所述操作的进度,Ctrl-Tri组件与页面操作的映射将涉及相当大的数据结构。确保这种结构在设备重置或类似中断过程中的一致性可能是很困难的。
此外,还需要使用所述“覆盖类型”方法减少闪存空间。256页更新的位图可能在闪存上占用约3kb。如果根据指令保留所述状态,则这将是一个更大的数量级。
虽然上面的描述是指在将页面部分作为闪存缓存器回写到所述存储器之前复制到的缓存器,但应理解的是,可以使用其它类型的非易失性存储器缓存器。同样,上面的描述是指在所述写入操作之前使用RAM缓存器存储所述页面的内容,但是可以使用其它类型的存储器缓存器。
申请人特此单独披露本文所述的每一个特征以及两个或两个以上此类特征的任何组合,只要此类特征或组合能够根据本说明书作为一个整体进行,考虑到本领域技术人员的一般知识,无论此类特征或特征组合是否解决本文所揭示的任何问题,且不限于权利要求的范围。申请人指出,本发明的各个方面可能包括任何此类单独功能或功能组合。鉴于上述描述,本领域技术人员显而易见,可以在本发明的范围内进行各种修改。

Claims (14)

1.一种用于更新由设备使用具有多个页面的存储器存储的镜像的镜像更新装置,其特征在于,用于:
构建替换镜像部分;
根据预定义的覆盖类型,识别对页面进行将所述替换镜像部分写入所述存储器的覆盖类型;
记录所述识别的覆盖类型的所述替换镜像部分已为该页面构建;
其中,所述覆盖类型用于定义修改该页面的哪些部分的内容,这些内容包括该页面的全部、中间各部分、开头各部分或末尾各部分;
所述镜像更新装置还用于根据以下一种或多种覆盖类型识别覆盖类型:
将替换镜像部分写入所述页面的所述开头但不写入该页面的所述末尾的覆盖;
将替换镜像部分写入所述页面的末尾但不写入所述页面的所述开头的覆盖;
将替换镜像部分写入所述页面的任何部分的覆盖。
2.根据权利要求1所述的镜像更新装置,其特征在于,所述镜像更新装置用于记录所述替换镜像部分已在写入所述存储器时构建。
3.根据权利要求1所述的镜像更新装置,其特征在于,所述镜像更新装置用于:
使所述替换镜像部分存储在非易失性存储器中;
记录所述替换镜像部分已在存储在非易失性存储器中后构建。
4.根据权利要求1所述的镜像更新装置,其特征在于,所述替换镜像部分构建在第一缓存器中,并且所述镜像更新装置用于记录所述替换镜像部分已在写入第二缓存器时构建。
5.根据权利要求1所述的镜像更新装置,其特征在于,所述镜像更新装置用于:
通过应用补丁更新所述镜像;
对所述页面中的任一页面进行应用所述补丁的覆盖的最大数量;
为每个页面分配等于所述最大数量的记录数量。
6.根据权利要求4中所述的镜像更新装置,其特征在于,所述镜像更新装置用于:
对于每个页面,为每个预定义覆盖类型保留两个子记录;
当该页面的替换镜像部分和该覆盖类型从所述第一缓存器写入所述第二缓存器时,设置第一子记录;
当该页面的替换镜像部分和该覆盖类型从所述第二缓存器写入存储所述镜像的所述存储器时,设置第二子记录。
7.根据权利要求1至5中任一所述的镜像更新装置,其特征在于,所述镜像更新装置用于在更新所述镜像之前设置所有记录,以指示替换镜像部分尚未构建。
8.根据权利要求1至5中任一所述的镜像更新装置,其特征在于,所述镜像更新装置用于在更新所述镜像之前,确定将对哪个页面执行所述覆盖类型中的哪种覆盖类型。
9.根据权利要求1至5中任一所述的镜像更新装置,其特征在于,所述镜像更新装置用于通过应用补丁更新所述镜像,并模拟通过以下方式应用所述补丁:
通过应用所述补丁构建替换镜像部分;
识别哪些覆盖类型将对页面进行将这些替换镜像部分写入存储所述镜像的所述存储器;
不将所述替换镜像部分写入存储所述镜像的所述存储器。
10.根据权利要求9所述的镜像更新装置,其特征在于,所述镜像更新装置用于在应用所述补丁之前,仅设置与对页面执行的覆盖类型对应的记录,以指示这些覆盖类型的替换镜像部分尚未为该页面构建。
11.根据权利要求1至5中任一所述的镜像更新装置,其特征在于,所述镜像更新装置用于继续执行因以下原因中断的镜像更新:
识别是否构建了替换镜像部分,但未写入所述存储器;
如果识别出此类镜像部分,将所述替换镜像部分写入存储所述镜像的所述存储器。
12.根据权利要求1至5中任一所述的镜像更新装置,其特征在于,所述镜像更新装置用于通过应用补丁更新所述镜像,并继续执行因以下原因中断的镜像更新:
首先通过应用所述补丁构建替换镜像部分;
确定该替换镜像部分是否记录为已在提前终止的更新期间写入存储所述镜像的存储器;
如果是,则不将所述替换镜像部分写入存储所述镜像的存储器;
如果否,则将所述替换镜像部分写入存储所述镜像的存储器。
13.根据权利要求12所述的镜像更新装置,其特征在于,所述镜像更新装置用于,如果将所述替换镜像部分写入所述存储器,则记录已存储所述识别的覆盖类型的所述替换镜像部分。
14.一种用于更新由设备使用具有多个页面的存储器存储的镜像的方法,其特征在于,包括:
构建替换镜像部分;
根据预定义的覆盖类型,识别对页面进行将所述替换镜像部分写入所述存储器的覆盖类型;
记录所述识别的覆盖类型的所述替换镜像部分已为该页面构建;
其中,所述覆盖类型用于定义修改该页面的哪些部分的内容,这些内容包括该页面的全部、中间各部分、开头各部分或末尾各部分;
所述镜像更新装置还用于根据以下一种或多种覆盖类型识别覆盖类型:
将替换镜像部分写入所述页面的所述开头但不写入该页面的所述末尾的覆盖;
将替换镜像部分写入所述页面的末尾但不写入所述页面的所述开头的覆盖;
将替换镜像部分写入所述页面的任何部分的覆盖。
CN201780094454.1A 2017-08-30 2017-08-30 提高在位固件更新稳健性的方法及装置 Active CN111052075B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2017/071798 WO2019042546A1 (en) 2017-08-30 2017-08-30 METHOD FOR IMPROVING THE ROBUSTNESS OF A MICROPROGRAM UPDATE IN PLACE

Publications (2)

Publication Number Publication Date
CN111052075A CN111052075A (zh) 2020-04-21
CN111052075B true CN111052075B (zh) 2021-10-01

Family

ID=59859045

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780094454.1A Active CN111052075B (zh) 2017-08-30 2017-08-30 提高在位固件更新稳健性的方法及装置

Country Status (2)

Country Link
CN (1) CN111052075B (zh)
WO (1) WO2019042546A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12112199B2 (en) 2021-11-30 2024-10-08 Honeywell International Inc. Interruptible LZO decompression
US12124839B2 (en) 2021-12-27 2024-10-22 Honeywell International Inc. BSIDIFF delta upgrade in external storage
US12079622B2 (en) 2022-01-05 2024-09-03 Honeywell International Inc. Interruptable BSDIFF delta decompression

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8600989B2 (en) * 2004-10-01 2013-12-03 Ricoh Co., Ltd. Method and system for image matching in a mixed media environment
US8868828B2 (en) * 2011-05-24 2014-10-21 International Business Machines Corporation Implementing storage adapter performance optimization with cache data/directory mirroring
DE102015110710A1 (de) * 2014-07-22 2016-01-28 GM Global Technology Operations LLC Effiziente Flash-Programmierung
CN105446769A (zh) * 2015-11-03 2016-03-30 广东欧珀移动通信有限公司 镜像文件升级处理方法、装置和终端设备
CN107004032A (zh) * 2016-11-17 2017-08-01 华为技术有限公司 镜像文件转换方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006518059A (ja) * 2002-12-18 2006-08-03 ビットフォン コーポレイション フォールト・トレラントな更新エージェントを有するモバイルハンドセット
EP1956482B1 (en) * 2007-02-09 2011-08-17 Telefonaktiebolaget LM Ericsson Generating delta updates for a processing device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8600989B2 (en) * 2004-10-01 2013-12-03 Ricoh Co., Ltd. Method and system for image matching in a mixed media environment
US8868828B2 (en) * 2011-05-24 2014-10-21 International Business Machines Corporation Implementing storage adapter performance optimization with cache data/directory mirroring
DE102015110710A1 (de) * 2014-07-22 2016-01-28 GM Global Technology Operations LLC Effiziente Flash-Programmierung
CN105446769A (zh) * 2015-11-03 2016-03-30 广东欧珀移动通信有限公司 镜像文件升级处理方法、装置和终端设备
CN107004032A (zh) * 2016-11-17 2017-08-01 华为技术有限公司 镜像文件转换方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A sequential factorization method for recovering shape and motion from image streams;Morita, T.等;《IEEE Transactions on Pattern Analysis & Machine Intelligence》;19971231;第19卷(第8期);第858-867页 *
一种高效的闪存数据库故障恢复方法MMR;王曼丽等;《计算机技术与发展》;20121231(第1期);第40-44页 *

Also Published As

Publication number Publication date
CN111052075A (zh) 2020-04-21
WO2019042546A1 (en) 2019-03-07

Similar Documents

Publication Publication Date Title
KR101359834B1 (ko) 압축 버전을 포함하는 내용을 업데이트하는 방법 및시스템들
CN102971717B (zh) 存储器访问表保存和复原系统及方法
CN108027753B (zh) 车载控制装置、程序更新系统以及保存有程序更新软件的存储介质
US8726262B2 (en) Firmware update system and information apparatus, and program
US9026718B2 (en) Method and apparatus for fault tolerant FOTA update with single backup block write
CN101377744B (zh) 一种终端设备软件升级恢复方法及装置
EP1934727B1 (en) Method and system for in-place updating content stored in a storage device
US6560703B1 (en) Redundant updatable self-booting firmware
US20070245069A1 (en) Storage Device, Memory Management Method and Program
CN111052075B (zh) 提高在位固件更新稳健性的方法及装置
EP2329366B1 (en) Performing a pre-update on a non volatile memory
US9043680B2 (en) Method and system for in-place updating content stored in a storage device
US10802819B2 (en) Binary image differential patching
US20080172584A1 (en) Method and system for in-place updating content stored in a storage device
CN112346771B (zh) 升级文件生成方法及装置
JP6864228B2 (ja) 記憶装置および記憶装置のデータ管理方法
JP5821788B2 (ja) 電子制御装置
CN116964555A (zh) 创建更新数据的方法、覆写固件的方法、更新固件的方法及执行该方法的电子设备
CN114138305A (zh) 一种可靠的mcu固件升级的方法
CN115934137A (zh) 一种星载文件在轨编程方法及系统
CN115904424A (zh) 空中下载升级方法、装置及计算机可读存储介质
EP3884377A1 (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