CN116964555A - 创建更新数据的方法、覆写固件的方法、更新固件的方法及执行该方法的电子设备 - Google Patents

创建更新数据的方法、覆写固件的方法、更新固件的方法及执行该方法的电子设备 Download PDF

Info

Publication number
CN116964555A
CN116964555A CN202280018673.2A CN202280018673A CN116964555A CN 116964555 A CN116964555 A CN 116964555A CN 202280018673 A CN202280018673 A CN 202280018673A CN 116964555 A CN116964555 A CN 116964555A
Authority
CN
China
Prior art keywords
firmware
data
update
electronic device
data packets
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
Application number
CN202280018673.2A
Other languages
English (en)
Inventor
H·海伯勒
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.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
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 Robert Bosch GmbH filed Critical Robert Bosch GmbH
Publication of CN116964555A publication Critical patent/CN116964555A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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
    • 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/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

本发明基于一种用于为电子设备的固件(14)创建更新数据(12)的方法,具有至少一个细分步骤(18),借助于所述至少一个细分步骤将所述固件(14)的至少一个目标版本(20)细分为至少两个数据包(22、24、26),在至少一个方法步骤中将所述至少两个数据包添加到所述更新数据(12)。提出:所述方法包括至少一个备份步骤(28),在所述至少一个备份步骤中向至少一个所述数据包(22、24、26)分配用于设置至少一个持续进度标记(30、30′、30″、32、32′、32″)的备份指令,所述至少一个持续进度标记被设置用于记录利用至少一个所述数据包(22、24、26)对所述固件(14)的至少部分执行的更新。

Description

创建更新数据的方法、覆写固件的方法、更新固件的方法及执 行该方法的电子设备
技术领域
已经提出了一种用于为电子设备的固件创建更新数据的方法,具有至少一个细分步骤,借助于所述至少一个细分步骤将所述固件的至少一个目标版本细分为至少两个数据包,在至少一个方法步骤中将所述至少两个数据包添加到所述更新数据。
发明内容
本发明基于一种用于为电子设备的固件创建更新数据的方法,具有至少一个细分步骤,借助于所述至少一个细分步骤将所述固件的至少一个目标版本细分为至少两个数据包,在至少一个方法步骤中将所述至少两个数据包添加到所述更新数据。
提出:该方法包括至少一个备份步骤,在所述至少一个备份步骤中向至少一个所述数据包分配用于设置至少一个持续进度标记的备份指令,所述至少一个持续进度标记被设置用于记录利用至少一个所述数据包对所述固件的至少部分执行的更新。所述电子设备可以被构造为独立设备,例如热成像相机、定位设备、自行车计算机、通信设备、可穿戴设备等,或者被构造为嵌入系统,特别是家用电器、车辆、工业设施等的嵌入系统。所述电子设备特别是包括其中存储有所述固件的持久数据存储器。术语“持久”应当特别是在信息技术意义上理解,特别是被理解为不能以不受控制的方式改变或者只能以受控的方式改变。特别地,在程序结束时或在电流中断时,数据保留在持久数据存储器中。所述持久数据存储器特别是可以被写入多次。特别地,可以例如通过来自程序或用户的指令来主动删除持久数据存储器。所述更新数据特别是被设置为改变存储在数据存储器中的固件。借助于更新数据对固件的改变特别是可以包括固件的先前版本的升级、固件的先前版本的修改(特别是可选附加模块的添加或删除)、固件的先前版本的降级或用其他固件对固件的更换。更新数据优选地被设置为用固件的目标版本替换固件的先前版本。
特别地,每个数据包都包括目标版本的一部分。将目标版本细分为数据包特别是被设置为对数据包进行彼此独立的处理,特别是由所述电子设备。多个数据包可以由所述电子设备顺序或并行地处理,特别是依据所述电子设备的处理器架构。这些数据包可以被构造为具有相同大小或不同大小。细分步骤优选地由计算机系统自动执行。除了数据包之外,用于由电子设备处理数据包的指令(特别是备份指令)优选地在至少一个方法步骤中添加到更新数据,特别是通过所述计算机系统。优选地以汇编语言产生所述指令,特别是所述备份指令。可选地,所述更新数据包括元数据,特别是清单文件,以用于记录分发到数据包的目标版本。优选地,向每个数据包分配至少一个备份指令。替代地,分配多个数据包,特别是仅分配一个备份指令。可选地,代替备份指令,向待处理的最后一个数据包分配重置指令,该重置指令在执行时删除所有已经设置的持续进度标记和/或保留在电子设备上的更新数据或者释放所述持续进度标记和/或所述更新数据以进行删除或覆写。所述备份指令优选地预给定将持续进度标记写入持久数据存储器中,特别是写入所述电子设备的持久数据存储器中。所述备份指令特别是预给定当借助于对应的数据包的更新的处理步骤部分或全部完成时设置所述持续进度标记。更新的处理步骤的示例可以包括例如将数据包复制或移动到所述持久数据存储的存储器区域中、修改数据包、划分数据包、合并多个数据包或将数据包之一与其他数据包合并、用其他数据包覆写固件等。
所述备份指令特别是被设置为由所述电子设备的引导加载程序执行。优选地,所述备份指令特别是预给定将所述持续进度标记写入所述持久数据存储器的标记区域中,所述标记区域在所述电子设备投入运行时由所述电子设备的引导加载程序读出。特别地,所述持续进度标记被设置为通知所述引导加载程序哪些处理步骤已经被执行或者至少哪个处理步骤是已完成的最后一个处理步骤。所述持续进度标记可以被构造为至少一个、特别是单个比特,构造为至少一个、特别是单个字节或者构造为更复杂的数据类型。优选地,所述备份指令针对不同的数据包预给定相同的标记区域以设置相应的持续进度标记,特别是使得可以基于所设置的持续进度标记的数量来推断出更新的进度。替代地,所述备份指令预给定将不同的进度标记存储在所述持久数据存储的不同存储器区域中,特别是使得利用不同数据包的更新的相应进度被彼此独立地记录。
优选地,该方法由数据产生程序至少基本上完全自动地执行。所述数据产生程序特别是包括指令,当由所述计算机系统执行所述数据产生程序时,所述指令促使所述计算机系统为电子设备的固件创建更新数据。数据产生程序特别是包括用于在至少一个细分步骤中至少将固件的目标版本划分为至少两个数据包并将所述目标版本添加到更新数据的指令。所述数据产生程序特别是包括用于至少在备份步骤中向至少一个所述数据包分配备份指令的指令,该备份指令用于设置至少一个持续进度标记,所述至少一个持续进度标记被设置用于利用至少一个所述数据包记录至少部分执行的固件更新。可选地,由用户检查该方法,特别是质量控制和/或测试用该方法产生的更新数据。特别地,程序员将指令(特别是备份指令)提供为标准化模块。计算机优选地自动编译所述标准化模块,特别是根据在细分步骤中产生的数据包的数量。
通过根据本发明的方法的设计,可以创建更新数据,所述更新数据使得能够有利地可靠地更新固件。特别地,可以有利地记录更新的进度。特别地,可以有利地使得由于仅部分执行的、特别是中断的更新而导致固件和电子设备无法工作的风险保持较低水平。特别地,在中断之后,可以有利地在最后完成和记录的处理步骤处恢复所述更新。特别地,可以放弃从头开始重复所述更新。特别地,即使在中断之后也可以有利地快速完成所述更新。
进一步提出,该方法包括至少一个比较步骤,其中生成至少一个所述数据包,使得该至少一个数据包包括所述固件的两个程序版本之间的差异。优选地在比较步骤中确定先前版本的副本和目标版本之间的差异。优选地,借助于diff算法、特别是diff、gdiff、vcdiff、bsdiff等来执行比较步骤。所述比较步骤特别是可以逐行或逐位地执行。优选地,在细分步骤中将目标版本和先前版本的副本均划分为数据包。特别地,在比较步骤中,将目标版本的数据包之一和先前版本的数据包之一相互比较。特别地,至少一个所述数据包包括所述固件的增量更新。替代地,首先将程序版本相互比较,然后将程序版本划分为数据包。替代地,所有数据包都包含目标版本,特别是以划分的形式,完整地,特别是在压缩或未压缩状态下。通过根据本发明的设计,可以将更新数据、特别是数据包所需的存储空间有利地保持得较小。特别地,可以有利地使更新数据可以用于具有小于目标版本的存储器消耗的空闲存储器容量的电子设备。
还提出所述备份指令被创建为可由虚拟机执行的更新程序的一部分。优选地,所述更新程序至少包括所述备份指令。所述更新程序优选地包括将由电子设备执行的对数据包的所有处理步骤。所述更新程序优选地包括用于通过将数据包与先前版本进行比较来在电子设备的持久数据存储器中创建目标版本的指令。在至少一个方法步骤中优选地将所述更新程序添加至更新数据。特别地,在该方法的提供步骤中使所述更新程序与所述数据包一起可用,例如上传到服务器。替代地,将更新程序硬编码到引导加载程序中。优选地,虚拟机实现在所述电子设备上。所述虚拟机特别优选地在所述电子设备的引导加载程序中实现。替代地,所述虚拟机是固件的一部分,其中所述虚拟机特别是存储在持久数据存储器的与其余固件分离的分区或扇区上。通过根据本发明的设计,可以创建更新数据,所述更新数据可以有利地与所述电子设备的更新算法无关地保持。特别地,更新方法(例如作为增量更新或作为完全替换)可以有利地灵活改变并且可以特别有利地在后期加以设定,特别是在目标版本已经完成之后。此外,可以将引导加载程序的存储器需求有利地保持在较低水平。
此外提出,向所述数据包中的至少一个数据包、特别是每个数据包分配至少两个备份指令,用于分别设置至少一个持续进度标记。优选地,向所述至少一个数据包分配完成备份指令作为备份指令,该完成备份指令记录所述数据包的处理的完成。特别地,完成备份指令预给定在完成用数据包覆写固件的先前版本之后设置所述持续进度标记之一。优选地,向所述至少一个数据包至少分配临时备份指令作为备份指令。特别地,所述临时备份指令预给定在修改或移动了数据包之后并且特别是在覆写先前版本之前,设置所述持续进度标记之一。例如,临时备份指令被设置为在由先前版本和所述持久数据存储器的临时存储器区域中的数据包生成目标版本之后执行。通过根据本发明的设计,可以有利地以分成小部分的形式记录固件更新的进度。特别地,有利地在更新中断时只需要重复更少的处理步骤。此外,可以有利地将固件崩溃的风险保持在较低水平。更新中断之后,特别是在所述临时存储器区域中可能存在由数据包之一不完整生成的目标版本的片段,或者在持久数据存储器的固件存储器区域中可能存在用数据包之一不完整覆写的先前版本。通过根据本发明的设计,特别是可以有利地将以下风险保持在较低水平,即在重复更新时使用这些不完整的数据并由此用未定义的字符串填充所述临时存储器区域或所述固件存储器区域。特别是可以实现的是,即使在中断的情况下,持久数据存储器中也总是存在目标版本的至少一个完整片段和/或先前版本的与目标版本的所述片段相对应的片段,在重复更新时可以访问这些片段。
另外,提出在细分步骤期间,根据所述电子设备的持久数据存储器的扇区大小来选择数据包的大小。可选的,根据持久数据存储器的临时存储器区域的存储容量来创建目标版本的数据包。临时存储器区域可以包括持久数据存储器的一个或多个扇区。特别地,持久数据存储器的扇区可以彼此独立地删除和覆写。优选地,数据包、特别是包括处于未压缩状态的目标版本的数据包的存储器需求分别小于或等于持久数据存储器的临时存储器区域的容量,特别是小于或等于扇区大小。通过根据本发明的设计,可以有利地有效地使用持久数据存储器上可用的存储容量。
此外提出,该方法根据所述电子设备的特定于应用的模型创建包括所述备份指令的更新程序。优选地,该模型包括持久数据存储器的绝对存储器地址,特别是持久数据存储器的标记区域、临时存储器区域、固件存储器区域和/或空闲存储器区域的绝对存储器地址。优选地,该模型包括所述电子设备上存在的先前版本的副本。优选地,该模型包括所述电子设备上存在的引导加载程序的副本。优选地,该模型包括在所述电子设备上实现的虚拟机的副本或仿真。该模型特别是被设置为使指令、特别是备份指令特别是自动化地适配于所述电子设备,所述指令特别是作为标准化模块可用。通过根据本发明的设计,更新数据可以有利地与所述电子设备具体匹配。特别地,可以有利地有效地使用持久数据存储器的可用存储容量。另外,可以有利地执行更新程序的精确测试。特别地,可以有利地将借助于更新程序导致电子设备无法工作的风险保持在较低水平。
本发明还基于一种用于覆写电子设备(特别是已经提到的电子设备)的固件(特别是已经提到的固件)的方法,所述电子设备特别是用于处理(特别是已经提到的)用根据本发明的用于创建更新数据的方法创建的更新数据,其中用于覆写固件的方法包括至少一个存储步骤,在所述至少一个存储步骤中将所述固件的至少一个、特别是已经提到的目标版本作为至少两个、特别是已经提到的数据包存储在所述电子设备的特别是已经提到的持久数据存储器中。提出该方法具有至少一个标记步骤,在所述至少一个标记步骤中设置至少一个持续进度标记,所述持续进度标记记录利用至少一个数据包对所述固件的至少部分执行的更新。更新数据,特别是至少数据包、备份指令和/或更新程序,特别是由电子设备的数据接口接收或查询。优选地,在存储步骤中将更新数据、特别是至少数据包、备份指令和/或更新程序存储在持久数据存储器的空闲存储器区域中。可选地,不同的数据包存储在持久数据存储器的不同扇区中。优选地,更新数据包括对电子设备的至少一个指令,即在成功完成存储步骤时,电子设备将更新标记放置到标记区域中。特别地,在重新启动电子设备时,更新标记促使引导加载程序读出所存储的更新数据,特别是更新程序,特别是取代固件的启动。引导加载程序优选地在重新启动电子设备之后执行特别是存储在空闲存储器区域中的更新程序。引导加载程序优选地处理数据包。特别地,引导加载程序用数据包覆写固件的先前版本。优选地,引导加载程序在标记步骤中执行备份指令,并且特别是将持续进度标记之一设置到标记区域中。如果更新程序中断并重新启动,则引导加载程序优选地在由最后设置的持续进度标记所标记的位置处继续更新程序。通过根据本发明的设计,可以有利地记录更新的进度。特别地,可以有利地将由于仅部分执行的、特别是中断的更新而导致固件和电子设备无法工作的风险保持在较低水平。特别地,在中断之后,可以有利地在最后完成和记录的处理步骤处恢复更新。特别地,可以放弃从头开始重复更新。特别地,即使在中断之后也可以有利地快速完成更新。
此外提出,所述电子设备的虚拟机、特别是已经提到的虚拟机执行所述标记步骤。通过根据本发明的设计可以创建更新数据,所述更新数据可以有利地与电子设备的更新算法无关地保持。特别地,更新方法(例如作为增量更新或作为完全替换)可以有利地灵活改变并且可以特别有利地在后期加以设定,特别是在目标版本已经完成之后。此外,可以将引导加载程序的存储器需求有利地保持在较低水平。
还提出将至少两个数据包分配给所述电子设备的同一个持久临时存储器区域,以创建所述固件的目标版本的一部分。优选地,引导加载程序将位于空闲存储器区域中的数据包与固件存储器区域中的固件的先前版本进行比较,所述数据包特别是包括目标版本相对于先前版本的改变。特别地,引导加载程序在用于处理位于空闲存储器区域中的数据包之一的运行中将该数据包与位于固件存储器区域中的先前版本组合成目标版本的数据包,该数据包将存储在临时存储器区域中。优选地,当具有目标版本的数据包已存储在临时存储器区域中时,引导加载程序执行标记步骤。优选地,引导加载程序用位于临时存储器区域中的数据包覆写固件存储器区域中的一部分固件。如果已用位于临时存储器区域中的数据包覆写了固件存储器区域中的固件,则引导加载程序优选地执行进一步的标记步骤。优选地,在位于临时存储器区域中的目标版本的数据包已被复制到固件存储器区域中之后并且在已经执行了所述进一步的标记步骤之后,引导加载程序删除临时存储器区域。特别地,在所述进一步标记步骤之后,临时存储器区域可用于进一步运行以处理位于空闲存储器区域中的另外的数据包。通过根据本发明的设计,该方法还可以有利地在具有低存储容量的电子设备上执行,特别是在其中空闲存储器区域和/或临时存储器区域的存储容量小于固件目标版本的存储器需求的电子设备上执行。
此外提出,使用固件的先前版本的不同大小的部分来处理每个数据包。特别地,在处理位于空闲存储器区域中的另外的数据包的进一步运行中,引导加载程序将该数据包与位于固件存储器区域中的先前版本中尚未被覆写的部分合并成目标版本的另外的数据包,该另外的数据包将存储在临时存储器区域中。引导加载程序优选地用位于临时存储器区域中的目标版本的另外的数据包覆写固件存储器区域中尚未被覆写的固件部分。特别地,随着处理数据包之一的每一次运行,位于固件存储器区域中的先前版本的要与下一数据包进行比较的部分变得更小。通过根据本发明的设计,可以有利地有效地执行该方法。
另外提出,所述持续进度标记在至少一个方法步骤中阻止所述固件的执行。优选地,只要在标记区域中设置了至少一个标记,特别是持续进度标记,则引导加载程序就不启动固件。特别地,当在标记区域中设置至少一个标记、特别是持续进度标记时,引导加载程序启动更新程序。特别地,持续进度标记防止执行仅被部分覆写并且特别是因此无法工作或无法可靠工作的固件。优选地,在标记区域为空或者已经具有要设置的所有持续进度标记时,引导加载程序启动固件。可选地,最后要设置的持续进度标记完全填满标记区域的剩余容量。优选地,最后要设置的持续进度标记将存储在标记区域中的值带到关键值,该关键值促使引导加载程序在电子设备重新启动时执行固件,特别是存储在固件存储器区域中的目标版本,并且特别是释放在空闲存储器区域中存储的更新数据以进行删除。通过根据本发明的设计,可以有利地将由于固件的先前版本和固件的目标版本的不兼容部分而导致的错误的风险保持在较低水平。特别地,可以有利地将空闲存储器区域中的更新数据损坏的风险保持在较低水平。
还提出,在至少一个方法步骤中,根据所述持续进度标记来选择接下来要处理的数据包。特别地,当更新程序启动时,特别是当更新程序重新启动时,引导加载程序基于持续进度标记来确定最后处理哪个数据包。特别地,引导加载程序借助于持续进度标记来确定是否用位于临时存储器区域中的目标版本的数据包覆写了位于固件存储器区域中的先前版本。如果用位于临时存储器区域中的目标版本的数据包覆写了位于固件存储器区域中的先前版本,则引导加载程序继续处理该系列中的下一个数据包。如果尚未用位于临时存储器区域中的目标版本的数据包覆写位于固件存储器区域中的先前版本,则引导加载程序继续用位于临时存储器区域中的目标版本的数据包覆写位于固件存储器区域中的先前版本。如果标记区域仅包括更新标记,则引导加载程序优选地开始处理数据包中的第一个数据包。通过根据本发明的设计,更新程序可以有利地又在用持续进度标记最后标记的位置处恢复,特别是在更新程序已经被中止之后或者在电流中断之后。特别地,可以有利地实现针对电流失效的高安全性。特别地,可以放弃从一开始就完全重复更新程序。特别地,即使在中断的情况下也可以有利地快速完成更新程序。
另外,本发明基于一种用于更新电子设备(特别是已经提到的电子设备)的固件(特别是已经提到的固件)的方法,其中在至少一个方法阶段中创建更新数据,特别是根据一种根据本发明的用于创建更新数据的方法,并且具有用于特别是根据本发明的用于覆写固件的方法覆写固件的至少一个方法阶段,其中用于更新固件的方法包括至少一个细分步骤,特别是已经提到的细分步骤,借助于所述细分步骤将固件的至少一个目标版本、特别是已经提到的目标版本细分为至少两个数据包,特别是已经提到的数据包,将所述至少两个数据包在至少一个方法步骤中添加到更新数据中,并且包括至少一个存储步骤,特别是已经提到的存储步骤,在所述存储步骤中至少固件的目标版本以至少两个数据包的形式存储在电子设备的持久数据存储器、特别是已经提到的持久数据存储器中。提出用于更新的方法具有至少一个备份步骤,特别是已经提到的备份步骤,在所述备份步骤中向数据包中的至少一个数据包分配备份指令,特别是已经提到的备份指令,用于设置至少一个、特别是已经提到的持续进度标记,所述持续进度标记记录固件的至少部分执行的更新,以及至少一个、特别是已经提到的标记步骤,在所述标记步骤中设置至少一个持续进度标记。通过根据本发明的设计,可以创建使得能够以有利地可靠的方式更新固件的更新数据。特别地,可以有利地记录更新的进度。特别地,可以有利地将由于仅部分执行的、特别是中断的更新而导致固件和电子设备无法工作的风险保持在较低水平。特别地,在中断之后,可以有利地在最后完成和记录的处理步骤处恢复更新。特别地,可以放弃从头开始重复更新。特别地,即使在中断之后也可以有利地快速完成更新。
此外,提出了一种电子设备,其具有至少一个持久数据存储器、存储在所述持久数据存储器中的固件以及用于执行根据本发明的方法的至少一个处理器。所述持久数据存储器优选地被构造为非易失性数据存储器。优选地,所述持久数据存储器被构造为电可擦除可编程只读存储器(EEPROM),特别优选地被构造为闪速EEPROM。所述持久数据存储器特别是包括存储引导加载程序的引导加载程序存储器区域。所述引导加载程序优选地包括用于执行更新程序的虚拟机。所述持久数据存储器特别是包括存储所述固件的固件存储器区域。所述持久数据存储优选地包括临时存储器区域,特别是用于临时存储正在处理的数据、特别是正在处理的数据包。所述持久数据存储优选地至少包括空闲存储器区域,特别是用于存储数据(特别是更新数据)以供以后处理。所述持久数据存储器优选地至少包括标记区域,特别是用于向引导加载程序传递参数。所述持久数据存储可以由单个物理存储器模块来实现或者可以包括多个物理存储器模块。优选地,不同的存储器区域实现在同一物理存储器模块的不同分区或扇区中或者分布在多个物理存储器模块上。所述电子设备优选地至少包括数据接口,特别是用于接收更新数据。所述数据接口例如可以构造为蓝牙接口,特别是蓝牙低功耗接口,构造为ZigBee接口,构造为近场通信接口(NFC接口),构造为LAN接口,特别是无线LAN接口,构造为全球微波接入互操作性接口(WiMAX接口),构造为通用串行总线接口(USB接口),构造为Lightning接口,构造为推荐标准232接口(RS-232接口)等。通过根据本发明的设计,可以提供一种电子设备,该电子设备的由于其软件的中断更新而变得无法工作的风险有利地很低。特别地,可以有利的方式将引导加载程序存储器区域的存储容量保持得较小。
在此情况下,根据本发明的方法和/或根据本发明的电子设备不应当限于上述应用和实施方式。特别地,根据本发明的方法和/或根据本发明的电子设备可以具有与本文所提到的单独的元件、部件和单元以及方法步骤的数量不同的数量以满足本文描述的作用方式。另外,在本公开中说明的值范围内,位于所提到的界限内的值也应当被认为是公开的并且可以任意使用。
附图说明
进一步的优点由以下附图描述得出。在附图中示出了本发明的实施例。附图、说明书和权利要求书包含许多特征的组合。本领域技术人员还将适宜地单独考虑这些特征并将它们组合为有意义的另外的组合。
图1示出了根据本发明的用于更新根据本发明的电子设备的固件的方法的示意性流程,
图2示出了根据本发明的电子设备的示意图,
图3示出了根据本发明的用于为固件创建更新数据的方法的示意性流程图,
图4示出了根据本发明的用于覆写固件的方法的示意性流程图,以及
图5示出了在根据本发明的用于覆写固件的方法期间电子设备的数据存储器的示意性状态变化过程。
具体实施方式
图1示出了用于更新电子设备16的固件14(参见图2)的方法56的流程。用于更新固件14的方法56包括至少一个方法阶段,在所述方法阶段中创建更新数据12。优选地根据在图3中更详细解释的用于创建更新数据12的方法10来执行其中创建更新数据12的方法阶段。用于更新固件14的方法56包括用于覆写固件14的至少一个方法阶段。优选地,用于覆写固件14的方法阶段根据用于覆写固件14的方法44来执行,该方法44在图4和图5中更详细地解释。更新数据12例如在服务器60上提供。用于更新固件14的方法56优选地包括版本查询64,用于查询固件14的先前版本54(参见图3)。用于更新固件14的方法56优选地包括更新查询66,用于特别是向服务器60查询固件14的其他版本是否可用。如果固件14的多个版本可用,则固件14的目标版本20(参见图3)可以由用户选择或自动选择。用于更新固件14的方法56优选地包括为目标版本20提供的更新数据12的下载68。用于更新固件14的方法56包括存储步骤46,在存储步骤46中特别是将更新数据12存储在电子设备16上。用于更新固件14的方法56优选地包括更新启动70,用于启动用于覆写固件14的方法阶段,特别是用于覆写固件14的方法44。更新启动70可以自动启动或者可以由用户经由用户接口62确认。用户接口62可以是电子设备16的一部分或者是具有用于与电子设备16通信并且可选地用于与服务器60通信的至少一个通信接口的独立设备。这里,用户接口62例如作为移动设备,特别是智能电话或平板电脑示出。用户接口62包括例如蓝牙接口,特别是蓝牙低功耗接口,用于与电子设备16通信。用户接口62包括例如局域网接口(LAN接口)、特别是无线LAN接口和/或用于与服务器60通信的移动网络接口。电子设备16在此示例性地作为热成像相机、特别是手持式热成像相机示出。
关于用于更新固件14的方法56的进一步特征,特别是参考图3至图5及其描述。特别地,针对用于创建更新数据12的方法10和/或针对用于覆写固件14的方法44所公开的所有特征也应当适用于所公开的用于更新固件14的方法56。
图2示出了电子设备16。电子设备16包括至少一个持久数据存储器40。电子设备16包括固件14,特别是固件14的先前版本54。固件14存储在持久数据存储器40中。电子设备16包括至少一个处理器58。处理器58被设置为执行用于覆写固件14的方法阶段,特别是用于覆写固件14的方法44。电子设备16特别是包括用于执行由电子设备16提供的主要功能的功能单元72,例如红外电荷耦合器件传感器(IR-CCD传感器)。电子设备16优选地包括至少一个能量供应装置76,特别是电储能器或有线的电能量供应装置,用于向至少处理器58供应能量。电子设备16优选地包括至少一个数据接口74,特别是用于接收更新数据12。例如,数据接口74被构造为蓝牙接口,特别是构造为蓝牙低功耗接口。
持久数据存储器40特别是包括标记区域84。持久数据存储器40优选地包括空闲存储器区域82。持久数据存储器40优选地包括临时存储器区域52。持久数据存储器40特别是包括存储固件14的固件存储器区域。可选地,持久数据存储器40包括存储校准数据80的校准存储器区域。持久数据存储器40优选地包括引导加载程序存储器区域,其中存储电子设备16的引导加载程序78。
图3示出了用于为电子设备16的固件14创建更新数据12的方法10。用于创建更新数据12的方法10包括至少一个细分步骤18。借助于细分步骤18,将至少固件14的目标版本20细分为至少两个数据包22、24、26。特别地,将固件14的目标版本20和固件14的先前版本54的副本划分成多个未处理的数据包22′、22″、24′、24″、26′、26″。在细分步骤18期间,根据电子设备16的持久数据存储器40的扇区大小来选择未处理的数据包22′、22″、24′、24″、26′、26″的大小。特别地,至少目标版本20的未处理数据包22″、24″、26″的大小等于或小于持久数据存储器40的扇区大小。用于创建更新数据12的方法10包括至少一个比较步骤34。在比较步骤34中,生成数据包22、24、26中的至少一个,使得其包括固件14的两个程序版本之间的差异,特别是目标版本20和先前版本54之间的差异。优选地利用bsdiff或其他二进制diff算法来执行比较步骤34。比较步骤34优选地压缩数据包22、24、26,使得这些数据包小于或等于目标版本20的未处理数据包22″、24″、26″的大小。用于创建更新数据12的方法10优选地包括软件开发步骤86,在该软件开发步骤中创建更新程序38(参见图59)。用于创建更新数据12的方法10包括至少一个备份步骤28。备份步骤28特别是软件开发步骤86的一部分。包括备份指令的更新程序38是根据电子设备16的特定于应用的模型42创建的。特别地,模型42包括持久数据存储器40的绝对存储器地址,特别是标记区域84、空闲存储器区域82、临时存储器区域52、固件存储器区域和/或引导加载程序存储器区域的绝对存储器地址。特别地,在软件开发步骤86中,将用于由电子设备16处理数据包22、24、26的指令添加到更新程序38。更新程序38可由电子设备16的虚拟机36(参见图5)执行。优选地,模型42包括模拟电子设备16的另外的虚拟机,特别是为了测试更新程序38。在备份步骤28中,向数据包22、24、26中的至少一个分配备份指令,用于设置至少一个持续进度标记30、30′、30″、32、32′、32″(参见图5)。进度标记30、30′、30″、32、32′、32″被设置为记录利用数据包22、24、26中的至少一个对固件14的至少部分执行的更新。向数据包22、24、26中的至少一个、特别是所有数据包分配至少两个备份指令,分别用于设置至少一个持续进度标记30、30′、30″、32、32′、32″。特别地,更新程序38交替地包括用于处理数据包22、24、26之一的至少一个指令和备份指令之一。特别地,备份指令被设置为记录用于处理数据包22、24、26之一的至少一个先前执行和完成的指令,并且特别是由此确保该至少一个指令的结果。特别地,将备份指令插入到更新程序38中,特别是在用于写入持久数据存储器40的指令之后。
在用于创建更新数据12的方法10的提供步骤92中,将数据包22、24、26添加到更新数据12。数据包22、24、26和/或更新程序38优选地在用于创建更新数据12的方法10的认证步骤88中经过加密和/或签名,特别是在将它们添加到更新数据12之前。优选地,将元数据90、特别是目标版本20的发行说明添加到更新数据12。可选地,将安装程序添加到更新数据12,该安装程序促使电子设备16和/或用户接口62自动将数据包22、24、26和/或更新程序38复制到持久数据存储器40的空闲存储器区域82。优选地,将更新数据12组合成单个文件。例如,更新数据12在服务器60上可用。
图4示出了用于覆写电子设备16的固件14的方法44。方法44特别是处理利用用于创建更新数据12的方法10创建的更新数据12。用于覆写固件14的方法44包括至少一个存储步骤46(参见图1)。在存储步骤46中,将固件14的目标版本20作为至少两个数据包22、24、26存储在电子设备16的持久数据存储器40中。存储步骤46可以由用户手动执行或者由安装程序执行。更新启动70可以特别是由用户手动地、由安装程序自动地触发。特别地,在更新启动70时,固件14或安装程序将更新标记104设置到标记区域84中,并且特别是重新启动电子设备16。优选地,在电子设备16重新启动时,引导加载程序78在用于覆写固件14的方法44的标记查询94中读出标记区域84。特别地,当在标记区域84中设置了更新标记104和/或持续进度标记30、30′、30″、32、32′中的至少一个且特别是不是全部时,引导加载器78启动更新程序38。持续进度标记30、30′、30″、32、32′、32″在至少一个方法步骤中防止固件14的执行。特别地,如果在标记区域84中既未设置更新标记104又未设置任何持续进度标记30、30′、30″、32、32′、32″或者如果设置了所有持久标记30、30′、30″、32、32′、32″,则引导加载程序78启动固件14的初始化96。更新标记104和持续进度标记30、30′、30″、32、32′、32″可以彼此独立地存储或者存储为同一变量的不同值。如果独立地存储更新标记104和持续进度标记30、30′、30″、32、32′、32″,则最后要执行的备份指令包括将更新标志104设置为指示更新完成的值,特别是附加于或替代于设置最后的持续进度标记32″。特别地,当更新标志104说明不存在更新或更新已完成时,引导加载器78启动固件14的初始化96。
用于覆写固件14的方法44特别是包括顺序确定98。特别地,引导加载程序78在顺序确定98中确定进度标记30、30′、30″、32、32′、32″中的哪些在标记区域84中设置或至少哪个是最后设置的进度标记30、30′、30″、32、32′、32″。引导加载程序78特别是根据标记区域84中已经存在的持续进度标记30、30′、30″、32、32′、32″来选择数据包22、24、26中接下来要处理的那个数据包。如果在顺序确定98期间只有更新标记104位于标记区域84中,则引导加载程序78特别是从数据包中的第一个数据包26开始。
用于覆写固件14的方法44特别是包括临时存储步骤100。在临时存储步骤100中,引导加载程序78将数据包22、24、26之一与位于固件存储器区域中的先前版本54的一部分进行比较。特别地,引导加载程序78在临时存储步骤100中基于数据包22、24、26与先前版本54的比较,在临时存储器区域52中创建目标版本20的数据包。用于覆写固件14的方法44包括至少一个标记步骤48。在标记步骤48中,引导加载程序78特别是执行更新程序38的临时备份指令。在标记步骤48中设置至少一个持续进度标记30、30′、30″。特别地,当在临时存储器区域52中成功创建了目标版本20的数据包时,引导加载器78执行标记步骤48。用于覆写固件14的方法44特别是包括覆写步骤102,在覆写步骤102中用位于临时存储器区域52中的目标版本20的数据包来覆写固件存储器区域中的先前版本54。特别地,删除分配给固件存储器区域的持久数据存储器40的至少一个扇区,并用临时存储器区域52中的目标版本20的数据包重新写入。用于覆写固件14的方法44包括至少一个进一步的标记步骤50。在进一步的标记步骤50中,引导加载程序78特别是执行更新程序38的完成备份指令。在进一步的标记步骤50中,设置至少一个持续进度标记32、32′、32″。特别地,当固件14的先前版本54已被临时存储器区域52中的目标版本20的数据包覆写时,引导加载程序78执行进一步的标记步骤48。持续进度标记30、30′、30″、32、32′、32″记录了利用数据包22、24、26中的至少一个对固件14的至少部分执行的更新。在顺序确定96中,引导加载程序78根据标记区域中设置的进度标记,特别是在中断之后恢复更新之后,决定是首先执行临时存储步骤100,特别是针对数据包22、24、26中的下一个数据包,还是执行覆写步骤102,特别是针对数据包22、24、26中已经部分处理的数据包。
特别地,重复上述步骤直到所有数据包22、24、26都已被处理为止。特别地,当在顺序确定98中所有持续进度标记30、30′、30″、32、32′、32″都位于标记区域84中时,即当至少一个最终进度标记32″位于标记区域84中时和/或当更新标记104指示更新完成时,引导加载程序78重新启动106电子设备16或初始化96固件14。
电子设备16的虚拟机36执行标记步骤48、50。特别地,当在标记区域84中检测到至少一个标记时,引导加载器78利用虚拟机36加载位于空闲存储器区域82中的更新程序38。特别地,虚拟机36执行中间存储步骤100。特别地,虚拟机36执行覆写步骤102。
图5示出了在用于覆写固件14的方法44期间数据存储器40的示意性状态变化过程。例如,固件14的先前版本54、54′、54″存储在持久数据存储器40的多个、特别是三个扇区中,其中撇号特别是指示先前版本54的存储在不同扇区中的部分。特别地,更新数据12包括多个、特别是三个数据包22、24、26。在通过图4所示的方法44进行第一次运行时,引导加载程序78在临时存储器区域52基于存储在空闲存储器区域82中的数据包26之一创建目标版本20的数据包,将该数据包与整个先前版本54、54′、54″进行比较。特别地,在此之后,引导加载程序78将进度标记30之一设置到标记区域84中。将临时存储器区域52中目标版本20的数据包优选地复制到具有先前版本54的一个区段的扇区中。特别地,在此之后,引导加载程序78将另一个进度标记32设置到标记区域84中。
在通过图4中所示的方法44进行的进一步运行中,引导加载程序78基于存储在空闲存储器区域82中的另外的数据包24在临时存储器区域52中创建目标版本20′的另外的数据包,将该另外的数据包与先前版本54′、54″的尚未覆写的部分进行比较。将至少两个数据包22、24、26分配给电子设备16的同一持久临时存储器区域52,用于创建固件14的目标版本20的一部分。特别是在此之后,引导加载器78将进度标记中的一个进度标记32′设置到标记区域84中。将临时存储器区域52中的目标版本20′的数据包优选地复制到具有先前版本54′的另外的区段的另外的扇区。特别是在此之后,引导加载程序78将另外的进度标记32′设置到标记区域84中。
在通过图4中所示的方法44进行的最后运行中,引导加载程序78基于存储在空闲存储器区域82中的另外的数据包22在临时存储器区域52中创建目标版本20″的附加数据包,将所述附加数据包与先前版本54″的尚未覆写的部分进行比较。每个数据包22、24、26都用固件14的先前版本54的不同大小的部分来处理。特别是在此之后,引导加载程序78将一个进度标记30″设置到标记区域84中。将临时存储器区域52中的目标版本20″的数据包优选地复制到具有先前版本54″的附加区段的附加扇区中。特别是在此之后,引导加载程序78将另外的、特别是最终的进度标记32″设置到标记区域84中。

Claims (14)

1.一种用于为电子设备的固件(14)创建更新数据(12)的方法,具有至少一个细分步骤(18),借助于所述至少一个细分步骤将所述固件(14)的至少一个目标版本(20)细分为至少两个数据包(22、24、26),在至少一个方法步骤中将所述至少两个数据包添加到所述更新数据(12),其特征在于至少一个备份步骤(28),在所述至少一个备份步骤中向至少一个所述数据包(22、24、26)分配用于设置至少一个持续进度标记(30、30′、30″、32、32′、32″)的备份指令,所述至少一个持续进度标记被设置用于记录利用至少一个所述数据包(22、24、26)对所述固件(14)的至少部分执行的更新。
2.根据权利要求1所述的方法,其特征在于比较步骤(34),其中生成至少一个所述数据包(22、24、26),使得该至少一个所述数据包包括所述固件(14)的两个程序版本之间的差异。
3.根据权利要求1或2所述的方法,其特征在于,所述备份指令被创建为能够由虚拟机(36)执行的更新程序(38)的一部分。
4.根据前述权利要求中任一项所述的方法,其特征在于,向至少一个所述数据包(22、24、26)分配至少两个备份指令,用于分别设置至少一个持续进度标记(30、30′、30″、32、32′、32″)。
5.根据前述权利要求中任一项所述的方法,其特征在于,在所述细分步骤(18)期间,根据所述电子设备的持久数据存储器(40)的扇区大小来选择所述数据包(22、24、26)的大小。
6.根据前述权利要求中任一项所述的方法,其特征在于,根据所述电子设备的特定于应用的模型(42)来创建包括所述备份指令的更新程序(38)。
7.一种用于覆写电子设备的固件(14)的方法,特别是通过处理用根据前述权利要求中任一项所述的方法创建的更新数据(12),该方法具有至少一个存储步骤(46),在所述至少一个存储步骤中将所述固件(14)的至少一个目标版本(20)作为至少两个数据包(22、24、26)存储在所述电子设备的数据存储器(40)中,其特征在于至少一个标记步骤(48、50),在所述至少一个标记步骤中设置至少一个持续进度标记(30、30′、30″、32、32′、32″),所述持续进度标记记录利用至少一个所述数据包(22、24、26)对所述固件(14)的至少部分执行的更新。
8.根据权利要求7所述的方法,其特征在于,所述电子设备的虚拟机(36)执行所述标记步骤(48、50)。
9.根据权利要求7或8所述的方法,其特征在于,将至少两个所述数据包(22、24、26)分配给所述电子设备的同一个持久临时存储器区域(52),以创建所述固件(14)的目标版本(20)的一部分。
10.根据权利要求7至9中任一项所述的方法,其特征在于,使用所述固件(14)的先前版本(54)的不同大小的部分来处理每个数据包(22、24、26)。
11.根据权利要求7至10中任一项所述的方法,其特征在于,所述持续进度标记(30、30′、30″、32、32′、32″)在至少一个方法步骤中阻止所述固件(14)的执行。
12.根据权利要求7至11中任一项所述的方法,其特征在于,在至少一个方法步骤中,根据所述持续进度标记(30、30′、30″、32、32′、32″)来选择接下来要处理的数据包(22、24、26)。
13.一种用于更新电子设备的固件(14)的方法,其中在至少一个方法阶段中创建更新数据(12),特别是根据权利要求1至6中任一项所述的方法,并且具有用于特别是根据权利要求7至12中任一项所述的方法覆写所述固件(14)的至少一个方法阶段,具有至少一个细分步骤(18),借助于所述细分步骤将所述固件(14)的至少一个目标版本(20)细分为至少两个数据包(22、24、26),将所述至少两个数据包在至少一个方法步骤中添加到所述更新数据(12),并且具有至少一个存储步骤(46),在所述至少一个存储步骤中至少所述固件(14)的目标版本(20)以至少两个数据包(22、24、26)的形式存储在所述电子设备的数据存储器(40)中,其特征在于至少一个备份步骤(28),在所述备份步骤中向所述数据包(22、24、26)中的至少一个数据包分配用于设置至少一个持续进度标记(30、30′、30″、32、32′、32″)的备份指令,所述持续进度标记记录所述固件(14)的至少部分执行的更新,以及至少一个标记步骤(48、50),在所述标记步骤中设置所述至少一个持续进度标记(30、30′、30″、32、32′、32″)。
14.一种电子设备,具有至少一个持久数据存储器(40)、存储在所述持久数据存储器(40)中的固件(14)以及用于执行根据权利要求7至13中任一项所述的方法的至少一个处理器(58)。
CN202280018673.2A 2021-03-03 2022-02-24 创建更新数据的方法、覆写固件的方法、更新固件的方法及执行该方法的电子设备 Pending CN116964555A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102021202029.1A DE102021202029A1 (de) 2021-03-03 2021-03-03 Verfahren zu einem Erstellen von Aktualisierungsdaten, Verfahren zu einem Überschreiben einer Firmware, Verfahren zum Aktualisieren einer Firmware und Elektronikvorrichtung zu einer Durchführung eines derartigen Verfahrens
DE102021202029.1 2021-03-03
PCT/EP2022/054608 WO2022184534A1 (de) 2021-03-03 2022-02-24 Verfahren zu einem erstellen von aktualisierungsdaten, verfahren zu einem überschreiben einer firmware, verfahren zum aktualisieren einer firmware und elektronikvorrichtung zu einer durchführung eines derartigen verfahrens

Publications (1)

Publication Number Publication Date
CN116964555A true CN116964555A (zh) 2023-10-27

Family

ID=80937226

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280018673.2A Pending CN116964555A (zh) 2021-03-03 2022-02-24 创建更新数据的方法、覆写固件的方法、更新固件的方法及执行该方法的电子设备

Country Status (4)

Country Link
EP (1) EP4302182A1 (zh)
CN (1) CN116964555A (zh)
DE (1) DE102021202029A1 (zh)
WO (1) WO2022184534A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201102924A (en) * 2009-07-03 2011-01-16 Inventec Appliances Corp Embedded electronic device and method for updating firmware thereof
CN102650947B (zh) * 2012-04-01 2015-06-24 广东欧珀移动通信有限公司 一种Android手持设备连续增量的空中升级方法
US9128798B2 (en) * 2012-10-17 2015-09-08 Movimento Group Module updating device
KR20180131840A (ko) * 2017-06-01 2018-12-11 한국전자통신연구원 펌웨어 업데이트 지원 장치 및 그 방법

Also Published As

Publication number Publication date
EP4302182A1 (de) 2024-01-10
DE102021202029A1 (de) 2022-09-08
WO2022184534A1 (de) 2022-09-09

Similar Documents

Publication Publication Date Title
KR100584338B1 (ko) 소프트웨어 업데이트 방법 및 시스템
JP5113700B2 (ja) ファームウェア更新装置及び方法
US8181007B2 (en) Electronic device and method for secure operating system update in embedded system
US8522233B2 (en) Firmware updating system, firmware delivering server, firmware embedded device, and program
KR101427755B1 (ko) Usb를 이용한 펌웨어 업그레이드 장치 및 방법
US7275153B2 (en) Booting and boot code update system using boot strapper code to select between a loader and a duplicate backup loader
EP2329366B1 (en) Performing a pre-update on a non volatile memory
US20090037904A1 (en) Firmware Installation
US20070083744A1 (en) Digital broadcast processing apparatus and boot loader upgrade method thereof
CN104572206A (zh) 应用程序自更新和备份恢复的方法
EP1934729A2 (en) Methods and systems for updating content including a compressed version
CN107690630B (zh) 计算设备中的桥配置
CN113064604B (zh) 一种固件升级方法和装置
CN110321170B (zh) 开机方法
WO2007023497A1 (en) Method and system for in-place updating content stored in a storage device
EP2329368B1 (en) Updating content without using a mini operating system
JPWO2019207729A1 (ja) 産業用コンピュータ、産業用コンピュータシステム、オペレーティングシステム更新方法及びプログラム
CN105814545A (zh) 电子设备
CN111026417A (zh) 一种嵌入式设备的升级方法及嵌入式设备
JP2018160207A (ja) 車載制御装置、及び、プログラム更新ソフトウェア
CN116964555A (zh) 创建更新数据的方法、覆写固件的方法、更新固件的方法及执行该方法的电子设备
JP6582438B2 (ja) 情報処理装置、システム設定方法、及び、コンピュータ・プログラム
CN112148377B (zh) EFI Shell环境下防止SSD异常掉电的方法和装置
CN113467797B (zh) 程序更新方法、装置和系统以及计算机可读存储介质
CN114020308A (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