CN111625249B - 用于物联网设备的自动升级和回滚方法和装置 - Google Patents

用于物联网设备的自动升级和回滚方法和装置 Download PDF

Info

Publication number
CN111625249B
CN111625249B CN201910153307.8A CN201910153307A CN111625249B CN 111625249 B CN111625249 B CN 111625249B CN 201910153307 A CN201910153307 A CN 201910153307A CN 111625249 B CN111625249 B CN 111625249B
Authority
CN
China
Prior art keywords
version
original
upgrade
storage space
data
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
CN201910153307.8A
Other languages
English (en)
Other versions
CN111625249A (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201910153307.8A priority Critical patent/CN111625249B/zh
Publication of CN111625249A publication Critical patent/CN111625249A/zh
Application granted granted Critical
Publication of CN111625249B publication Critical patent/CN111625249B/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
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

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)
  • Information Transfer Between Computers (AREA)

Abstract

公开了一种用于物联网设备的自动升级和回滚方法和装置。所述方法包括:在线获取升级包以将所述升级包下载至所述物联网设备的存储空间;在所述存储空间中将所述升级包恢复成升级所需的更新版本的同时保留回滚至原始版本所需的原始数据;以及在判断升级失败的情况下,至少基于保留的所述原始数据,在所述存储空间中将所述物联网设备的固件回滚至所述原始版本。本发明的OTA升级和回滚方案通过在准备更新版本的同时在设备上保留恢复原始版本所需的数据,能够有效地克服升级故障导致的新旧固件版本同时无法启动而使得设备失效的问题。

Description

用于物联网设备的自动升级和回滚方法和装置
技术领域
本发明涉及一种升级方法,尤其涉及一种用于物联网设备的自动升级和回滚的方法和装置。
背景技术
随着物联网的发展,智能设备的种类愈加丰富。为了降低维护成本、提升用户体验,OTA(Over-the-Air,可被称为“在线升级”或“空中升级”)技术成为智能物联网时代的标配。随着4G、WiFi和蓝牙Mesh技术在物联网升级设备上的普及,更多设备对升级的要求日渐增高。
为了提升升级效率,现有的大部分物联网设备使用OTA差分升级。一旦在升级过程中出现写入失败、差分包错误、解压失败等的故障,会导致运行区被破坏,设备断网变砖,无法恢复。
为此,需要一种更为高效稳妥的OTA升级方案。
发明内容
有鉴于此,本发明提出了一种用于物联网设备固件升级的自动回滚方案,其通过在有限的存储空间中恢复待升级版本,并将其与能被用于恢复出当前运行版本的数据进行交换来实现版本升级。如果升级失败,保留下的数据能被用于当前运行版本的恢复,使得物联网设备能够安全回滚至升级之前的状态,从而避免了设备因OTA升级失败而导致的无法使用。
根据本发明的一个方面,提出了一种用于物联网设备的自动升级和回滚方法,所述方法包括:在线获取升级包以将所述升级包下载至所述物联网设备的存储空间;在所述存储空间中将所述升级包恢复成升级所需的更新版本的同时保留回滚至原始版本所需的原始数据;以及在判断升级失败的情况下,至少基于保留的所述原始数据,在所述存储空间中将所述物联网设备的固件回滚至所述原始版本。由此,通过在OTA升级中,在获取更新版本的同时,保留还原原始版本所需的数据,能够在各种故障情况下回滚至原始版本,从而确保设备的正常运行。
在此,存储空间可以是物联网设备的FLASH存储空间。对应于完整原始版本的原始数据存储在所述存储空间的运行区内,升级包可被下载至所述存储空间的备份区。
优选地,升级和回滚可以通过启动地址互换实现,可以将运行启动地址从对应于完整原始版本的原始数据部分,更改成对应于完整更新版本的更新数据部分,并且在判断升级失败的情况下,将运行启动地址从对应于完整更新版本的更新数据部分更改回对应于完整原始版本的原始数据部分。上述启动地址互换可以通过启动预先存储的、对应于不同启动地址的两个bin文件实现。由此,能够简单且稳妥地实现OTA升级。
替换地,升级和回滚可以通过交换存储位置实现。为此,在所述存储空间中将所述升级包恢复成升级所需的更新版本的同时保留回滚至原始版本所需的原始数据包括:在所述运行区存入恢复更新版本所需的更新数据并在所述备份区存入回滚至原始版本所需的原始数据。优选地,存储位置的交换可以经由中转存储实现。为此,存储空间还可以包括中转区,并且经由所述中转区,将恢复更新版本所需的更新数据存入所述运行区,并将所述回滚至原始版本所需的原始数据存在所述备份区。
优选地,升级包可以是差分升级包,并且可以基于所述运行区内对应于完整原始版本的原始数据,在所述备份区将所述差分升级包恢复成对应于完整更新版本的更新数据。作为替换,可以在所述备份区将所述差分升级包恢复成差分数据;基于所述差分数据,将所述运行区内对应于完整原始版本的原始数据中的相应差异数据拷贝至所述中转区;将所述差分数据拷贝至所述运行区内所述差异数据所在的相应位置处;以及将所述差异数据从所述中转区拷贝至所述备份区。由此,仅需两个差分数据大小的额外存储区域就能够实现原始版本的安全回滚。
优选地,差分升级包的大小是至少部分基于所述中转区和所述备份区的尺寸确定的。存储空间中对所述运行区、备份区和所述中转区的划分是可变的。
根据本发明的另一个方面,提出了一种用于物联网设备的自动升级和回滚装置,所述装置包括:升级包获取单元,用于在线获取升级包以将所述升级包下载至所述物联网设备的存储空间;版本更新单元,用于在所述存储空间中将所述升级包恢复成升级所需的更新版本的同时保留回滚至原始版本所需的原始数据;版本回滚单元,用于在判断升级失败的情况下,至少基于保留的所述原始数据,在所述存储空间中将所述物联网设备的固件回滚至所述原始版本。
对应于完整原始版本的原始数据可以存储在所述存储空间的运行区内,并且所述升级包获取单元将升级包下载至所述存储空间的备份区。所述存储空间可以是所述物联网设备的FLASH存储空间,并且所述存储空间中对运行区、备份区和下述中转区的划分基于自动回滚装置的操作而可变。
在通过启动地址交换进行升级和回滚的情况下,版本更新单元和版本回滚单元可以实现为同一个启动地址更改单元,所述启动地址更改单元用于:将运行启动地址从对应于完整原始版本的原始数据部分,更改成对应于完整更新版本的更新数据部分;以及在判断升级失败的情况下,将运行启动地址从对应于完整更新版本的更新数据部分更改回对应于完整原始版本的原始数据部分。由此,通过运行区和备份区的身份互换实现升级和回滚。
在经由交换存储进行的升级和回滚的情况下,版本更新单元可以进一步用于:在所述运行区存入恢复更新版本所需的更新数据并在所述备份区存入回滚至原始版本所需的原始数据。优选地,交换存储可以经由中转存储实现。于是,存储空间还可以包括用于中转区,并且版本更新单元进一步用于:经由所述中转区,将所述对应于完整更新版本的更新数据存入所述运行区,并将所述回滚至原始版本所需的原始数据存在所述备份区。
在差分升级的情况下,版本更新单元进一步用于:在所述备份区将所述差分升级包恢复成差分数据;基于所述差分数据,将所述运行区内对应于完整原始版本的原始数据中的相应差异数据拷贝至所述中转区;将所述差分数据拷贝至所述运行区内所述差异数据所在的相应位置处;以及将所述差异数据从所述中转区拷贝至所述备份区。
根据本发明的又一个方面,提出了一种物联网设备,包括:处理器;以及存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如上任一项所述的自动升级和回滚方法。优选地,存储器包括FLASH存储装置。
根据本发明的再一个方面,提出了一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如上任一项所述的自动升级和回滚方法。
本发明的OTA升级和回滚方案通过在准备更新版本的同时在设备上保留恢复原始版本所需的数据,能够有效地克服升级故障导致的新旧固件版本同时无法启动而使得设备失效的问题。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1A和1B示出了OTA固件升级时的系统连接例。
图2示出了根据本发明一个实施例的用于物联网设备的自动升级和回滚方法的示意性流程图。
图3示出了根据本发明进行OTA升级和回滚的一个例子。
图4示出了根据本发明进行OTA升级和回滚的另一个例子。
图5示出了根据本发明一个实施例的用于物联网设备的自动升级和回滚装置的组成示意图。
图6示出了根据本发明一个实施例可用于实现上述升级和回滚方法的物联网设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
物联网(IoT)是依托互联网、电信网络等信息承载体,让所有能行使独立功能的普通物体实现互联互通的网络。物联网代表着一个重要的发展趋势,逐渐将日常生活中的各个方面相互连接在一起。不同于早期的路由器等无线设备(例如,每个房间或办公室安装一个)在数量上的局限性,物联网能够深入渗透到方方面面,并且可以连接大量的设备。例如,在家庭环境中,我们通过利用物联网技术能够进行远程锁门、开关窗帘、控制照明以及管理温度和湿度等等。
物联网规模化部署面临着众多挑战,例如:众多设备近距共终端和庞大数量的设备互连。这些挑战催生出对OTA固件升级的需求,它将是物联网系统必不可缺的一个组成部分。OTA的有效性已在许多应用程序中得到验证,例如手机会通过定期升级来接收新功能和修补漏洞。为了防范病毒攻击,设备固件可通过OTA固件升级流程获得最新补丁和更多安全算法。任何物联网系统都由两个部分组成:硬件和固件。在基于SoC的应用中,OTA固件升级功能不仅能够更新固件,还能够重新配置片上硬件资源。
由于物联网系统的设计周期很短,而市场需要持续创新和部署最新功能,因此可以对对硬件进行过度设计,以便在一个较长的时期内满足不断升高的市场需求。OTA固件升级可实现渐进式部署。例如,一个恒温器系统最初可以只部署一个热传感器实现快速部署,之后再部署湿度传感器。请注意,这种方法使得硬件设计成为一个深思熟虑的过程,在架构阶段从硬件角度考虑了未来的部署。
图1A和1B示出了OTA固件升级时的系统连接例。如图1A所示,在某些应用场景或是针对某些特定的设备,物联网单芯片设备1可以直接联网,以在检测到有新版本需要安装时从例如OTA管理平台2上下载所需的升级包。而OTA管理平台2上的升级包例如是由设备供应商(未示出)基于原始版本和更新版本制作并上传的。如图1B所示,物联网单芯片设备1也可以经由例如手机或是网关设备3间接OTA管理平台2联网进行升级。此时,可由中间设备3利用OTA APP进行升级包的下载和下发的相关的OTA管理操作。
物联网涉及领域广泛,应用和最终解决方案需求也多种多样。某些产品看重成本,而另一些则旨在定义新的细分市场。为了保持灵活性,通常选用OTA bootloader(引导加载程序)架构来适应不同的升级需求。Bootloader可被用于执行固件更新操作。在本发明中,bootloader可以用于新旧版本交换的实际执行,并且可以在新版本无法使用时,帮助回滚至原版本以保障物联网设备的顺利运行。
图2示出了根据本发明一个实施例的用于物联网设备自动升级和回滚的方法的示意图流程图。该方法通过在更新版本的同时保留恢复原始版本所需的数据,来确保在升级无法完成时的顺利回滚。在此,“回滚”(Rollback)指因程序升级故障而将程序数据恢复到上一次正确状态的行为;“原始版本”指代物联网设备上当前的固件版本,下文中也可称为“当前版本”或“在前版本”;“更新版本”则可指代下载升级包以在当前固件版本上进行更新的版本,下文中也可称为“升级版本”。
在步骤S210,在线获取升级包以将升级包下载至物联网设备的存储空间。在线获取的升级包可由物联网设备厂商或服务供应商针对最新的固件运行程序版本发布,并经由例如图1所示的OTA管理平台2下发相应的物联网设备。在不同的实施例中,可以使用整包或是差分包进行升级。在此,整包升级包指可从中直接恢复完整的更新版本的数据包;而差分升级包通常仅包括更新版本的更新部分,需要结合在前版本才能恢复完整的更新版本的数据包。
当前,物联网设备的存储空间通常以FLASH存储空间实现。在该FLASH存储空间内,除了存储下载的升级包,还存储有其他的数据内容,例如可以存储完整的当前版本的固件运行程序,以及用于运行本发明的回滚方案的程序等。上述数据内容可以存储在存储空间的不同区域内。例如,可以将下载的升级包存储在备份区,将完整的原始版本存储在运行区。同时,其他的程序内容(例如,bootloader和运行本发明回滚方法的程序)则可存储在存储空间的其他存储区域内,例如,FLASH存储空间的其他运行区域内。在本发明中,为了确保回滚至原始版本的能力,升级包被下载到原始版本之外的其他区域,例如,运行区外的备份区,而不会进行对原始版本的直接盖写下载。
在步骤S220,在存储空间中将升级包恢复成升级所需的更新版本的同时保留回滚至原始版本所需的原始数据。在将升级包下载之后,首先需要校验包完整性。如果校验不通过,则直接判断升级失败,不进行后续升级操作。如果校验通过,则可以尝试从升级包中恢复升级所需的完整更新版本。在下载整包升级包的情况下,可以直接从整包中恢复完整版本;而在下载差分包的情况下,则需要基于物联网设备现有版本的固件运行程序的数据进行更新版本的恢复。在此期间,可以通过转移启动位置或是转移存储的方式来保留回滚至原始版本所需的原始数据。根据如下将详述的不同实施例,保留的原始数据可以是原始版本本身,也可以是其一部分。
在步骤S230,在判断升级失败的情况下,至少基于保留的所述原始数据,在存储空间中将物联网设备的固件回滚至所述原始版本。在本发明中,更新版本的准备、原始数据的保留以及原始版本的回滚都可由例如bootloader在设备的同一块或是同一组物理存储器(例如,同一块FLASH存储器)的存储空间内进行。在物联网设备的升级过程中,会出现写入存储(例如,写FLASH)失败、差分包错误、解压失败、更新版本恢复失败、更新版本无法启动等的种种问题。在本发明中基于升级失败的回滚,可以针对升级包下载过程中的故障,但尤其适用于针对升级包顺利下载后,尝试从中恢复更新版本并启动更新版本中所遇到的各自故障的回滚。同样地,依据步骤S220中不同的更新和保留策略,在步骤S230中可以通过转移启动位置或是数据恢复的方式进行原始版本的回滚。
在一个实施例中,可以简单通过启动地址的转换来实现本发明的OTA升级及回滚。图3示出了根据本发明进行OTA升级和回滚的一个例子。为此,如图3左侧所示,可以在步骤S210中可以将升级包下载至存储空间的备份区,并将其恢复成更新版本(对应于图图中的APP3)内。此时,在例如FLASH的存储空间内还存储有原始版本(对应于图中的APP1)。
在进行OTA升级时,可以如图3中间所示,简单地通过启动地址的互换来实现。由此,上述步骤S220可以通过将运行启动地址从对应于完整原始版本的原始数据部分,更改成对应于完整更新版本的更新数据部分,即从地址A更改为地址B来实现。为了支持不同地址的启动,可以在该物联网设备中(例如,该FLASH空间的其他位置处)存储有两个bin启动文件,以分别用于从对应于所述原始数据部分和所述更新数据部分的启动地址(例如,分别对应于图中的地址A和地址B)来启动对应的程序文件。
在判断升级失败需要回滚时,则可如图3右侧所示,简单通过启动地址的再次互换实现。于是,步骤S230可以通过将运行启动地址从对应于完整更新版本的更新数据部分更改回对应于完整原始版本的原始数据部分,即从地址B更改回地址A来实现。
在图3的示例中,借助两个bin文件,通过运行区和备份区的身份互换来简单实现OTA升级和回滚。OTA升级时,先将待升级版本恢复到OTA区,然后将启动地址切换到OTA区,并重启设备。重启后,OTA区变成APP区,APP区变成OTA区。在该实施例中,由于无需对原始版本和更新版本本身进行任何修改,仅仅需要通过不同的bin文件进行重启版本的运行,因此能够提供最高的回滚安全性,在升级包下载、地址切换和新版本重启的任何阶段发生故障,都能够很方便的通过重启对应于地址A的bin文件回滚至原始版本。但该方案需要两个bin文件,需要下载和存储整包升级包,因此从存储空间与流量节省的角度看并非最佳。在其他实现中,也可以在OTA区下载差分包,并基于APP区的原始版本而在OTA区恢复完整的更新版本,其后再进行启动地址的交换(例如,由A变为B),以及需要回滚时的启动地址再次交换(例如,由B变为A)。
在另一个实施例中,可以通过交换存储来实现更新数据与原始数据的互换。为此,在步骤S220,可以在运行区存入恢复更新版本所需的更新数据并在备份区存入回滚至原始版本所需的原始数据。在不同的实施例中,上述存储的交换可以是涉及不同数据范围的存储交换。在此,基于不同的应用场景,“恢复更新版本所需的更新数据”可以仅仅包括前后版本的差异数据(以及指示差异数据所处位置的位置信息等),也可以是对应于完整更新版本的(全部)更新数据。类似地,“回滚至原始版本所需的原始数据”可以仅仅包括前后版本的差异数据(以及指示差异数据所处位置的位置信息等),也可以是对应于完整原始版本的(全部)原始数据。相应地,在判断升级失败的情况下,可以通过将原始数据回存至运行区来实现回滚。于是,步骤S230可以包括:基于在备份区存储的回滚至原始版本所需的原始数据,在运行区恢复对应于完整原始版本的原始数据。
在一个优选实施例中,存储区域的交换可以经由中转存储来实现。为此,物联网设备的存储空间还可以包括中转区。相应地,步骤S220可以包括经由所述中转区,将恢复更新版本所需的更新数据存入所述运行区,并将所述回滚至原始版本所需的原始数据存在所述备份区。
图4示出了根据本发明进行OTA升级和回滚的另一个例子。如图4最左侧所示,在升级开始前,OTA区空闲(或是存储有其他可被盖写的数据)。固件运行程序存储在APP区中(对应于APP1),并使用对应于启动地址A的bin文件启动原始版本。随后,OTA升级开始,将与更新版本相关的整包或是差分升级包下载至由地址B开始的OTA区(对应于APP3)。
随后,经由中转区进行交换,并在APP区内得到完整的更新版本。如果在更新版本获取或是启动中出现故障,则可入最右侧所示,同样经由中转区交换将完整的原始版本重新存入APP区,并可以基于同一个bin文件启动。
在整包升级的一个例子中,升级和回滚可以包括如下过程:
a)将升级包下载到OTA区,校验整包完整性,如果不通过,则流程结束,不做升级操作。
b)将APP区与OTA区互换。具体流程:比较APP区与OTA区固定大小(4k、16k等)内容,如果有差异,则将APP区内容拷贝到中转区;将OTA区相同大小内容拷贝到APP区,再将中转区内容拷贝到OTA区。全部比较拷贝完后,重新启动。
c)如果b流程在中间某部分断电,重启后,bootloader继续之前流程,直到全部交换完成。
d)如果交换完成重启后,版本无法启动,可以在bootloader中将原版本交换回来,使用原版本运行。
在获取的升级包是差分升级包的情况下,步骤S220可以进一步包括基于所述运行区内对应于完整原始版本的原始数据,在所述备份区将所述差分升级包恢复成对应于完整更新版本的更新数据;以及经由所述中转区交换所述运行区和所述备份区内存储的对应于完整原始版本的原始数据以及对应于完整更新版本的更新数据。此时,需要中转区和备份区具有能存储完整版本的存储空间。
作为替换,步骤S220也可以进一步包括:首先在所述备份区将所述差分升级包恢复成差分数据(例如,进行常规的校验和解压操作);基于所述差分数据,将所述运行区内对应于完整原始版本的原始数据中的相应差异数据拷贝至所述中转区;将所述差分数据拷贝至所述运行区内所述差异数据所在的相应位置处;以及将所述差异数据从所述中转区拷贝至所述备份区。由于差分数据中除了用于替换旧有程序内容的数据之外,还包括对替换位置的描述。为此,可以利用中转区先将运行区内完整原始版本中需要替换的数据存入,在进行新数据的盖写,并将中转区的原始替换数据回存备份区。由此,无论在上述哪个步骤出现故障,都能够通过将原始替换数据回写至其在运行区内的原始位置而进行回滚,从而避免因升级故障导致的设备无法使用的问题。在此方案中,中转区和备份区进行存储差异数据,无需存储完整版本的存储容量,因此相比于前例能够节省更多的存储空间。
在差分升级的一个例子中,升级和回滚可以包括如下过程:
a)将差分包在OTA区差分恢复,校验整包完整性,如果不通过,则流程结束,不做升级操作。
b)将APP区与OTA区差异内容互换。(差异部分位置,在差分恢复时有记录)。具体流程:将APP区的差异内容拷贝到中转区;将OTA区对应位置内容拷贝到APP区,再将中转区内容拷贝到OTA区。全部比较拷贝完后,重新启动。
c)如果b流程在中间某部断电,重启后,bootloader继续之前流程,直到全部交换完成。
d)如果交换完成重启后,版本无法启动,可以在bootloader中将原版本交换回来,使用原版本运行。
在物联网设备的存储空间尤其受限的情况下,差分升级包的大小可以至少部分基于中转区和备份区的尺寸确定。例如,可以通过多次的差分升级来弥补FLASH空间有限的问题。进一步地,存储空间中对运行区、备份所述中转区的划分是可变的。例如,可以在确保地址A不变的情况下,根据数据的实际大小进行区域划分,以实现存储空间的最大化利用。
如上已经根据图2-4描述了根据本发明的升级和回滚方法。在其他实施例中,本发明的上述方法也可以实现为一种自动回滚装置。该装置可由例如存储在物联网设备存储空间内的对应程序实现,该装置包括的各个单元对应于该程序的相应功能。
图5示出了根据本发明一个实施例的用于物联网设备的自动升级和回滚装置。装置500可以包括升级包获取单元510、版本更新单元520以及版本回滚单元530。
升级包获取单元510可以用于在线获取升级包以将所述升级包下载至所述物联网设备的存储空间。版本更新单元520可以用于在所述存储空间中将所述升级包恢复成升级所需的更新版本的同时保留回滚至原始版本所需的原始数据。版本回滚单元530则可用于在判断升级失败的情况下,至少基于保留的所述原始数据,在所述存储空间中将所述物联网设备的固件回滚至所述原始版本。
对应于完整原始版本的原始数据可以存储在所述存储空间的运行区内,并且所述升级包获取单元510将升级包下载至所述存储空间的备份区。所述存储空间可以是所述物联网设备的FLASH存储空间,并且所述存储空间中对运行区、备份区和下述中转区的划分基于自动回滚装置的操作而可变。
在通过启动地址交换进行升级和回滚的实施例中,版本更新单元520和版本回滚单元530可以实现为同一个启动地址更改单元,所述启动地址更改单元用于:将运行启动地址从对应于完整原始版本的原始数据部分,更改成对应于完整更新版本的更新数据部分;以及在判断升级失败的情况下,将运行启动地址从对应于完整更新版本的更新数据部分更改回对应于完整原始版本的原始数据部分。由此,通过运行区和备份区的身份互换实现升级和回滚。
在经由交换存储进行升级和回滚实施例中,版本更新单元520可以进一步用于:在所述运行区存入恢复更新版本所需的更新数据并在所述备份区存入回滚至原始版本所需的原始数据。更具体地,交换存储可以经由中转存储实现。于是,存储空间还可以包括用于中转区,并且版本更新单元520进一步用于:经由所述中转区,将恢复更新版本所需的更新数据存入所述运行区,并将所述回滚至原始版本所需的原始数据存在所述备份区。
在差分升级的情况下,版本更新单元520进一步用于:在所述备份区将所述差分升级包恢复成差分数据;基于所述差分数据,将所述运行区内对应于完整原始版本的原始数据中的相应差异数据拷贝至所述中转区;将所述差分数据拷贝至所述运行区内所述差异数据所在的相应位置处;以及将所述差异数据从所述中转区拷贝至所述备份区。
图6示出了根据本发明一个实施例可用于实现上述升级和回滚方法的物联网设备的结构示意图。
参见图6,物联网设备600包括存储器610和处理器620,并且优选实现为一个单芯片的嵌入式系统。存储器610可以包括各种类型的存储单元,例如系统内存和永久存储装置。永久存储装置例如可以实现为本发明中的FLASH存储空间,并且是在设备断电后也不会失去存储的指令和数据的非易失性存储设备。
存储器610上存储有可执行代码,当可执行代码被处理器620处理时,可以使处理器620执行上文述及的自动回滚方法。
上文中已经参考附图详细描述了根据本发明的自动回滚方法和装置。本发明的OTA升级和回滚方案通过在准备更新版本的同时在设备上保留恢复原始版本所需的数据,能够有效地克服升级故障导致的新旧固件版本同时无法启动而使得设备失效的问题。
此外,根据本发明的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。
或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (19)

1.一种用于物联网设备的自动升级和回滚方法,所述方法包括:
在线获取升级包以将所述升级包下载至所述物联网设备的存储空间;
在所述存储空间中将所述升级包恢复成升级所需的更新版本的同时保留回滚至原始版本所需的原始数据;以及
在判断升级失败的情况下,至少基于保留的所述原始数据,在所述存储空间中将所述物联网设备的固件回滚至所述原始版本,
其中,在所述存储空间中将所述升级包转换成升级所需的更新版本的同时保留回滚至原始版本所需的原始数据包括:
将运行启动地址从对应于完整原始版本的原始数据部分,更改成对应于完整更新版本的更新数据部分,并且
在判断升级失败的情况下,至少基于保留的所述原始数据,在所述存储空间中将所述物联网设备的固件回滚至所述原始版本包括:
在判断升级失败的情况下,将运行启动地址从对应于完整更新版本的更新数据部分更改回对应于完整原始版本的原始数据部分,
其中,所述物联网设备中存储有两个bin启动文件,分别用于从对应于所述原始数据部分和所述更新数据部分的启动地址来启动对应的程序文件。
2.如权利要求1所述的方法,其中,所述存储空间是所述物联网设备的FLASH存储空间。
3.如权利要求1所述的方法,其中,对应于完整原始版本的原始数据存储在所述存储空间的运行区内,并且
在线获取升级包以将所述升级包下载至所述物联网设备的存储空间包括:
将升级包下载至所述存储空间的备份区。
4.如权利要求3所述的方法,其中,在所述存储空间中将所述升级包恢复成升级所需的更新版本的同时保留回滚至原始版本所需的原始数据包括:
在所述运行区存入恢复更新版本所需的更新数据并在所述备份区存入回滚至原始版本所需的原始数据。
5.如权利要求3所述的方法,其中,所述存储空间还包括中转区,并且
在所述存储空间中将所述升级包转换成升级所需的更新版本的同时保留恢复原始版本所需的原始数据包括:
经由所述中转区,将恢复更新版本所需的更新数据存入所述运行区,并将所述回滚至原始版本所需的原始数据存入所述备份区。
6.如权利要求5所述的方法,其中,所述升级包是差分升级包。
7.如权利要求6所述的方法,其中,在所述存储空间中将所述升级包恢复成升级所需的更新版本的同时保留恢复原始版本所需的原始数据包括:
基于所述运行区内对应于完整原始版本的原始数据,在所述备份区将所述差分升级包恢复成对应于完整更新版本的更新数据;以及
经由所述中转区交换所述运行区和所述备份区内存储的对应于完整原始版本的原始数据以及对应于完整更新版本的更新数据。
8.如权利要求6所述的方法,其中,在所述存储空间中将所述升级包恢复成升级所需的更新版本的同时保留恢复原始版本所需的原始数据包括:
在所述备份区将所述差分升级包恢复成差分数据;
基于所述差分数据,将所述运行区内对应于完整原始版本的原始数据中的相应差异数据拷贝至所述中转区;
将所述差分数据拷贝至所述运行区内所述差异数据所在的相应位置处;以及
将所述差异数据从所述中转区拷贝至所述备份区。
9.如权利要求6所述的方法,其中,所述差分升级包的大小是至少部分基于所述中转区和所述备份区的尺寸确定的。
10.如权利要求5所述的方法,其中,所述存储空间中对所述运行区、备份区和所述中转区的划分是可变的。
11.一种用于物联网设备的自动升级和回滚装置,所述装置包括:
升级包获取单元,用于在线获取升级包以将所述升级包下载至所述物联网设备的存储空间;
版本更新单元,用于在所述存储空间中将所述升级包恢复成升级所需的更新版本的同时保留回滚至原始版本所需的原始数据;以及
版本回滚单元,用于在判断升级失败的情况下,至少基于保留的所述原始数据,在所述存储空间中将所述物联网设备的固件回滚至所述原始版本,
其中,所述版本更新单元和所述版本回滚单元是启动地址更改单元,所述启动地址更改单元用于:
将运行启动地址从对应于完整原始版本的原始数据部分,更改成对应于完整更新版本的更新数据部分;以及
在判断升级失败的情况下,将运行启动地址从对应于完整更新版本的更新数据部分更改回对应于完整原始版本的原始数据部分,
其中,所述物联网设备中存储有两个bin启动文件,分别用于从对应于所述原始数据部分和所述更新数据部分的启动地址来启动对应的程序文件。
12.如权利要求11所述的装置,其中,对应于完整原始版本的原始数据存储在所述存储空间的运行区内,并且
所述升级包获取单元进一步用于:
将升级包下载至所述存储空间的备份区。
13.如权利要求12所述的装置,其中,所述版本更新单元进一步用于:
在所述运行区存入恢复更新版本所需的更新数据并在所述备份区存入回滚至原始版本所需的原始数据。
14.如权利要求12所述的装置,其中,所述存储空间还包括中转区,并且
所述版本更新单元进一步用于:
经由所述中转区,将所述对应于完整更新版本的更新数据存入所述运行区,并将所述回滚至原始版本所需的原始数据存在所述备份区。
15.如权利要求14所述的装置,其中,所述升级包是差分升级包,并且所述版本更新单元进一步用于:
在所述备份区将所述差分升级包恢复成差分数据;
基于所述差分数据,将所述运行区内对应于完整原始版本的原始数据中的相应差异数据拷贝至所述中转区;
将所述差分数据拷贝至所述运行区内所述差异数据所在的相应位置处;以及
将所述差异数据从所述中转区拷贝至所述备份区。
16.如权利要求14所述的装置,其中,所述存储空间是所述物联网设备的FLASH存储空间,并且所述存储空间中对所述运行区、备份区和所述中转区的划分基于所述自动回滚装置的操作而可变。
17.一种物联网设备,包括:
处理器;以及
存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1-10中任一项所述的方法。
18.如权利要求17所述的设备,其中,所述存储器包括FLASH存储装置。
19.一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1-10中任一项所述的方法。
CN201910153307.8A 2019-02-28 2019-02-28 用于物联网设备的自动升级和回滚方法和装置 Active CN111625249B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910153307.8A CN111625249B (zh) 2019-02-28 2019-02-28 用于物联网设备的自动升级和回滚方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910153307.8A CN111625249B (zh) 2019-02-28 2019-02-28 用于物联网设备的自动升级和回滚方法和装置

Publications (2)

Publication Number Publication Date
CN111625249A CN111625249A (zh) 2020-09-04
CN111625249B true CN111625249B (zh) 2023-04-25

Family

ID=72258806

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910153307.8A Active CN111625249B (zh) 2019-02-28 2019-02-28 用于物联网设备的自动升级和回滚方法和装置

Country Status (1)

Country Link
CN (1) CN111625249B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112148328A (zh) * 2020-09-14 2020-12-29 雷沃工程机械集团有限公司 一种目标元件远程升级时程序回滚方法及系统
CN112799877A (zh) * 2020-12-30 2021-05-14 广州朗国电子科技有限公司 基于ota的版本回滚方法、系统及存储介质
CN112905221A (zh) * 2021-02-20 2021-06-04 百度在线网络技术(北京)有限公司 一种版本回退方法、装置、电子设备及存储介质
CN113391832A (zh) * 2021-06-11 2021-09-14 中电科航空电子有限公司 机载软件升级方法、升级包加载方法、装置和设备
CN113553082B (zh) * 2021-07-29 2023-03-21 百度在线网络技术(北京)有限公司 升级固件的方法、恢复固件的方法和装置
CN114143197B (zh) * 2021-11-29 2024-04-02 武汉天喻信息产业股份有限公司 物联网设备ota升级方法、装置、设备及可读存储介质
US11645253B1 (en) 2021-12-01 2023-05-09 International Business Machines Corporation Managing a new version of an integration flow during a rolling update
CN114286366B (zh) * 2021-12-23 2023-07-14 深圳创维数字技术有限公司 无线网格网络升级方法、装置、主节点及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101436138A (zh) * 2007-11-16 2009-05-20 苏州科达通信技术发展有限公司 一种用于软件升级且动态回滚的控制装置以及控制方法
CN104714811A (zh) * 2013-12-13 2015-06-17 中兴通讯股份有限公司 差分升级包的制作方法及装置、系统差分升级方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120117555A1 (en) * 2010-11-08 2012-05-10 Lsi Corporation Method and system for firmware rollback of a storage device in a storage virtualization environment

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101436138A (zh) * 2007-11-16 2009-05-20 苏州科达通信技术发展有限公司 一种用于软件升级且动态回滚的控制装置以及控制方法
CN104714811A (zh) * 2013-12-13 2015-06-17 中兴通讯股份有限公司 差分升级包的制作方法及装置、系统差分升级方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Sang Gi Hong,and etc.A smartphone connected software updating framework for IoT devices.《2015 International Symposium on Consumer Electronics (ISCE)》.2015,第1-2页. *
陈晓苏,李华.面向C/S应用系统的一种自动升级方法.郑州轻工业学院学报(自然科学版).2001,(第03期),第15-19页. *

Also Published As

Publication number Publication date
CN111625249A (zh) 2020-09-04

Similar Documents

Publication Publication Date Title
CN111625249B (zh) 用于物联网设备的自动升级和回滚方法和装置
CN100545809C (zh) 一种软件升级方法及其系统
US6928579B2 (en) Crash recovery system
TWI533216B (zh) 作業系統更新方法
CN110865831A (zh) 关于在部署联网设备时进行改进的自动软件更新的方法
CN106452928A (zh) 路由器的固件升级方法、固件升级装置及路由器
CA3163684A1 (en) Package-based remote firmware update
CN105045640A (zh) 一种软件升级方法、装置及智能设备
CN109710297B (zh) 一种设备整体或分模块进行升级和回退方法
CN113626059B (zh) 系统升级方法、摄像机及计算机可读存储介质
CN106775874B (zh) 终端设备的系统升级方法
CN111769966B (zh) 一种克隆升级方法、系统和应用
CN113032183A (zh) 系统管理方法、装置、计算机设备和存储介质
CN112860297A (zh) 基于汽车双目相机的存储系统和系统更新方法
CN110659052B (zh) 网络设备中系统软件的更新方法、系统及可读存储介质
CN112230967A (zh) 一种基于传统分区的光模块固件可回退在线升级方法
US20210326125A1 (en) Installing application program code on a vehicle control system
CN100469001C (zh) 可使用通用随插即用通信协议更新软件程序的系统及方法
JP2006172098A (ja) パケット通信装置、パケット通信装置におけるリブート方法、及び、プログラム
CN117932625A (zh) 一种嵌入式设备的升级方法、装置、电子设备及存储介质
KR100402326B1 (ko) 프로세서간 통신 프로토콜 변경 방법
CN114489717A (zh) 一种系统升级方法、装置和系统
CN116301925A (zh) 操作系统启动方法、装置、设备及计算机可读存储介质
CN115756529A (zh) 设备的升级版本回滚方法、装置、计算机设备及存储介质
CN116804911A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40036381

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant