CN112015447B - 电子设备的系统更新方法及装置、电子设备及存储介质 - Google Patents
电子设备的系统更新方法及装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112015447B CN112015447B CN202010794995.9A CN202010794995A CN112015447B CN 112015447 B CN112015447 B CN 112015447B CN 202010794995 A CN202010794995 A CN 202010794995A CN 112015447 B CN112015447 B CN 112015447B
- Authority
- CN
- China
- Prior art keywords
- firmware
- area
- package
- firmware package
- backup area
- 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 title claims abstract description 76
- 238000012795 verification Methods 0.000 claims description 27
- 238000012986 modification Methods 0.000 claims description 11
- 230000004048 modification Effects 0.000 claims description 11
- 238000013496 data integrity verification Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 5
- 238000005096 rolling process Methods 0.000 abstract 1
- 238000004891 communication Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 206010033799 Paralysis Diseases 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 239000003550 marker Substances 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 241001391944 Commicarpus scandens Species 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012360 testing method Methods 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
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)
Abstract
本申请公开了一种电子设备的系统更新方法,系统更新方法包括:根据接收到的回滚指令寻找第一备份区或第二备份区中回滚指令所对应的固件包,作为更新固件包;修改固件信息存储区内的固件参数;在接收到更新命令后,进入系统启动区,读取固件信息存储区中存储的固件参数;及根据读取到的固件参数,将更新固件包写入程序运行区以替换电子设备内当前的固件包,以完成系统更新。本申请还公开了一种系统更新装置、电子设备和非易失性计算机可读存储介质。本申请的系统更新方法中,可以通过将电子设备回滚至历史版本,提升了电子设备更新过程中的鲁棒性。
Description
技术领域
本申请涉及电子设备技术领域,更具体而言,涉及一种电子设备的系统更新方法及装置、电子设备及非易失性计算机可读存储介质。
背景技术
电子设备在使用时需要经常对系统进行升级,但是如果升级后的版本不稳定,容易导致系统产生较多的问题,进而影响电子设备的正常使用,这时用户很难回退至之前的版本或者回滚过程比较繁杂。另外,电子设备在进行升级时,如果升级包出现错误(例如升级包内部分数据丢失)或者电子设备升级过程中突然掉电,容易导致电子设备瘫痪无法使用。
发明内容
有鉴于此,本发明旨在至少在一定程度上解决相关技术中的问题之一。为此,本申请实施方式提供一种电子设备的系统更新方法及装置、电子设备及非易失性计算机可读存储介质。
本申请实施方式的电子设备的系统更新方法,所述电子设备包括系统启动区、固件信息存储区、程序运行区和备份区,所述备份区包括第一备份区和第二备份区,所述第一备份区用于备份所述系统的历史版本的固件包和所述系统升级需要的固件包中的一部分,所述第二备份区用于备份所述系统的历史版本的固件包和所述系统升级需要的固件包中的另一部分,所述系统更新方法包括:根据接收到的回滚指令寻找所述第一备份区或所述第二备份区中所述回滚指令所对应的固件包,作为更新固件包;修改所述固件信息存储区内的固件参数;在接收到更新命令后,进入所述系统启动区,读取所述固件信息存储区中存储的固件参数;及根据读取到的固件参数,将所述更新固件包写入所述程序运行区以替换所述电子设备内当前的固件包,以完成系统更新。
本申请实施方式的电子设备的系统更新方法中,第一备份区用于备份系统的历史版本的固件包和系统升级需要的固件包中的一部分,第二备份区用于备份系统的历史版本的固件包和系统升级需要的固件包中的另一部分,当接收到回滚指令时能够从第一备份区或第二备份区中寻找到对应历史版本的固件包,然后以该固件包作为更新固件包对电子设备的系统进行更新,由此,当电子设备升级后的系统出现一些问题或者电子设备升级过程中掉电瘫痪时,电子设备可以回滚至历史版本,使得电子设备可以继续运行,提升了电子设备更新过程中的鲁棒性。
在某些实施方式中,所述系统更新方法还包括:接收所述系统升级需要的固件包,以作为所述更新固件包;将所述更新固件包写入所述第一备份区或所述第二备份区;修改所述固件信息存储区内的固件参数;在接收到更新命令后,进入所述系统启动区,读取所述固件信息存储区中存储的固件参数;及根据读取到的固件参数,将所述更新固件包写入所述程序运行区以替换所述电子设备内当前的固件包,以完成系统更新。
本实施方式中,首先接收系统升级需要的固件包以作为更新固件包,然后将更新固件包写入第一备份区或第二备份区,然后修改固件存储区内的固件参数;在接收到更新命令后根据固件信息存储区中的固件参数将更新固件包写入程序运行区以替换电子设备当前的固件包,完成电子设备的系统更新。由此,电子设备能够进行升级,且在升级过程中将固件包的接收和固件包的拷贝分离,在接收到更新命令后开始将固件包写入程序运行区,提升了升级过程中的鲁棒性。
在某些实施方式中,所述固件参数包括第一参数、第二参数及第三参数,所述修改所述固件信息存储区内的固件参数,包括:对所述更新固件包所在的备份区进行标记以更新所述第一参数;置位更新标志以更新所述第二参数;及标记更新状态以更新所述第三参数。
本实施方式中,对更新固件包所在的备份区进行标记使得后续更新过程中可以找到更新固件包所在的备份区;置位更新标志和标记更新状态使得可以通过识别电子设备的系统更新状态及更新标志对电子设备进行更新。
在某些实施方式中,所述根据读取到的固件参数,将所述更新固件包写入所述程序运行区以替换所述电子设备内当前的固件包,完成系统更新,包括:检查所述第一备份区或所述第二备份区内是否存储有所述更新固件包;检查到所述更新固件包时,对所述更新固件包进行数据完整性校验;校验合格后,将所述更新固件包从所述第一备份区或所述第二备份区拷贝至所述程序运行区;对拷贝至所述程序运行区的所述更新固件包进行数据完整性校验;校验合格后,修改所述固件信息存储区内的参数信息;及根据所述更新固件包更新所述系统。
本实施方式中,在检查到更新固件包时,对更新固件包进行数据完整性检验,校验合格后才将更新固件包从第一备份区或第二备份区拷贝至程序运行区,避免了拷贝至程序运行区的更新固件包不完整或者数据错误而导致在进行更新时出现故障瘫痪的情况;同时,更新固件包拷贝至程序运行区后进行数据完整性校验,校验合格修改固件存储区内的固件参数,使得在程序运行区进行系统更新时不易发生故障,提升了电子设备在进行系统更新时的鲁棒性。
在某些实施方式中,所述接收所述系统升级需要的固件包,以作为更新固件包,包括:将所述系统升级需要的固件包拆分为多个升级子固件包;依次接收多个所述升级子固件包;对每个所述升级子固件包进行校验;及重新接收校验失败的所述升级子固件包。
本实施方式中,将系统升级需要的固件包拆分为多个升级子固件包,然后依次接收多个升级子固件包,且对每个升级子固件包进行校验,对于校验失败的升级子固件包进行重新接收,由此,在接收系统升级需要的固件包时如果出现故障只需要重新接收出错的升级子固件包,无需重新接收整个系统升级需要的固件包,一方面,提升了接收系统升级需要的固件包时的鲁棒性;另一方面,减少了对网络资源的占用,使得在传输固件包时其他通讯任务仍然可以正常进行。
在某些实施方式中,所述将所述更新固件包写入所述第一备份区或所述第二备份区,包括:选择所述第一备份区或所述第二备份区存储所述系统升级需要的固件包,其中,选择的备份区内未存储所述系统的历史版本的固件包;将选择的备份区擦除;对所述更新固件包进行校验;及若校验合格,将所述更新固件包写入选择的备份区。
本实施方式中,选择未存储历史版本的固件包的备份区作为存储更新固件包的备份区,然后将选择的备份区擦除及对更新固件包进行校验,校验合格才将更新固件包写入选择的备份区,由此,一方面,电子设备内始终存储有历史版本的固件包,随时可以对系统进行回滚;另一方面,更新固件包校验合格才将更新固件包写入选择的备份区,提升了更新固件包的准确性,使得后续进行升级时不易发生故障。
在某些实施方式中,所述系统更新方法还包括:在所述程序运行区正常运行时,执行所述接收所述系统升级需要的固件包,以作为所述更新固件包的步骤;在所述程序运行区空闲时,执行所述在接收到更新命令后,进入所述系统启动区读取所述固件信息存储区中存储的固件参数的步骤。
本实施方式中,程序运行区正常运行时,接收系统升级需要的固件包,减少了在更新过程中因接收固件包而消耗较长时间,导致电子设备无法正常执行任务,提高了电子设备的工作效率;程序运行区空闲时,进入所述系统启动区读取所述固件信息存储区中存储的固件参数的步骤,避免了在系统正常运行时对系统进行更新导致系统数据丢失等情况,提升了电子设备运行时的鲁棒性。
本申请实施方式的电子设备的系统更新装置,所述电子设备包括系统启动区、固件信息存储区、程序运行区和备份区,所述备份区包括第一备份区和第二备份区,所述第一备份区用于备份所述系统的历史版本的固件包和所述系统升级需要的固件包中的一部分,所述第二备份区用于备份所述系统的历史版本的固件包和所述系统升级需要的固件包中的另一部分,所述系统更新装置包括寻找模块、第一修改模块、第一读取模块和第一写入模块,所述寻找模块用于根据接收到的回滚指令寻找所述第一备份区或所述第二备份区中所述回滚指令所对应的固件包,作为更新固件包;所述第一修改模块用于修改所述固件信息存储区内的固件参数;所述第一读取模块用于在接收到更新命令后,进入所述系统启动区读取所述固件信息存储区中存储的固件参数;所述第一写入模块用于根据读取到的固件参数,将所述更新固件包写入所述程序运行区以替换所述电子设备内当前的固件包,以完成系统更新。
本实施方式的电子设备的系统更新装置中,第一备份区用于备份系统的历史版本的固件包和系统升级需要的固件包中的一部分,第二备份区用于备份系统的历史版本的固件包和系统升级需要的固件包中的另一部分,当接收到回滚指令时能够从第一备份区或第二备份区中寻找到对应历史版本的固件包,然后以该固件包作为更新固件包对电子设备的系统进行更新,由此,当电子设备升级后的系统出现一些问题或者电子设备升级过程中掉电瘫痪时,电子设备可以回滚至历史版本,使得电子设备可以继续运行,提升了电子设备更新过程中的鲁棒性。
在某些实施方式中,系统更新装置还包括接收模块、第二写入模块、第二修改模块、第二读取模块和第三写入模块,所述接收模块用于接收所述系统升级需要的固件包,以作为所述更新固件包;第二写入模块用于将所述更新固件包写入所述第一备份区或所述第二备份区;第二修改模块用于修改所述固件信息存储区内的固件参数;第二读取模块用于在接收到更新命令后,进入所述系统启动区,读取所述固件信息存储区中存储的固件参数;第三写入模块用于根据读取到的固件参数,将所述更新固件包写入所述程序运行区以替换所述电子设备内当前的固件包,以完成系统更新。
本实施方式中,首先接收系统升级需要的固件包以作为更新固件包,然后将更新固件包写入第一备份区或第二备份区,然后修改固件存储区内的固件参数;在接收到更新命令后根据固件信息存储区中的固件参数将更新固件包写入程序运行区以替换电子设备当前的固件包,完成电子设备的系统更新。由此,电子设备能够进行升级,且在升级过程中将固件包的接收和固件包的拷贝分离,在接收到更新命令后开始将固件包写入程序运行区,提升了升级过程中的鲁棒性。
在某些实施方式中,所述固件参数包括第一参数、第二参数及第三参数,所述修改模块还用于:对所述更新固件包所在的备份区进行标记以更新所述第一参数;置位更新标志以更新所述第二参数;及标记更新状态以更新所述第三参数。
本实施方式中,对更新固件包所在的备份区进行标记使得后续更新过程中可以找到更新固件包所在的备份区;置位更新标志和标记更新状态使得可以通过识别电子设备的系统更新状态及更新标志对电子设备进行更新。
在某些实施方式中,所述第一写入模块还用于:检查所述第一备份区或所述第二备份区内是否存储有所述更新固件包;检查到所述更新固件包时,对所述更新固件包进行数据完整性校验;校验合格后,将所述更新固件包从所述第一备份区或所述第二备份区拷贝至所述程序运行区;对拷贝至所述程序运行区的所述更新固件包进行数据完整性校验;校验合格后,修改所述固件信息存储区内的固件参数;及根据所述更新固件包更新所述系统。
本实施方式中,在检查到更新固件包时,对更新固件包进行数据完整性检验,校验合格后才将更新固件包从第一备份区或第二备份区拷贝至程序运行区,避免了拷贝至程序运行区的更新固件包不完整或者数据错误而导致在进行更新时出现故障瘫痪的情况;同时,更新固件包拷贝至程序运行区后进行数据完整性校验,校验合格修改固件存储区内的固件参数,使得在程序运行区进行系统更新时不易发生故障,提升了电子设备在进行系统更新时的鲁棒性。
在某些实施方式中,所述接收模块还用于:将所述系统升级需要的固件包拆分为多个升级子固件包;依次接收多个所述升级子固件包;对每个所述升级子固件包进行校验;及重新接收校验失败的所述升级子固件包。
本实施方式中,将系统升级需要的固件包拆分为多个升级子固件包,然后依次接收多个升级子固件包,且对每个升级子固件包进行校验,对于校验失败的升级子固件包进行重新接收,由此,在接收系统升级需要的固件包时如果出现故障只需要重新接收出错的升级子固件包,无需重新接收整个系统升级需要的固件包,一方面,提升了接收系统升级需要的固件包时的鲁棒性;另一方面,减少了对网络资源的占用,使得在传输固件包时其他通讯任务仍然可以正常进行。
在某些实施方式中,第二写入模块还用于选择所述第一备份区或所述第二备份区存储所述系统升级需要的固件包,其中,选择的备份区内未存储所述系统的历史版本的固件包;将选择的备份区擦除;对所述更新固件包进行校验;及若校验合格,将所述更新固件包写入选择的备份区。
本实施方式中,选择未存储历史版本的固件包的备份区作为存储更新固件包的备份区,然后将选择的备份区擦除及对更新固件包进行校验,校验合格才将更新固件包写入选择的备份区,由此,一方面,电子设备内始终存储有历史版本的固件包,随时可以对系统进行回滚;另一方面,更新固件包校验合格才将更新固件包写入选择的备份区,提升了更新固件包的准确性,使得后续进行升级时不易发生故障。
在某些实施方式中,系统更新装置还用于:在所述程序运行区正常运行时,执行所述接收所述系统升级需要的固件包,以作为所述更新固件包的步骤;在所述程序运行区空闲时,执行所述在接收到更新命令后,进入所述系统启动区读取所述固件信息存储区中存储的固件参数的步骤。
本实施方式中,程序运行区正常运行时,接收系统升级需要的固件包,减少了在更新过程中因接收固件包而消耗较长时间,导致电子设备无法正常执行任务,提高了电子设备的工作效率;程序运行区空闲时,进入所述系统启动区读取所述固件信息存储区中存储的固件参数的步骤,避免了在系统正常运行时对系统进行更新导致系统数据丢失等情况,提升了电子设备运行时的鲁棒性。
本申请实施方式的一种电子设备包括一个或多个处理器、存储器;和一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被所述一个或多个处理器执行,所述程序包括用于执行上述任一实施方式所述的系统更新方法的指令
本申请实施方式的电子设备中,第一备份区用于备份系统的历史版本的固件包和系统升级需要的固件包中的一部分,第二备份区用于备份系统的历史版本的固件包和系统升级需要的固件包中的另一部分,当接收到回滚指令时能够从第一备份区或第二备份区中寻找到对应历史版本的固件包,然后以该固件包作为更新固件包对电子设备的系统进行更新,由此,当电子设备升级后的系统出现一些问题或者电子设备升级过程中掉电瘫痪时,电子设备可以回滚至历史版本,使得电子设备可以继续运行,提升了电子设备更新过程中的鲁棒性。
本申请实施方式的一种包含计算机程序的非易失性计算机可读存储介质,当计算机程序被一个或多个处理器执行时,使得所述处理器执行上述任一实施方式中所述的系统更新方法。
本申请实施方式的非易失性计算机可读存储介质中,第一备份区用于备份系统的历史版本的固件包和系统升级需要的固件包中的一部分,第二备份区用于备份系统的历史版本的固件包和系统升级需要的固件包中的另一部分,当接收到回滚指令时能够从第一备份区或第二备份区中寻找到对应历史版本的固件包,然后以该固件包作为更新固件包对电子设备的系统进行更新,由此,当电子设备升级后的系统出现一些问题或者电子设备升级过程中掉电瘫痪时,电子设备可以回滚至历史版本,使得电子设备可以继续运行,提升了电子设备更新过程中的鲁棒性。
本申请的实施方式的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实施方式的实践了解到。
附图说明
本申请的上述和/或附加的方面和优点从结合下面附图对实施方式的描述中将变得明显和容易理解,其中:
图1是本申请实施方式的系统更新方法的流程示意图;
图2是本申请实施方式的电子设备的模块示意图;
图3是本申请实施方式的电子设备的模块示意图;
图4是本申请实施方式的系统更新装置的模块示意图;
图5是本申请实施方式的系统更新方法的流程示意图;
图6是本申请实施方式的系统更新方法的流程示意图;
图7是本申请实施方式的系统更新方法的流程示意图;
图8是本申请实施方式的系统更新方法的流程示意图;
图9是本申请实施方式的系统更新方法的流程示意图;和
图10是本申请实施方式的计算机可读存储介质和处理器的连接关系示意图。
具体实施方式
以下结合附图对本申请的实施方式作进一步说明。附图中相同或类似的标号自始至终表示相同或类似的元件或具有相同或类似功能的元件。另外,下面结合附图描述的本申请的实施方式是示例性的,仅用于解释本申请的实施方式,而不能理解为对本申请的限制。
请参阅图1至图4,本申请实施方式的电子设备100包括系统启动区41(bootloader)、固件信息存储区42(parameter)、程序运行区43和备份区44(backup),备份区44包括第一备份区441和第二备份区442,第一备份区441用于备份系统的历史版本的固件包和系统升级需要的固件包中的一部分,第二备份区442用于备份系统的历史版本的固件包和系统升级需要的固件包中的另一部分。系统启动区41、固件信息存储区42、程序运行区43和备份区之间通过有线或无线方式通信连接。
本申请实施方式的系统更新方法用于电子设备100,系统更新方法包括以下步骤:
011:根据接收到的回滚指令寻找第一备份区441或第二备份区442中回滚指令所对应的固件包,作为更新固件包;
012:修改固件信息存储区42内的固件参数;
013:在接收到更新命令后,进入系统启动区41,读取固件信息存储区42中存储的固件参数;和
014:根据读取到的固件参数,将更新固件包写入程序运行区43以替换电子设备100内当前的固件包,以完成系统更新。
本申请实施方式的电子设备100的系统更新装置200,包括寻找模块201、第一修改模块202、第一读取模块203和第一写入模块204,寻找模块201、第一修改模块202、第一读取模块203和第一写入模块204可以分别用于实现步骤011、步骤012、步骤013和步骤014。也即是说,寻找模块201可以用于根据接收到的回滚指令寻找第一备份区441或第二备份区442中回滚指令所对应的固件包,作为更新固件包;第一修改模块202可以用于修改固件信息存储区42内的固件参数;第一读取模块203可以用于在接收到更新命令后,进入系统启动区41,读取固件信息存储区42中存储的固件参数;第一写入模块204用于根据读取到的固件参数,将更新固件包写入程序运行区43以替换电子设备100内当前的固件包,以完成系统更新。
电子设备100还包括一个或多个处理器10、存储器20和一个或多个程序,其中一个或多个程序被存储在存储器20中,并且被一个或多个处理器10执行,程序包括用于执行本申请实施方式所述的系统更新方法的指令。处理器10执行程序时,处理器10可以用于实现步骤011、步骤012、步骤013和步骤014。即,处理器10可以用于:根据接收到的回滚指令寻找第一备份区441或第二备份区442中回滚指令所对应的固件包,作为更新固件包;修改固件信息存储区42内的固件参数;在接收到更新命令后,进入系统启动区41,读取固件信息存储区42中存储的固件参数;和根据读取到的固件参数,将更新固件包写入程序运行区43以替换电子设备100内当前的固件包,以完成系统更新。
本申请实施方式的电子设备100的系统更新方法、系统更新装置200及电子设备100中,第一备份区441用于备份系统的历史版本的固件包和系统升级需要的固件包中的一部分,第二备份区442用于备份系统的历史版本的固件包和系统升级需要的固件包中的另一部分,当接收到回滚指令时能够从第一备份区441或第二备份区442中寻找到对应历史版本的固件包,然后以该固件包作为更新固件包对电子设备100的系统进行更新,由此,当电子设备100升级后的系统出现一些问题或者电子设备100升级过程中掉电瘫痪时,可以通过接收回滚指令将电子设备100回滚至历史版本,使得电子设备100可以继续运行,提升了电子设备100升级过程中的鲁棒性。
其中,电子设备100具体可以是机器人、柜台机、闸机、手机、电视、智能电器等任何具有嵌入式系统的设备。机器人具体可以是工业机器人、农业机器人、家庭机器人、服务机器人、清洁机器人等,在此不做限制。
请参阅图3,电子设备100包括系统启动区41、固件信息存储区42、程序运行区43和备份区44。其中,备份区44包括第一备份区441和第二备份区442,第一备份区441可以用于备份系统升级需要的固件包和系统的历史版本的固件包中的一部分,第二备份区442可以用于备份系统升级需要的固件包和系统的历史版本的固件包中的另一部分。例如,第一备份区441可以用于备份系统升级需要的固件包;第二备份区442可以用于备份系统的历史版本的固件包;或者,第一备份区441还可以用于备份系统升级需要的固件包和一部分系统的历史版本的固件包,第二备份区442用于备份另一部分系统的历史版本的固件包中;再或者,第一备份区441可以用于备份系统的历史版本的固件包;第二备份区442可以用于备份系统升级需要的固件包;第一备份区441及第二备份区442内备份的具体内容在此不做限制。系统的历史版本的固件包具体可以包括系统当前版本的固件包、当前版本之前的一个或多个版本的固件包。可以根据备份区的具体大小选择性存储哪些版本的固件包,在备份区的空间达到阈值时,备份区可以选择性删除一些版本号较老的固件包。
当然,备份区44包括但不局限于第一备份区441及第二备份区442,备份区44还可以包括第三备份区、第四备份区、第五备份区等更多备份区,在此不做限制。
固件信息存储区42用于存储升级信息及备份区44内的固件信息,备份区44内的固件信息可以包括但不限于备份区44内存储的固件包对应的版本号、各个固件包在哪个备份区等。升级信息可以包括但不限于更新状态、需要更新的版本号等信息。系统启动区41可以用于配置外界设备、根据固件信息存储区42内的固件参数进行判断是否需要进行升级或者回滚、以及在系统升级或者系统回滚时将备份区的固件包拷贝至程序运行区43。程序运行区43可以用于进行正常的任务处理,例如接收系统升级需要的固件包、接收上位机或者云平台下发的控制指令等。
具体地,电子设备100可以通过TCPIP协议同上位机进行通讯以和上位机进行数据交互。在步骤011中,根据接收到的回滚指令寻找第一备份区441或第二备份区442中回滚指令所对应的固件包,作为更新固件包。可以理解,需要进行回滚时,上位机或者云平台向电子设备100发送回滚指令,电子设备100接收到回滚指令时,根据回滚指令在第一备份区441或第二备份区442内寻找与回滚指令相对应的固件包,作为更新固件包,后续更新过程中将以该固件包作为更新的依据。其中,回滚指令可包括需要回滚的版本号、回滚命令等数据,以使电子设备100可以根据该回滚指令寻找到对应的固件包。
在步骤012中,修改所述固件信息存储区42内的固件参数。在步骤011中,找到与回滚指令相对应的固件包时,根据固件包内包括的数据修改固件信息存储区42内的固件参数,例如,将固件信息存储区42内的固件参数修改为需要进行更新、待更新的版本号、固件包存放的备份区编号、待升级。由此,根据固件信息存储区42内的固件参数可以了解电子设备100的系统具体状态。
在步骤013中,在接收到更新命令后,进入系统启动区41,读取固件信息存储区42中存储的固件参数。可以理解,上位机或云平台将更新命令发送至电子设备100,电子设备100接收到更新命令后,进入系统启动区41;若没接收到更新命令,则不会进入到系统启动区41。进一步地,电子设备100接收到更新命令后,判断电子设备100当前是否处于空闲状态,若电子设备100处于空闲状态,则立即进入系统启动区41;若电子设备100处于非空闲状态(即工作状态),则电子设备100完成当前工作任务后,进入系统启动区41。其中,进入系统启动区41需要电子设备100关机重启。由此,可以避免电子设备100正常执行工作任务而进入系统启动区41导致电子设备100工作任务异常甚至导致系统数据丢失的情况,提高了电子设备100在进行系统更新时的稳定性。
在步骤014中,根据读取到的固件参数,将更新固件包写入程序运行区43以替换电子设备100内当前的固件包,以完成系统更新。根据读取到的固件参数可以获取到更新固件包的位置、系统的更新状态、系统要更新的版本号等数据,然后将更新固件包写入程序运行区43替换电子设备100当前的固件包,替换完成后程序运行区43运行该更新固件包即完成系统更新。
请参阅图4和图5,在某些实施方式中,系统更新方法还包括以下步骤:
015:接收系统升级需要的固件包,以作为更新固件包;
016:将更新固件包写入第一备份区441或第二备份区442;
017:修改固件信息存储区42内的固件参数;
018:在接收到更新命令后,进入系统启动区41,读取固件信息存储区42中存储的固件参数;和
019:根据读取到的固件参数,将更新固件包写入程序运行区43以替换电子设备100内当前的固件包,以完成系统更新。
在某些实施方式中,系统更新装置200还包括接收模块205、第二写入模块206、第二修改模块207、第二读取模块208和第三写入模块204。接收模块205、第二写入模块206、第二修改模块207、第二读取模块208和第三写入模块204可以分别用于实现步骤015、步骤016、步骤017、步骤018和步骤019。也即是说,接收模块205可以用于接收系统升级需要的固件包,以作为更新固件包;第二写入模块206可以用于将更新固件包写入第一备份区441或第二备份区442;第二修改模块207可以用于修改固件信息存储区42内的固件参数;第二读取模块208可以用于在接收到更新命令后,进入系统启动区41,读取固件信息存储区42中存储的固件参数;第三写入模块204可以用于根据读取到的固件参数,将更新固件包写入程序运行区43以替换电子设备100内当前的固件包,以完成系统更新。
在某些实施方式中,处理器10还可以用于:接收系统升级需要的固件包,以作为更新固件包;将更新固件包写入第一备份区441或第二备份区442;修改固件信息存储区42内的固件参数;在接收到更新命令后,进入系统启动区41,读取固件信息存储区42中存储的固件参数;和根据读取到的固件参数,将更新固件包写入程序运行区43以替换电子设备100内当前的固件包,以完成系统更新。也即是说,处理器10还可以用于实现步骤015、步骤016、步骤017、步骤018和步骤019。
具体地,上位机或云平台向电子设备100推送系统升级需要的固件包,然后电子设备100接收该固件包作为更新固件包,接收完毕后将该固件包写入第一备份区441及第二备份区442。其中,可以是在电子设备100工作时接收系统升级需要的固件包,也可以是在电子设备100空闲时接收系统升级需要的固件包。
然后,根据该固件包的数据内容修改固件信息存储区42内的固件参数,例如根据该固件包的版本号、所在的位置将固件信息存储区42内的相对应的固件参数进行修改,在接收到更新命令后,进入系统启动区41读取固件信息存储区42内的固件参数。可以理解,在没接收到更新命令时,不会进入系统启动区41读取固件信息存储区42内的固件参数,可以避免在接收完升级需要的固件包后就立即对进入系统启动区41而对电子设备100当前正在执行的工作任务造成影响,同时还避免了在接收完升级需要的固件包后就立即对进入系统启动区41导致电子设备100的系统数据丢失的情况,提升了电子设备100系统升级时的稳定性。
进一步地,接收到更新命令后,判断电子设备100当前是否处于空闲状态,若处于空闲状态则进入系统启动区41;若电子设备100未处于空闲状态,则先不进入系统启动区41,在电子设备100完成当前工作后,进入系统启动区41;由此,可以避免电子设备100在工作时进入系统启动区41而导致电子设备100工作异常甚至系统数据丢失,提升了电子设备100在升级过程中的安全性及数据完整性。
进入系统启动区41后,读取固件信息存储区42内存储区的固件参数,以便于可以找到升级所需要的固件包,然后根据读取到的固件参数,将升级需要的固件包写入程序运行区43以替换系统当前的固件包,然后跳转至程序运行区43运行,以对电子设备100完成系统更新。
在某些实施方式中,固件信息存储区42内的固件参数包括备份区参数、更新控制参数和程序运行区43参数。备份区参数包括标记符号、固件包的版本号、固件包的校验数据、固件包的长度、备份区的状态。标记符号可以是0和1,例如当备份区为0表示更新所需要的固件包不在该备份区内,当备份区为1表示更新需要的固件包在该备份区内。固件包的版本号可以是当前备份区内的固件包的版本。固件包的校验数据可以用于对后续过程中对移动后的固件包进行校验的基础。固件包的长度可以识别到固件包的大小。备份区的状态指的是固件包是否写入该备份区。
进一步地,更新控制参数可包括标志灯、待更新的版本号、更新固件包位置、更新状态。标志灯用于表示标记是否要进行更新,当标志灯亮时表示需要进行更新;当标志灯不亮时,表示不需要进行更新。待更新的版本号用于表示需要将系统更新至的版本号,例如系统当前的版本为V1,需要将系统更新至V2,则待更新的版本号为V2。更新固件包位置用于表示更新固件包在第一备份区441还是第二备份区442。更新状态用于表示是否更新完成,例如更新状态为已更新,则表示当前系统已完成更新;更新状态为更新中,则表示当前系统正在进行更新;更新状态为待更新,则表示还未更新,需要进行更新。
程序运行区43参数可包括系统的版本号和历史版本的固件包的位置。系统的版本号用于表示当前系统的版本号。历史版本的固件包的位置用于表示历史版本的固件包位于第一备份区441还是第二备份区442,以便于进行系统回滚时能够快速寻找到对应的固件包。
需要说明的是,固件信息存储区42内的固件参数包括但不局限于本实施方式中的参数内容,还可以包括其他参数,在此不做限制。
请参阅图6,在某些实施方式中,固件参数包括第一参数、第二参数及第三参数,步骤012和步骤017包括以下步骤:
0121:对更新固件包所在的备份区进行标记以更新第一参数;
0122:置位更新标志以更新第二参数;和
0123:标记更新状态以更新第三参数。
在某些实施方式中,第一修改模块202和第二修改模块207可以用于:对更新固件包所在的备份区进行标记以更新第一参数;置位更新标志以更新第二参数;标记更新状态以更新第三参数。也即是说,第一修改模块202和第二修改模块207可以用于实现步骤0121、步骤0122和步骤0123。
在某些实施方式中,处理器10可以用于对更新固件包所在的备份区进行标记以更新第一参数;置位更新标志以更新第二参数;标记更新状态以更新第三参数。也即是说,第处理器10可以用于实现步骤0121、步骤0122和步骤0123。
具体地,在第一备份区441或第二备份区442内找到回滚指令所对应的固件包后,对回滚指令所对应的固件包所在的备份区进行标记,以对第一参数中更新固件包所在的备份区进行更新,便于在后续更新过程中可以找到更新固件包。然后置位更新标志以对第二参数进行更新,可以更加准确的识别到是否需要进行更新,例如:第二参数修改为需要进行更新(可以是将更新标志由0改为1,表明需要进行更新)。标记更新状态以对第三参数进行更新,使得可以知道电子设备100的更新状态,以便于判断是否执行后续更新步骤,例如,将第三参数修改为待更新。
将系统升级需要的固件包写入第一备份区441或第二备份区442后,对该固件包所在的备份区进行标记,以对第一参数进行更新,使得在后续更新过程中可以准确找到该固件包;第二参数包括更新标志,置位更新标志以使在后续过程中可以识别到是否需要进行更新,例如:第二参数修改为需要进行更新(可以是将更新标志由0改为1,表明需要进行更新)。标记更新状态以对第三参数进行更新,使得可以知道电子设备100的更新状态,以便于判断是否执行后续更新步骤,例如,将第三参数修改为待更新。
当然,还会对固件信息存储区42内的其他参数进行修改,具体对哪些参数进行修改在此不做限制。
请参阅图7,在某些实施方式中,步骤014和步骤019均包括以下步骤:
0141:检查第一备份区441或第二备份区442内是否存储有更新固件包;
0142:检查到更新固件包时,对更新固件包进行数据完整性校验;
0143:校验合格后,将更新固件包从第一备份区441或第二备份区442拷贝至程序运行区43;
0144:对拷贝至程序运行区43的更新固件包进行数据完整性校验;
0145:校验合格后,修改固件信息存储区42内的固件参数;和
0146:根据更新固件包更新系统。
在某些实施方式中,第一写入模块204和第三写入模块204均还可以用于:检查第一备份区441或第二备份区442内是否存储有更新固件包;检查到更新固件包时,对更新固件包进行数据完整性校验;校验合格后,将更新固件包从第一备份区441或第二备份区442拷贝至程序运行区43;对拷贝至程序运行区43的更新固件包进行数据完整性校验;校验合格后,修改固件信息存储区42内的固件参数;和根据更新固件包更新系统。也即是说,第一写入模块204和第三写入模块204还可以实现步骤0141、步骤0142、步骤0143、步骤0144、步骤0145和步骤0146。
在某些实施方式中,处理器10还可以用于:检查第一备份区441或第二备份区442内是否存储有更新固件包;检查到更新固件包时,对更新固件包进行数据完整性校验;校验合格后,将更新固件包从第一备份区441或第二备份区442拷贝至程序运行区43;对拷贝至程序运行区43的更新固件包进行数据完整性校验;校验合格后,修改固件信息存储区42内的固件参数;和根据更新固件包更新系统。也即是说,处理器10还可以实现步骤0141、步骤0142、步骤0143、步骤0144、步骤0145和步骤0146。
具体地,若需要进行系统回滚时,则根据读取到的固件参数,检查固件参数中指定的备份区内是否存储有与回滚指令相对应的固件包,若需要进行系统升级时,则根据读取到的固件参数,检查固件参数中指定的备份区内是否存储有系统升级需要的固件包。当检查到更新固件包(即,与回滚指令相对应的固件包或系统升级需要的固件包)后,对更新固件包进行数据完整性校验。例如,对更新固件包的长度进行校验、及/或更新固件包进行循环冗余校验码(Cyclic Redundancy Check,CRC)校验、及\或更新固件包的版本号进行校验,若校验不合格时,则将固件信息存储区42内的固件参数修改为不需要进行更新,使得电子设备100下一次开机时不再进行重复的检查步骤。
其中,对更新固件包进行CRC校验具体可以是通过计算该更新固件包的CRC,并将计算的CRC同该更新固件包所在的备份区中的codeHwCRC进行比较,若相同则表示CRC校验合格;若不相同,则表示校验不合格。
进一步地,若校验合格,则将更新固件包从第一备份区441或第二备份区442拷贝至程序运行区43,以能够替换掉程序运行区43内的系统当前的固件包。当更新固件包拷贝至程序运行区43后,对程序运行区43内的更新固件包进行数据完整性校验,以避免在拷贝过程中更新固件包的数据丢失而导致系统更新瘫痪的情况,提高了系统更新的鲁棒性。
如果拷贝至程序运行区43内的更新固件包数据完整性校验合格,则修改固件信息存储区42内的固件参数,例如将固件参数修改为已更新、不需要更新、更新固件包写入成功、更新后的版本号等参数进行修改,使得不会一直进入系统启动区41进行系统更新。然后根据更新固件包对系统进行更新。如果拷贝至程序运行区43内的更新固件包数据完整性校验不合格,重新将更新固件包从第一备份区441或第二备份去拷贝至程序运行区43,并继续对拷贝至程序运行区43的更新固件包进行数据完整性校验,直至程序运行区43的更新固件包数据完整性校验合格。
请参阅图8,在某些实施方式中,步骤015包括以下步骤:
0151:将系统升级需要的固件包拆分为多个升级子固件包;
0152:依次接收多个升级子固件包;
0153:对每个升级子固件包进行校验;和
0154:重新接收校验失败的升级子固件包。
在某些实施方式中,接收模块205还可以用于:将系统升级需要的固件包拆分为多个升级子固件包;依次接收多个升级子固件包;对每个升级子固件包进行校验;和重新接收校验失败的升级子固件包。也即是说,接收模块205还可以用于实现步骤0151、步骤0152、步骤0153和步骤0154。
在某些实施方式中,处理器10还用于:将系统升级需要的固件包拆分为多个升级子固件包;依次接收多个升级子固件包;对每个升级子固件包进行校验;和重新接收校验失败的升级子固件包。也即是说,处理器10还可以用于实现步骤0151、步骤0152、步骤0153和步骤0154。
具体地,由于系统升级需要的固件包较大,无法一次传输完成;或者一次传输需要消耗较长的时间。在接收系统升级需要的固件包时,将接收系统升级需要的固件包拆分为多个升级子固件包,以使可以分开多次接收,在网络繁忙时先接收一部分,待网络比较空闲时,继续接收另外一部分,减少了对网络资源的占用。
其中,可以是按照预定长度对系统升级需要的固件包进行拆分,例如将系统升级需要的固件包拆分为多个长度相等的升级子固件包。还可以是根据系统的各个模块对固件包进行拆分,例如将A模块的相关数据放在一个升级子固件包a,将B模块的相关数据放在一个升级子固件包b。
接收到多个升级子固件包后,对每个升级子固件包进行校验。具体地,在一个例子中,每接收到一个升级子固件包,即对该升级子固件包进行校验,若该升级子固件包校验合格则继续接收下一个升级子固件包;若该升级子固件包校验不合格,则重新接收该升级子固件包并删除原先的升级子固件包。在另一个例子中,将所有的升级子固件包接收完毕后,逐个对升级子固件包进行校验,若存在校验失败的升级子固件包,则重新接收校验失败的升级子固件包,并删除这些校验失败的升级子固件包。由此,在升级子固件包出错时,只需要重新接收出错的升级子固件包,而无需重新接收整个固件包,提升了接收系统升级需要的固件包的鲁棒性。
其中,对升级子固件包进行校验可以是对升级子固件包的长度、升级子固件包的序号、升级子固件包内容的CRC校验。
在某些实施方式中,升级子固件包可以至少由编号、字节数、固件内容、固件内容的crc校验四部分组成。通过检测升级子固件包的编号可以判断是否发生丢包现象,如果发生丢包现象,则对于丢失的升级子固件包重新接收。在一个例子中,除最后一个升级子固件包外的升级子固件包的长度均为预定字节数,最后一个升级子固件包的长度小于预定字节数,使得可以根据接收到的升级子固件包的长度判断是否接收完成。同时,将系统升级需要的固件包拆分为长度为多个预定字节数的升级子固件包,可以减少对网络资源的占用,使得在接收固件包时不会影响同上位机的正常通讯和电子设备100其他功能的正常使用。
在某些实施方式中,通过读取上位机或云平台传输的数据包编号获取对应的指令。例如,在一个例子中,数据包的编号大于等于0时,表示为接收到的数据包为系统升级需要的固件包拆分后的对应序号的升级子固件包;数据包的编号为-1时,表明系统升级需要的固件包已经下发完成,并且新版本的版本号已下发完成;数据包的编号为-2时,表明系统升级失败;数据包的编号为-3时,表示需要回滚至历史版本,且要回滚的版本号位于该数据包内;通过复用数据包的实现传输指令,节省了数据传输资源。需要说明的是,数据包的编号还可以是其他,不局限于上述所述的编号。
请参阅图9,在某些实施方式中,步骤016包括以下步骤:
0161:选择第一备份区441或第二备份区442存储系统升级需要的固件包,其中,选择的备份区内未存储系统的历史版本的固件包;
0162:将选择的备份区擦除;
0163:对更新固件包进行校验;和
0164:若校验合格,将更新固件包写入选择的备份区。
在某些实施方式中,第二写入模块206还可以用于:选择第一备份区441或第二备份区442存储系统升级需要的固件包,其中,选择的备份区内未存储系统的历史版本的固件包将选择的备份区擦除;对更新固件包进行校验;和若校验合格,将更新固件包写入选择的备份区。也即是说,第二写入模块206还可以用于实现步骤0161、步骤0162、步骤0163和步骤0164。
在某些实施方式中,处理器10还可以用于:选择第一备份区441或第二备份区442存储系统升级需要的固件包,其中,选择的备份区内未存储系统的历史版本的固件包将选择的备份区擦除;对更新固件包进行校验;和若校验合格,将更新固件包写入选择的备份区。也即是说,处理器10还可以用于实现步骤0161、步骤0162、步骤0163和步骤0164。
具体地,接收到上位机或云平台准备推送系统升级需要的固件包时,选择第一备份区441或第二备份区442作为系统升级需要的固件包的存放区域,然后将选择的备份区擦除,以便于有足够的存储空间存储该固件包。其中,选择存放系统升级需要的固件包的备份区内未存储有系统的历史版本的固件包,使得备份区内始终有历史版本的固件包,以可以随时对系统进行回滚,避免了将系统的历史版本的固件包擦除而使电子设备100无法实现系统回滚功能。例如,当第一备份区441内存储有系统的历史版本的固件包,则选择第二备份区442作为存储系统升级需要的固件包的区域;或者第二备份区442内存储有系统的历史版本的固件包,则选择第一备份区441作为存储系统升级需要的固件包的区域。如此,使得备份区内始终存储有系统升级需要的固件包和系统的历史版本的固件包,以便于随时对系统进行升级或者回滚。
进一步地,系统升级需要的固件包接收完毕后,对该固件包进行校验。具体地,可以对该固件包的序号、长度及CRC校验进行校验,并将校验的结果反馈至上位机。若检验合格,则将该固件包写入选择的备份区(即第一备份区441或第二备份区442);若校验失败(即,固件包的序号、长度及CRC校验中的一个或多个校验错误时),重新开始整个系统升级过程,即,重新开始接收固件包。
将系统升级需要的固件包全部写入选择的备份区内后,判断是否写入成功,若写入成功则将该固件包的版本信息及所在的备份区等数据反馈至固件信息存储区42,以对固件信息存储区42内的固件参数进行修改。
需要说明的是,对接收到的系统升级需要的固件包进行校验不局限于上述所述的序号、长度及CRC校验,还可以是对固件包内的其他数据进行校验,在此不做限制。
在某些实施方式中,在程序运行区43正常运行时,执行步骤015;在程序运行区43空闲时,执行步骤018。
具体地,在电子设备100正常执行工作任务时,接收系统升级需要的固件包作为更新固件包,以及将接收到的固件包写入第一备份区441或第二备份区442,然后修改固件信息存储区42内的固件参数。也即是说,在电子设备100工作时,执行步骤015和步骤016。由于接收系统升级需要的固件包的需要较长的时间,如果在准备升级时才进行接收,将会消耗较长的时间,这段时间电子设备100无法工作,在电子设备100工作时接收系统升级需要的固件包,以及将固件信息存储区42内的固件参数进行修改,减少了系统因升级而不可正常运行的时间。
进一步地,当电子设备100空闲时,根据接收到的更新命令,进入系统启动区41读取固件信息存储区42中存储的固件参数和根据读取到的固件参数,将更新固件包写入程序运行区43完成系统更新。也即是说,在电子设备100空闲时执行步骤017、步骤018和步骤019。可以理解,电子设备100在工作时接收到了更新命令,不会进入系统启动区41,在电子设备100处于空闲时,才会进入系统启动区41。由于在电子设备100工作时,系统更新需要的固件包已经接收完毕且固件信息存储区42内的固件参数已经修改完毕,当识别到系统处于空闲状态时,则进入系统启动区41进行系统升级,进一步地减少了因系统升级而导致电子设备100无法正常工作的时间。
另外,固件包的接收是在电子设备100工作时执行,固件包写入程序运行区43是在电子设备100空闲时执行。可以理解,接收固件包和写入固件包是分开进行的,进一步地提升了系统升级时的鲁棒性。
请再次参阅图1及图2,存储器20用于存放可在处理器10上运行的计算机程序,处理器10执行程序时实现上述任一实施方式中的电子设备100的系统更新方法。
存储器20可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。进一步地,智能机器人100还可包括通信接口30,通信接口30用于存储器20和处理器10之间的通信。
如果存储器20、处理器10和通信接口30独立实现,则通信接口30、存储器20和处理器10可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(PeripheralComponent,简称为PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图2中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器20、处理器10及通信接口30,集成在一块芯片上实现,则存储器20、处理器10及通信接口30可以通过内部接口完成相互间的通信。
处理器10可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
请参阅图10,本申请实施方式的非易失性计算机可读存储介质300包括计算机程序301,当计算机程序301被一个或多个处理器400执行时,使得处理器400执行本申请任一实施方式的电子设备100的系统更新方法。
例如,请结合图1,计算可执行指令301被处理器400执行时,处理器400用于实施步骤:
011:根据接收到的回滚指令寻找第一备份区441或第二备份区442中回滚指令所对应的固件包,作为更新固件包;
012:修改固件信息存储区42内的固件参数;
013:在接收到更新命令后,进入系统启动区41,读取固件信息存储区42中存储的固件参数;和
014:根据读取到的固件参数,将更新固件包写入程序运行区43以替换电子设备100内当前的固件包,以完成系统更新。
再例如,请结合图5,计算机程序301被处理器400执行时,处理器400用于实施步骤:
015:接收系统升级需要的固件包,以作为更新固件包;
016:将更新固件包写入第一备份区441或第二备份区442;
017:修改固件信息存储区42内的固件参数;
018:在接收到更新命令后,进入系统启动区41,读取固件信息存储区42中存储的固件参数;和
019:根据读取到的固件参数,将更新固件包写入程序运行区43以替换电子设备100内当前的固件包,以完成系统更新。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“某些实施方式”、“一个实施方式”、“一些实施方式”、“示意性实施方式”、“示例”、“具体示例”、或“一些示例”的描述意指结合所述实施方式或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个所述特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型,本申请的范围由权利要求及其等同物限定。
Claims (8)
1.一种电子设备的系统更新方法,其特征在于,所述电子设备包括系统启动区、固件信息存储区、程序运行区和备份区,所述备份区包括第一备份区和第二备份区,所述第一备份区用于备份所述系统的历史版本的固件包和所述系统升级需要的固件包中的一部分,所述第二备份区用于备份所述系统的历史版本的固件包和所述系统升级需要的固件包中的另一部分,所述系统更新方法包括:
根据接收到的回滚指令寻找所述第一备份区或所述第二备份区中所述回滚指令所对应的固件包,作为更新固件包;
修改所述固件信息存储区内的固件参数;
在接收到更新命令后,进入所述系统启动区,读取所述固件信息存储区中存储的固件参数;及
根据读取到的固件参数,将所述更新固件包写入所述程序运行区以替换所述电子设备内当前的固件包,以完成系统更新;
所述系统更新方法还包括:
接收所述系统升级需要的固件包,以作为所述更新固件包;
将所述更新固件包写入所述第一备份区或所述第二备份区;
修改所述固件信息存储区内的固件参数;
在接收到更新命令后,进入所述系统启动区,读取所述固件信息存储区中存储的固件参数;及
根据读取到的固件参数,将所述更新固件包写入所述程序运行区以替换所述电子设备内当前的固件包,以完成系统更新;
所述将所述更新固件包写入所述第一备份区或所述第二备份区,包括:
选择所述第一备份区或所述第二备份区存储所述系统升级需要的固件包,其中,选择的备份区内未存储所述系统的历史版本的固件包;
将选择的备份区擦除;
对所述更新固件包进行校验;及
若校验合格,将所述更新固件包写入选择的备份区。
2.根据权利要求1所述的系统更新方法,其特征在于,所述固件参数包括第一参数、第二参数及第三参数,所述修改所述固件信息存储区内的固件参数,包括:
对所述更新固件包所在的备份区进行标记以更新所述第一参数;
置位更新标志以更新所述第二参数;及
标记更新状态以更新所述第三参数。
3.根据权利要求1所述的系统更新方法,其特征在于,所述根据读取到的固件参数,将所述更新固件包写入所述程序运行区以替换所述电子设备内当前的固件包,完成系统更新,包括:
检查所述第一备份区或所述第二备份区内是否存储有所述更新固件包;
检查到所述更新固件包时,对所述更新固件包进行数据完整性校验;
校验合格后,将所述更新固件包从所述第一备份区或所述第二备份区拷贝至所述程序运行区;
对拷贝至所述程序运行区的所述更新固件包进行数据完整性校验;
校验合格后,修改所述固件信息存储区内的固件参数;及
根据所述更新固件包更新所述系统。
4.根据权利要求1所述的系统更新方法,其特征在于,所述接收所述系统升级需要的固件包,以作为更新固件包,包括:
将所述系统升级需要的固件包拆分为多个升级子固件包;
依次接收多个所述升级子固件包;
对每个所述升级子固件包进行校验;及
重新接收校验失败的所述升级子固件包。
5.根据权利要求1所述的系统更新方法,其特征在于,还包括:
在所述程序运行区正常运行时,执行所述接收所述系统升级需要的固件包,以作为所述更新固件包的步骤;
在所述程序运行区空闲时,执行所述在接收到更新命令后,进入所述系统启动区读取所述固件信息存储区中存储的固件参数的步骤。
6.一种电子设备的系统更新装置,所述更新装置用于实现如权利要求1所述的一种电子设备的系统更新方法,其特征在于,所述电子设备包括系统启动区、固件信息存储区、程序运行区和备份区,所述备份区包括第一备份区和第二备份区,所述第一备份区用于备份所述系统的历史版本的固件包和所述系统升级需要的固件包中的一部分,所述第二备份区用于备份所述系统的历史版本的固件包和所述系统升级需要的固件包中的另一部分,所述系统更新装置包括:
寻找模块,所述寻找模块用于根据接收到的回滚指令寻找所述第一备份区或所述第二备份区中所述回滚指令所对应的固件包,作为更新固件包;
第一修改模块,所述第一修改模块用于修改所述固件信息存储区内的固件参数;
第一读取模块,所述第一读取模块用于在接收到更新命令后,进入所述系统启动区,读取所述固件信息存储区中存储的固件参数;及
第一写入模块,所述第一写入模块用于根据读取到的固件参数,将所述更新固件包写入所述程序运行区以替换所述电子设备内当前的固件包,完成系统更新。
7.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器、存储器;和
一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被所述一个或多个处理器执行,所述程序包括用于执行权利要求1-5中任意一项所述的系统更新方法的指令。
8.一种包含计算机程序的非易失性计算机可读存储介质,当计算机程序被一个或多个处理器执行时,使得所述处理器执行权利要求1-5中任意一项所述的系统更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010794995.9A CN112015447B (zh) | 2020-08-10 | 2020-08-10 | 电子设备的系统更新方法及装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010794995.9A CN112015447B (zh) | 2020-08-10 | 2020-08-10 | 电子设备的系统更新方法及装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112015447A CN112015447A (zh) | 2020-12-01 |
CN112015447B true CN112015447B (zh) | 2024-03-22 |
Family
ID=73498679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010794995.9A Active CN112015447B (zh) | 2020-08-10 | 2020-08-10 | 电子设备的系统更新方法及装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112015447B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559349B (zh) * | 2020-12-16 | 2024-04-09 | 合安科技技术有限公司 | 一种程序的运行方法及运行装置 |
CN113157303A (zh) * | 2021-05-27 | 2021-07-23 | 盈合(深圳)机器人与自动化科技有限公司 | 升级方法、嵌入式系统、终端及计算机存储介质 |
CN113867823A (zh) * | 2021-10-12 | 2021-12-31 | 湖北亿咖通科技有限公司 | 车载终端配置参数的设置方法、装置及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102339227A (zh) * | 2010-07-28 | 2012-02-01 | 环旭电子股份有限公司 | 多固件嵌入式系统及其固件更新方法 |
CN105930236A (zh) * | 2016-07-15 | 2016-09-07 | 深圳市沃特玛电池有限公司 | 一种基于BMS Bootloader升级的应用程序版本回退方法 |
WO2018120213A1 (zh) * | 2016-12-30 | 2018-07-05 | 深圳配天智能技术研究院有限公司 | 一种固件更新方法及控制器 |
CN109032846A (zh) * | 2018-08-08 | 2018-12-18 | 京信通信系统(中国)有限公司 | 设备远程备份升级方法、装置、计算机存储介质及设备 |
CN110083374A (zh) * | 2019-03-25 | 2019-08-02 | 深圳猛犸电动科技有限公司 | 一种升级回滚方法、系统及终端设备 |
CN111221553A (zh) * | 2019-12-31 | 2020-06-02 | 深圳优地科技有限公司 | 一种固件升级的方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050132351A1 (en) * | 2003-12-12 | 2005-06-16 | Randall Roderick K. | Updating electronic device software employing rollback |
US8918778B2 (en) * | 2013-04-17 | 2014-12-23 | American Megatrends, Inc. | Method of fail safe flashing management device and application of the same |
US11449327B2 (en) * | 2018-11-30 | 2022-09-20 | Paccar Inc | Error-resilient over-the-air software updates for vehicles |
-
2020
- 2020-08-10 CN CN202010794995.9A patent/CN112015447B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102339227A (zh) * | 2010-07-28 | 2012-02-01 | 环旭电子股份有限公司 | 多固件嵌入式系统及其固件更新方法 |
CN105930236A (zh) * | 2016-07-15 | 2016-09-07 | 深圳市沃特玛电池有限公司 | 一种基于BMS Bootloader升级的应用程序版本回退方法 |
WO2018120213A1 (zh) * | 2016-12-30 | 2018-07-05 | 深圳配天智能技术研究院有限公司 | 一种固件更新方法及控制器 |
CN109032846A (zh) * | 2018-08-08 | 2018-12-18 | 京信通信系统(中国)有限公司 | 设备远程备份升级方法、装置、计算机存储介质及设备 |
CN110083374A (zh) * | 2019-03-25 | 2019-08-02 | 深圳猛犸电动科技有限公司 | 一种升级回滚方法、系统及终端设备 |
CN111221553A (zh) * | 2019-12-31 | 2020-06-02 | 深圳优地科技有限公司 | 一种固件升级的方法及装置 |
Non-Patent Citations (1)
Title |
---|
基于增量链接的可回滚星载软件在轨更新方法;汪宏浩;王慧泉;金仲和;;浙江大学学报(工学版);20150415(04);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112015447A (zh) | 2020-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112015447B (zh) | 电子设备的系统更新方法及装置、电子设备及存储介质 | |
US9471435B2 (en) | Information processing device, information processing method, and computer program | |
CN109358887B (zh) | 一种单片机程序的在线升级方法、装置及系统 | |
US20070055969A1 (en) | System and method for updating firmware | |
KR100316981B1 (ko) | 플래시 메모리를 구비한 마이크로컴퓨터 및 플래시 메모리에 프로그램을 저장하는 방법 | |
US20080046780A1 (en) | Nonvolatile memory | |
CN101650662A (zh) | 一种嵌入式系统的存储器件、固件启动及升级方法 | |
KR20170040734A (ko) | 업데이트 제어 방법을 갖는 전자 시스템 및 그것의 동작 방법 | |
CN111562934A (zh) | 一种基于热补丁的软件系统升级方法、终端及存储介质 | |
CN112540725A (zh) | 非易失性数据存储方法、嵌入式系统以及存储介质 | |
CN113157303A (zh) | 升级方法、嵌入式系统、终端及计算机存储介质 | |
CN114265603A (zh) | 基于不对称分区的系统升级方法、装置和电子设备 | |
CN114138295A (zh) | 一种电子设备的应用程序固件升级方法、装置及系统 | |
CN113220319A (zh) | 一种数据更新方法、装置及车辆 | |
CN111352764B (zh) | 一种芯片修复的方法、装置、设备及存储介质 | |
CN114327574A (zh) | 一种差分升级方法、电子设备及存储介质 | |
CN105278993A (zh) | 一种基于Linux系统的驱动模块升级方法及装置 | |
CN112328287A (zh) | 嵌入式设备系统更新方法、装置、设备及存储介质 | |
CN111783162A (zh) | 数据保护实现方法、装置及计算机设备 | |
CN111813597A (zh) | 一种空调器 | |
US9971659B1 (en) | Memory programming providing corruption protection | |
CN111666094B (zh) | 一种实时固件升级系统与方法 | |
CN113064608A (zh) | 一种ota升级方法、装置、设备和介质 | |
CN116185461B (zh) | 固件升级方法及系统 | |
CN118760458A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |