CN113297011B - 一种主从mcu升级失败的自恢复方法及系统 - Google Patents
一种主从mcu升级失败的自恢复方法及系统 Download PDFInfo
- Publication number
- CN113297011B CN113297011B CN202110643780.1A CN202110643780A CN113297011B CN 113297011 B CN113297011 B CN 113297011B CN 202110643780 A CN202110643780 A CN 202110643780A CN 113297011 B CN113297011 B CN 113297011B
- Authority
- CN
- China
- Prior art keywords
- mcu
- self
- upgrade
- recovery
- upgraded
- 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
- 238000011084 recovery Methods 0.000 title claims abstract description 224
- 238000000034 method Methods 0.000 title claims abstract description 50
- 230000007246 mechanism Effects 0.000 claims abstract description 22
- 230000000694 effects Effects 0.000 claims description 14
- 238000012545 processing Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000005192 partition Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
-
- 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)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种主从MCU升级失败的自恢复方法及系统,当主MCU确定升级结果记录文件中记录的各个被升级MCU中存在升级状态标志置位的目标MCU,且所有被升级MCU的升级结果标志存在未置位的时,主MCU对所有已执行升级操作的各个目标MCU执行自恢复操作,并针对自恢复操作成功的目标MCU的升级结果标志置位。本发明通过在被升级MCU执行升级操作时设置升级状态标志,以及在被升级MCU执行升级操作结束和/或被升级MCU升级失败后需要重启执行恢复机制时设置升级结果标志,使得在出现多MCU升级失败的情况时,对所有已执行升级操作MCU均执行自恢复操作,将已成功升级MCU和未成功升级MCU均恢复至升级前状态。
Description
技术领域
本发明涉及升级技术领域,更具体的说,涉及一种主从MCU升级失败的自恢复方法及系统。
背景技术
随着微型计算机技术的发展和应用功能的多元化,单一MCU(MicrocontrollerUnit,微控制单元)已经无法满足性能的要求,目前多数产品选择采用主从MCU控制方法来达到更高性能。
在一主多从的多MCU架构中,主MCU的性能比较强大,具有足够的存储空间,因此由主MCU从外界获取升级包,主MCU在对自身升级后,再依次对各个从MCU进行升级。然而,在各个MCU升级过程中,一旦出现升级失败的情况,将会导致各个MCU之间的版本不匹配,造成不兼容情况的发生。
综上,如何提供一种从MCU升级失败的自恢复方法,使得在出现多MCU升级失败的情况时,将已成功升级的MCU恢复至升级前状态,成为了本领域技术人员亟需解决的技术问题。
发明内容
有鉴于此,本发明公开一种主从MCU升级失败的自恢复方法及系统,以实现通过在被升级MCU执行升级操作时设置升级状态标志,以及在被升级MCU执行升级操作结束和/或被升级MCU升级失败后需要重启执行恢复机制时设置升级结果标志,使得在出现多MCU升级失败的情况时,可以快速查找到已升级MCU,通过对所有已执行升级操作MCU均执行自恢复操作,将已成功升级MCU和未成功升级MCU均恢复至升级前状态,有效解决了因升级失败导致各个MCU之间版本不匹配,造成不兼容情况发生的问题。
一种主从MCU升级失败的自恢复方法,应用于主MCU,所述自恢复方法包括:
判断预先创建的升级结果记录文件中记录的各个被升级MCU是否存在目标MCU,其中,所述目标MCU为升级状态标志置位的被升级MCU,升级状态标志在所述被升级MCU执行升级操作时设置,且所述升级状态标志置位表示已执行升级操作;
如果存在所述目标MCU,则继续判断所述升级结果记录文件中记录的所有的所述被升级MCU的升级结果标志是否有未置位的;
如果有未置位的,则对所有的所述目标MCU执行自恢复操作,并针对自恢复操作成功的所述目标MCU的升级结果标志置位;
其中,所述升级结果标志在确定所述被升级MCU执行升级操作结束,和/或所述被升级MCU升级失败后需要重启执行恢复机制时设置,升级结果标志置位表示升级成功。
可选的,所述对所有的所述目标MCU执行自恢复操作,并针对自恢复操作成功的所述目标MCU的升级结果标志置位,具体包括:
判断当前自恢复次数是否达到自恢复最大次数;
如果否,则对所述当前自恢复次数加1;
对所有的所述目标MCU执行自恢复操作;
针对自恢复操作成功的所述目标MCU的升级结果标志置位。
可选的,还包括:
当所述当前自恢复次数达到所述自恢复最大次数时,结束执行自恢复操作。
可选的,还包括:
将自恢复操作未成功的所述目标MCU的升级结果标志维持未置位状态。
可选的,还包括:
当所有的所述被升级MCU的升级结果标志均置位时,则确定所有的所述被升级MCU均升级成功;
清除所有的升级状态标志,并将自恢复次数清零。
可选的,还包括:
获取预先设置的升级配置文件,所述升级配置文件用于表征各个所述被升级MCU的属性,所述属性包括:成功重启标志;
基于所述升级配置文件,判断所有自恢复操作成功的所述目标MCU中,是否存在成功重启标志置位的待重启MCU,其中,所述成功重启标志置位表示自恢复成功状态在重启后生效;
如果是,则控制所述待重启MCU执行重启操作。
一种主从MCU升级失败的自恢复系统,应用于主MCU,所述自恢复系统包括:
第一判断单元,用于判断预先创建的升级结果记录文件中记录的各个被升级MCU是否存在目标MCU,其中,所述目标MCU为升级状态标志置位的被升级MCU,升级状态标志在所述被升级MCU执行升级操作时设置,且所述升级状态标志置位表示已执行升级操作;
第二判断单元,用于在所述第一判断单元判断为是的情况下,继续判断所述升级结果记录文件中记录的所有的所述被升级MCU的升级结果标志是否有未置位的;
自恢复操作单元,用于在所述第二判断单元判断为是的情况下,则对所有的所述目标MCU执行自恢复操作,并针对自恢复操作成功的所述目标MCU的升级结果标志置位;
其中,所述升级结果标志在确定所述被升级MCU执行升级操作结束,和/或所述被升级MCU升级失败后需要重启执行恢复机制时设置,升级结果标志置位表示升级成功。
可选的,所述自恢复操作单元具体用于:
判断当前自恢复次数是否达到自恢复最大次数;
如果否,则对所述当前自恢复次数加1;
对所有的所述目标MCU执行自恢复操作;
针对自恢复操作成功的所述目标MCU的升级结果标志置位。
可选的,还包括:
升级成功确定单元,用于当所有的所述被升级MCU的升级结果标志均置位时,则确定所有的所述被升级MCU均升级成功;
标志清除单元,用于清除所有的升级状态标志,并将自恢复次数清零。
可选的,还包括:
获取单元,用于获取预先设置的升级配置文件,所述升级配置文件用于表征各个所述被升级MCU的属性,所述属性包括:成功重启标志;
第三判断单元,用于基于所述升级配置文件,判断所有自恢复操作成功的所述目标MCU中,是否存在成功重启标志置位的待重启MCU,其中,所述成功重启标志置位表示自恢复成功状态在重启后生效;
重启操作单元,用于在所述第三判断单元判断为是的情况下,控制所述待重启MCU执行重启操作。
从上述的技术方案可知,本发明公开了一种主从MCU升级失败的自恢复方法及系统,当主MCU确定预先创建的升级结果记录文件中记录的各个被升级MCU中存在升级状态标志置位的目标MCU,且所有被升级MCU的升级结果标志存在未置位的时,其中,升级结果标志置位表示升级成功,主MCU判定所有被升级MCU中存在升级失败的MCU,此时,主MCU对所有已执行升级操作的各个目标MCU执行自恢复操作,并针对自恢复操作成功的目标MCU的升级结果标志置位。本发明通过在被升级MCU执行升级操作时设置升级状态标志,以及在被升级MCU执行升级操作结束和/或被升级MCU升级失败后需要重启执行恢复机制时设置升级结果标志,使得在出现多MCU升级失败的情况时,可以快速查找到已升级MCU,通过对所有已执行升级操作MCU均执行自恢复操作,将已成功升级MCU和未成功升级MCU均恢复至升级前状态,有效解决了因升级失败导致各个MCU之间版本不匹配,造成不兼容情况发生的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据公开的附图获得其他的附图。
图1为本发明实施例公开的一种多MCU架构示意图;
图2为本发明实施例公开的一种主从MCU升级失败的自恢复方法的流程图;
图3为本发明实施例公开的一种目标ECU执行自恢复操作的方法流程图;
图4为本发明实施例公开的一种主从MCU的正常升级的方法流程图;
图5为本发明实施例公开的一种主从MCU升级失败的自恢复系统的结构示意图。
具体实施方式
为便于理解本发明所要保护的主从MCU升级失败的自恢复方法,本发明提供了如图1所示的多MCU架构示意图,在多MCU架构下,选取一个主节点作为主MCU,简称为Master-MCU,每个从节点作为一个从MCU,如图1所示,各个从MCU分别简称为Slave-MCU1、Slave-MCU2和Slave-MCU3。主MCU与各个从MCU之间的通信方式不限,可以是USB(UniversalSerial Bus,通用串行总线)、SPI(Serial Peripheral Interface,串行外设接口)和UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)中的任意一种。
主MCU性能比较强大,具有足够的存储空间,它负责从外界获取到各个MCU的升级包以后,再依次对各个MCU进行升级。本发明将集成到Master-MCU上的升级程序称之为升级服务,升级服务负责完成主MCU自身的升级以及所有从MCU的升级,对所有升级的MCU进行升级流程控制、升级管理、升级失败自恢复等功能,保证所有升级的MCU的版本匹配。各个从MCU也具有各自负责升级的程序,以配合主MCU的升级服务完成自身的升级。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种主从MCU升级失败的自恢复方法及系统,当主MCU确定预先创建的升级结果记录文件中记录的各个被升级MCU中存在升级状态标志置位的目标MCU,且所有被升级MCU的升级结果标志存在未置位的时,其中,升级结果标志置位表示升级成功,主MCU判定所有被升级MCU中存在升级失败的MCU,此时,主MCU对所有已执行升级操作的各个目标MCU执行自恢复操作,并针对自恢复操作成功的目标MCU的升级结果标志置位。本发明通过在被升级MCU执行升级操作时设置升级状态标志,以及在被升级MCU执行升级操作结束和/或被升级MCU升级失败后需要重启执行恢复机制时设置升级结果标志,使得在出现多MCU升级失败的情况时,可以快速查找到已升级MCU,通过对所有已执行升级操作MCU均执行自恢复操作,将已成功升级MCU和未成功升级MCU均恢复至升级前状态,有效解决了因升级失败导致各个MCU之间版本不匹配,造成不兼容情况发生的问题。
参见图2,本发明实施例公开的一种主从MCU升级失败的自恢复方法的流程图,该方法应用于图1所示实施例中的主MCU,自恢复方法包括:
步骤S101、判断预先创建的升级结果记录文件中记录的各个被升级MCU是否存在目标MCU,如果是,则执行步骤S202;
其中,目标MCU为升级状态标志置位的被升级MCU。
升级状态标志在被升级MCU执行升级操作时设置,且升级状态标志置位表示已执行升级操作。
升级结果记录文件用于记录当前每个被升级MCU名称以及对应的升级状态和升级结果。升级结果记录文件存放在主MCU的掉电不丢失的存储区内,由主MCU的升级服务运行时创建,并一直存在,且主MCU升级后也不会被覆盖。
升级结果配置文件中记录的信息举例如下:
表1
被升级MCU名称:当前自恢复次数的初始值为0,每恢复一次,当前自恢复次数的计数值加1,当所有MCU的升级结果都成功时,说明不再需要将被升级MCU恢复至升级前的状态,此时清除当前自恢复次数的计数值。
其中,升级状态标志置位时,升级状态标志为1,升级结果标志置位时,升级结果为1。
升级状态:0表示未执行升级操作,1表示已执行升级操作;
升级结果:升级状态为1时有效,升级结果为1表示升级成功,升级结果为0表示升级失败。
其中,升级结果记录文件的格式可以依据实际需要而定,本发明在此不做限定,只需要保证升级结果记录文件可以记录当前每个被升级MCU名称以及对应的升级状态和升级结果即可。
本实施例中,当升级结果记录文件中存在升级状态标志置位的被升级MCU时,则表明升级结果记录文件中存在已升级过的被升级MCU。
当升级结果记录文件中所有被升级MCU的升级状态标志均未置位时,表明上次未进行升级,此时直接退出自恢复流程。
步骤S102、判断升级结果记录文件中记录的所有的被升级MCU的升级结果标志是否有未置位的,如果是,则执行步骤S103;
其中,升级结果标志在确定所述被升级MCU执行升级操作结束,和/或所述被升级MCU升级失败后需要重启执行恢复机制时设置,升级结果标志置位表示升级成功。
当升级结果记录文件中记录的所有被升级MCU中,存在升级结果标志未置位的被升级MCU,则说明有的被升级MCU升级失败了,此时,需要对所有已升级的被升级MCU进行恢复。
当升级结果记录文件中记录的所有的被升级MCU均置位,也即,升级结果均为1,表明所有的被升级MCU均升级成功,此时,清除所有的升级状态标志,并将自恢复次数清零。
步骤S103、对所有的目标MCU执行自恢复操作,并针对自恢复操作成功的目标MCU的升级结果标志置位。
在实际应用中,可以针对目标MCU通过拷贝升级前的原始升级包,使用原始升级包再次进行升级来实现由当前状态恢复至升级前状态。
本实施例中,针对每个目标MCU执行自恢复操作的过程如下:
对当前目标MCU执行自恢复操作,若当前目标MCU执行自恢复操作成功,继续对当前目标MCU的下一个目标MCU执行自恢复操作;若当前目标MCU执行自恢复操作失败,则维持当前目标MCU的升级结果标志为未置位不变,并返回再次对当前目标MCU执行自恢复操作;如此反复,直至所有的目标MCU执行自恢复操作成功。
综上可知,本发明公开了一种主从MCU升级失败的自恢复方法,当主MCU确定预先创建的升级结果记录文件中记录的各个被升级MCU中存在升级状态标志置位的目标MCU,且所有被升级MCU的升级结果标志存在未置位的时,其中,升级结果标志置位表示升级成功,主MCU判定所有被升级MCU中存在升级失败的MCU,此时,主MCU对所有已执行升级操作的各个目标MCU执行自恢复操作,并针对自恢复操作成功的目标MCU的升级结果标志置位。本发明通过在被升级MCU执行升级操作时设置升级状态标志,以及在被升级MCU执行升级操作结束和/或被升级MCU升级失败后需要重启执行恢复机制时设置升级结果标志,使得在出现多MCU升级失败的情况时,可以快速查找到已升级MCU,通过对所有已执行升级操作MCU均执行自恢复操作,将已成功升级MCU和未成功升级MCU均恢复至升级前状态,有效解决了因升级失败导致各个MCU之间版本不匹配,造成不兼容情况发生的问题。
需要说明的是,本发明所要保护的升级失败自恢复机制分两部分组成:一部分单纯负责升级,另一部分单纯负责升级失败自恢复,两部分相互独立,且自恢复部分在系统启动时自动完成。
本发明在对目标MCU执行自恢复操作时,为防止升级失败后由于一直自恢复操作失败而陷入自恢复操作进入死循环情况的出现,本发明设置了自恢复最大次数。
因此,为进一步优化上述实施例,参见图3,本发明实施例公开的一种目标MCU执行自恢复操作的方法流程图,也即步骤S103具体可以包括:
步骤S201、判断当前自恢复次数是否达到自恢复最大次数,如果否,则执行步骤S202;
其中,当前自恢复次数是针对主MCU和所有被升级MCU的,或是说主MCU和所有被升级MCU对应同一个自恢复次数,自恢复最大次数的取值依据实际需要而定,例如自恢复最大次数为3,本发明在此不做限定。
步骤S202、对当前自恢复次数加1;
步骤S203、对所有的目标MCU执行自恢复操作;
步骤S204、判断自恢复操作是否成功,如果是,则执行步骤S205,如果否,则执行步骤S206;
步骤S205、针对自恢复操作成功的目标MCU的升级结果标志置位;
步骤S206、将自恢复操作未成功的目标MCU的升级结果标志维持未置位状态,并返回步骤S201。
为进一步优化上述实施例,在步骤S201判断为是的情况下,还可以包括:
步骤S207、当前自恢复次数达到自恢复最大次数时,结束执行自恢复操作。
本实施例中,在当前自恢复次数达到自恢复最大次数时,为防止由于一直自恢复操作失败而陷入无限自恢复状态情况的出现,当前自恢复次数达到自恢复最大次数时,结束执行自恢复操作。
上述实施例中,当所有的被升级MCU的升级结果标志均置位时,表明所有的被升级MCU均升级成功,在这种情况下,无需执行自恢复操作。
因此,为一步优化上述实施例,在步骤S101判断为否的情况下,自恢复方法还可以包括:
当所有的被升级MCU的升级结果标志均置位时,则确定所有的被升级MCU均升级成功;
清除所有的升级状态标志,并将自恢复次数清零。
可以理解的是,在实际应用中,有些MCU在执行自恢复操作后,必须要经历一次重启才会生效,本实施例中,针对执行自恢复操作后,需要重启生效的MCU设置了成功重启标志,通过判断成功重启标志是否置位,即可确定是否对自恢复操作成功的MCU执行重启操作。
因此,为进一步优化上述实施例,在步骤S103之后,还可以包括:
获取预先设置的升级配置文件;
基于升级配置文件,判断所有自恢复操作成功的目标MCU中,是否存在成功重启标志置位的待重启MCU;
如果是,则控制待重启MCU执行重启操作;
如果否,则退出自恢复操作流程。
其中,升级配置文件用于表征各个被升级MCU的属性,属性包括:自恢复最大次数、被升级MCU名称、成功重启标志和失败重启标志。成功重启标志置位表示自恢复成功状态在重启后生效或升级成功状态在重启后生效。
本实施例中,待重启MCU执行完重启操作后,会退出自恢复操作流程。
当存在成功重启标志置位的待重启MCU为主MCU时,主MCU会通过自身的应用层执行重启操作;当存在成功重启标志置位的待重启MCU为从MCU时,主MCU会向作为待重启MCU的从MCU发送重启指令,使待重启MCU根据重启指令执行重启操作。
需要特别说明的是,本发明为实现主从MCU升级失败的自恢复过程,除了在主MCU运行时创建升级结果记录文件,还设置了升级配置文件和升级包配置文件。
(1)升级配置文件
升级配置文件:用于表征各个被升级MCU的属性,属性包括:自恢复最大次数、被升级MCU名称、成功重启标志和失败重启标志。
自恢复最大次数:为防止升级失败后,由于自恢复操作一直不成功而陷入死循环情况的出现,初始值为3,可配置。
被升级MCU名称:例如Slave_MCU1。
成功重启标志:表示MCU自恢复成功或是升级成功后,是否需要重启。0表示不需要重启,1表示需要重启,成功重启标志置位表示自恢复成功状态在重启后生效或升级成功状态在重启后生效。
失败重启标志:表示MCU升级失败后,是否需要重启走恢复机制。0表示不需要重启,1表示需要重启。
举例如下:
(2)升级包配置文件
升级包配置文件:用于表示当前升级包中所有被升级MCU名称以及升级包名称。其中,升级包配置文件随升级包一起发送。
被升级MCU名称:例如Slave_MCU1,跟升级配置文件中的名称必须保持一致,升级包配置文件中的名称列表是升级配置文件中列表的子集;
升级包名称:每个被升级MCU对应的升级包名称。
举例如下:
为便于理解上述实施例,本发明还提供了主从MCU的正常升级过程。
参见图4,本发明实施例公开的一种主从MCU的正常升级的方法流程图,该方法应用于主MCU,该方法包括:
步骤S301、判断升级结果记录文件是否存在,如果否,则执行步骤S302,如果是,则执行步骤S303;
主MCU中的升级服务在执行升级操作时,首先会判断升级结果记录文件是否存在,如果是,则执行后续的升级操作,如果否,则在主MCU中创建一个升级结果记录文件。
升级结果记录文件是由主MCU中的升级服务自动创建的,用于记录各个MCU的升级状态和升级结果,若升级结果记录文件不存在,则说明升级服务是第一次运行,此时,创建一个默认的升级结果记录文件。
步骤S302、在主MCU中创建一个升级结果记录文件,并继续执行步骤S303;
步骤S303、解析升级包配置文件得到所有的被升级MCU名称集合和升级包名称;
步骤S304、对被升级MCU名称集合中的当前被升级MCU设置升级状态标志;
其中,对当前被升级MCU设置升级状态标志的目的是表明当前被升级MCU正在执行升级操作。
步骤S305、判断当前被升级MCU在升级失败时是否需要重启执行恢复机制,如果是,则执行步骤S306;
当前被升级MCU在升级失败时是否需要重启执行恢复机制,也即当前被升级MCU的失败重启标志是否置位,失败重启标志置位表示被升级MCU升级失败后需要重启执行恢复机制,如果是,则说明当前被升级MCU没有备份分区,一旦升级失败将无法自恢复,必须执行重启后恢复机制可以执行自恢复操作,所以需要提前设置升级结果标志,在升级成功以后再升级结果标志置位;如果失败重启标志未置位,则说明当前被升级MCU自己有备份分区,升级失败没有任何影响,无需执行重启恢复机制。
步骤S306、对当前被升级MCU设置升级结果标志;
步骤S307、利用与升级包名称对应的升级包对当前被升级MCU执行升级操作;
步骤S308、判断当前被升级MCU是否升级成功,如果否,则执行步骤S309;
步骤S309、在升级结果记录文件中记录当前被升级MCU的升级结果;
步骤S310、当所有的被升级MCU均执行升级操作后,判断升级结果记录文件中记录的各个被升级MCU是否存在升级状态标志置位的目标MCU,如果是,则执行步骤S311;
其中,升级状态标志置位时,升级结果为1表示升级成功。
本实施例中,遍历所有被升级的MCU中是否有升级状态标志置位的目标MCU,如果是,说明有的MCU已经进行了升级,此时,必须执行主从MCU升级失败的自恢复流程;如果否,说明此次升级未造成任何影响,不需要执行主从MCU升级失败的自恢复流程,直接可以结束运行。
步骤S311、执行主从MCU升级失败的自恢复流程。
本实施例中,当步骤S307判断为是,也即当前被升级MCU升级成功时,将当前被升级MCU的升级结果标志置位。
需要说明的是,图4所示实施例示出的是被升级MCU升级失败后需要重启执行恢复机制时设置升级结果标志。
在实际应用中,被升级MCU执行升级操作结束和被升级MCU升级失败后需要重启执行恢复机制中两个条件中的任意一个条件或两个条件同时满足,也需要设置升级结果标志。
当所有的被升级MCU均升级完成后,将各个被升级MCU的升级结果记录至升级结果记录文件中。检查各个被升级MCU的成功重启标志是否置位,如果是,说明存在只有重启才能生效的被升级MCU,此时对成功重启标志置位的被升级MCU执行重启操作,并在重启操作执行完成后结束升级流程;如果否,表明所有的被升级MCU无需重启均可直接生效,此时直接结束升级流程。
与上述方法实施例相对应,本发明还公开了一种主从MCU升级失败的自恢复系统。
参见图5,本发明实施例公开的一种主从MCU升级失败的自恢复系统的结构示意图,该装置应用于图1所示实施例中的主MCU,自恢复系统包括:
第一判断单元401,用于判断预先创建的升级结果记录文件中记录的各个被升级MCU是否存在目标MCU;
其中,目标MCU为升级状态标志置位的被升级MCU,升级状态标志在被升级MCU执行升级操作时设置,且升级状态标志置位表示已执行升级操作。
升级结果记录文件用于记录当前每个被升级MCU名称以及对应的升级状态和升级结果。升级结果记录文件存放在主MCU的掉电不丢失的存储区内,由主MCU的升级服务运行时创建,并一直存在,且主MCU升级后也不会被覆盖。
第二判断单元402,用于在第一判断单元401判断为是的情况下,继续判断升级结果记录文件中记录的所有的被升级MCU的升级结果标志是否有未置位的;
其中,升级结果标志在确定被升级MCU执行升级操作结束,和/或被升级MCU升级失败后需要重启执行恢复机制时设置,升级结果标志置位表示升级成功。
当升级结果记录文件中记录的所有被升级MCU中,存在升级结果标志未置位的被升级MCU,则说明有的被升级MCU升级失败了,此时,需要对所有已升级的被升级MCU进行恢复。
当升级结果记录文件中记录的所有的被升级MCU均置位,也即,升级结果均为1,表明所有的被升级MCU均升级成功,此时,清除所有的升级状态标志,并将自恢复次数清零。
自恢复操作单元403,用于在第二判断单元402判断为是的情况下,则对所有的目标MCU执行自恢复操作,并针对自恢复操作成功的目标MCU的升级结果标志置位。
在实际应用中,可以针对目标MCU通过拷贝升级前的原始升级包,使用原始升级包再次进行升级来实现由当前状态恢复至升级前状态。
本实施例中,针对每个目标MCU执行自恢复操作的过程如下:
对当前目标MCU执行自恢复操作,若当前目标MCU执行自恢复操作成功,继续对当前目标MCU的下一个目标MCU执行自恢复操作;若当前目标MCU执行自恢复操作失败,则维持当前目标MCU的升级结果标志为未置位不变,并返回再次对当前目标MCU执行自恢复操作;如此反复,直至所有的目标MCU执行自恢复操作成功。
综上可知,本发明公开了一种主从MCU升级失败的自恢复系统,当主MCU确定预先创建的升级结果记录文件中记录的各个被升级MCU中存在升级状态标志置位的目标MCU,且所有被升级MCU的升级结果标志存在未置位的时,其中,升级结果标志置位表示升级成功,主MCU判定所有被升级MCU中存在升级失败的MCU,此时,主MCU对所有已执行升级操作的各个目标MCU执行自恢复操作,并针对自恢复操作成功的目标MCU的升级结果标志置位。本发明通过在被升级MCU执行升级操作时设置升级状态标志,以及在被升级MCU执行升级操作结束和/或被升级MCU升级失败后需要重启执行恢复机制时设置升级结果标志,使得在出现多MCU升级失败的情况时,可以快速查找到已升级MCU,通过对所有已执行升级操作MCU均执行自恢复操作,将已成功升级MCU和未成功升级MCU均恢复至升级前状态,有效解决了因升级失败导致各个MCU之间版本不匹配,造成不兼容情况发生的问题。
需要说明的是,本发明所要保护的升级失败自恢复机制分两部分组成:一部分单纯负责升级,另一部分单纯负责升级失败自恢复,两部分相互独立,且自恢复部分在系统启动时自动完成。
本发明在对目标MCU执行自恢复操作时,为防止升级失败后由于一直自恢复操作失败而陷入自恢复操作进入死循环情况的出现,本发明设置了自恢复最大次数。
因此,为进一步优化上述实施例,自恢复操作单元403具体可以用于:
判断当前自恢复次数是否达到自恢复最大次数;
如果否,则对当前自恢复次数加1;
对所有的目标MCU执行自恢复操作;
针对自恢复操作成功的目标MCU的升级结果标志置位。
其中,当前自恢复次数是针对主MCU和所有被升级MCU的,或是说主MCU和所有被升级MCU对应同一个自恢复次数,自恢复最大次数的取值依据实际需要而定,例如自恢复最大次数为3,本发明在此不做限定。
为进一步优化上述实施例,自恢复操作单元403具体还可以用于:
当前自恢复次数达到自恢复最大次数时,结束执行自恢复操作。
本实施例中,在当前自恢复次数达到自恢复最大次数时,为防止由于一直自恢复操作失败而陷入无限自恢复状态情况的出现,当前自恢复次数达到自恢复最大次数时,结束执行自恢复操作。
上述实施例中,当所有的被升级MCU的升级结果标志均置位时,表明所有的被升级MCU均升级成功,在这种情况下,无需执行自恢复操作。
因此,为一步优化上述实施例,自恢复系统还可以包括:
升级成功确定单元,用于当所有的被升级MCU的升级结果标志均置位时,则确定所有的被升级MCU均升级成功;
标志清除单元,用于清除所有的升级状态标志,并将自恢复次数清零。
可以理解的是,在实际应用中,有些MCU在执行自恢复操作后,必须要经历一次重启才会生效,本实施例中,针对执行自恢复操作后,需要重启生效的MCU设置了成功重启标志,通过判断成功重启标志是否置位,即可确定是否对自恢复操作成功的MCU执行重启操作。
因此,为进一步优化上述实施例,自恢复系统还可以包括:
获取单元,用于获取预先设置的升级配置文件;
第三判断单元,用于基于升级配置文件,判断所有自恢复操作成功的目标MCU中,是否存在成功重启标志置位的待重启MCU,其中,成功重启标志置位表示自恢复成功状态在重启后生效;
重启操作单元,用于在第三判断单元判断为是的情况下,控制待重启MCU执行重启操作。
其中,升级配置文件用于表征各个被升级MCU的属性,属性包括:自恢复最大次数、被升级MCU名称、成功重启标志和失败重启标志。成功重启标志置位表示自恢复成功状态在重启后生效或升级成功状态在重启后生效。
本实施例中,待重启MCU执行完重启操作后,会退出自恢复操作流程。
当存在成功重启标志置位的待重启MCU为主MCU时,主MCU会通过自身的应用层执行重启操作;当存在成功重启标志置位的待重启MCU为从MCU时,主MCU会向作为待重启MCU的从MCU发送重启指令,使待重启MCU根据重启指令执行重启操作。
需要说明的是,自恢复系统中各个组成部分的具体工作原理,请参见方法实施例对应部分,此处不再赘述。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (6)
1.一种主从MCU升级失败的自恢复方法,其特征在于,应用于主MCU,所述自恢复方法包括:
判断预先创建的升级结果记录文件中记录的各个被升级MCU是否存在目标MCU,其中,所述目标MCU为升级状态标志置位的被升级MCU,升级状态标志在所述被升级MCU执行升级操作时设置,且所述升级状态标志置位表示已执行升级操作;
如果存在所述目标MCU,则继续判断所述升级结果记录文件中记录的所有的所述被升级MCU的升级结果标志是否有未置位的;
如果有未置位的,则对所有的所述目标MCU执行自恢复操作,并针对自恢复操作成功的所述目标MCU的升级结果标志置位;
其中,所述升级结果标志在确定所述被升级MCU执行升级操作结束,和/或所述被升级MCU升级失败后需要重启执行恢复机制时设置,升级结果标志置位表示升级成功;
其中,所述对所有的所述目标MCU执行自恢复操作,并针对自恢复操作成功的所述目标MCU的升级结果标志置位,具体包括:
判断当前自恢复次数是否达到自恢复最大次数;
如果否,则对所述当前自恢复次数加1;
对所有的所述目标MCU执行自恢复操作;
针对自恢复操作成功的所述目标MCU的升级结果标志置位;
其中,所述方法还包括:
获取预先设置的升级配置文件,所述升级配置文件用于表征各个所述被升级MCU的属性,所述属性包括:成功重启标志;
基于所述升级配置文件,判断所有自恢复操作成功的所述目标MCU中,是否存在成功重启标志置位的待重启MCU,其中,所述成功重启标志置位表示自恢复成功状态在重启后生效;
如果是,则控制所述待重启MCU执行重启操作。
2.根据权利要求1所述的自恢复方法,其特征在于,还包括:
当所述当前自恢复次数达到所述自恢复最大次数时,结束执行自恢复操作。
3.根据权利要求1所述的自恢复方法,其特征在于,还包括:
将自恢复操作未成功的所述目标MCU的升级结果标志维持未置位状态。
4.根据权利要求1所述的自恢复方法,其特征在于,还包括:
当所有的所述被升级MCU的升级结果标志均置位时,则确定所有的所述被升级MCU均升级成功;
清除所有的升级状态标志,并将自恢复次数清零。
5.一种主从MCU升级失败的自恢复系统,其特征在于,应用于主MCU,所述自恢复系统包括:
第一判断单元,用于判断预先创建的升级结果记录文件中记录的各个被升级MCU是否存在目标MCU,其中,所述目标MCU为升级状态标志置位的被升级MCU,升级状态标志在所述被升级MCU执行升级操作时设置,且所述升级状态标志置位表示已执行升级操作;
第二判断单元,用于在所述第一判断单元判断为是的情况下,继续判断所述升级结果记录文件中记录的所有的所述被升级MCU的升级结果标志是否有未置位的;
自恢复操作单元,用于在所述第二判断单元判断为是的情况下,则对所有的所述目标MCU执行自恢复操作,并针对自恢复操作成功的所述目标MCU的升级结果标志置位;
其中,所述升级结果标志在确定所述被升级MCU执行升级操作结束,和/或所述被升级MCU升级失败后需要重启执行恢复机制时设置,升级结果标志置位表示升级成功;
其中,所述自恢复操作单元具体用于:
判断当前自恢复次数是否达到自恢复最大次数;
如果否,则对所述当前自恢复次数加1;
对所有的所述目标MCU执行自恢复操作;
针对自恢复操作成功的所述目标MCU的升级结果标志置位;
其中,所述系统还包括:
获取单元,用于获取预先设置的升级配置文件,所述升级配置文件用于表征各个所述被升级MCU的属性,所述属性包括:成功重启标志;
第三判断单元,用于基于所述升级配置文件,判断所有自恢复操作成功的所述目标MCU中,是否存在成功重启标志置位的待重启MCU,其中,所述成功重启标志置位表示自恢复成功状态在重启后生效;
重启操作单元,用于在所述第三判断单元判断为是的情况下,控制所述待重启MCU执行重启操作。
6.根据权利要求5所述的自恢复系统,其特征在于,还包括:
升级成功确定单元,用于当所有的所述被升级MCU的升级结果标志均置位时,则确定所有的所述被升级MCU均升级成功;
标志清除单元,用于清除所有的升级状态标志,并将自恢复次数清零。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110643780.1A CN113297011B (zh) | 2021-06-09 | 2021-06-09 | 一种主从mcu升级失败的自恢复方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110643780.1A CN113297011B (zh) | 2021-06-09 | 2021-06-09 | 一种主从mcu升级失败的自恢复方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113297011A CN113297011A (zh) | 2021-08-24 |
CN113297011B true CN113297011B (zh) | 2024-04-12 |
Family
ID=77327736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110643780.1A Active CN113297011B (zh) | 2021-06-09 | 2021-06-09 | 一种主从mcu升级失败的自恢复方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113297011B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014161339A1 (zh) * | 2013-08-12 | 2014-10-09 | 中兴通讯股份有限公司 | 固件升级方法及装置 |
CN104166577A (zh) * | 2014-08-26 | 2014-11-26 | 深圳市中兴移动通信有限公司 | 一种移动终端系统升级的方法和装置 |
WO2017067448A1 (zh) * | 2015-10-22 | 2017-04-27 | 深圳市中兴微电子技术有限公司 | 一种无线固件升级方法、系统及计算机存储介质 |
CN107133056A (zh) * | 2017-06-09 | 2017-09-05 | 北京云创远景软件有限责任公司 | 智能设备升级恢复分区的方法和装置 |
WO2017219861A1 (zh) * | 2016-06-20 | 2017-12-28 | 阿里巴巴集团控股有限公司 | 系统启动模式的控制方法及装置 |
CN109614130A (zh) * | 2018-12-12 | 2019-04-12 | 湖南康通电子股份有限公司 | 一种带有试运行、自检查的云广播升级方法及系统 |
-
2021
- 2021-06-09 CN CN202110643780.1A patent/CN113297011B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014161339A1 (zh) * | 2013-08-12 | 2014-10-09 | 中兴通讯股份有限公司 | 固件升级方法及装置 |
CN104166577A (zh) * | 2014-08-26 | 2014-11-26 | 深圳市中兴移动通信有限公司 | 一种移动终端系统升级的方法和装置 |
WO2017067448A1 (zh) * | 2015-10-22 | 2017-04-27 | 深圳市中兴微电子技术有限公司 | 一种无线固件升级方法、系统及计算机存储介质 |
WO2017219861A1 (zh) * | 2016-06-20 | 2017-12-28 | 阿里巴巴集团控股有限公司 | 系统启动模式的控制方法及装置 |
CN107133056A (zh) * | 2017-06-09 | 2017-09-05 | 北京云创远景软件有限责任公司 | 智能设备升级恢复分区的方法和装置 |
CN109614130A (zh) * | 2018-12-12 | 2019-04-12 | 湖南康通电子股份有限公司 | 一种带有试运行、自检查的云广播升级方法及系统 |
Non-Patent Citations (2)
Title |
---|
双模机顶盒在线升级方案设计与实现;韩洪波;倪宏;孙鹏;;微计算机信息(24);全文 * |
基于事务模型的升级程序设计与实现;李立亚;慕金龙;任忠保;;计算机工程与设计(11);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113297011A (zh) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI740901B (zh) | 執行資料恢復操作的方法及裝置 | |
US20190324858A1 (en) | Rollback recovery from partial failure in multiple electronic control unit over-the-air updates | |
CN102262544B (zh) | 软件升级的方法和装置 | |
US8825995B2 (en) | Method and system for booting and automatically updating software, and recovering from update error, and computer readable recording medium storing method | |
EP1770512A2 (en) | Method and system for updating software | |
CN107809324B (zh) | 一种车载自动诊断系统设备及其升级方法 | |
CN111182033B (zh) | 一种交换机还原的方法和设备 | |
CN108345464A (zh) | 一种安卓系统的启动方法及安卓车机 | |
CN106469069A (zh) | 一种版本升级方法及系统 | |
CN107819556B (zh) | 一种服务状态切换方法及装置 | |
CN104063256A (zh) | 基于最小操作系统的分区及固件升级方法 | |
WO2022188690A1 (zh) | 升级电子设备的方法及装置 | |
CN113297011B (zh) | 一种主从mcu升级失败的自恢复方法及系统 | |
CN108664255B (zh) | 一种软件升级方法及装置 | |
CN112181452A (zh) | 一种电动汽车电机控制器软件更新方法 | |
CN110928727A (zh) | 一种操作系统快速恢复出厂设置的方法 | |
CN110688136A (zh) | 一种应用程序更新方法及装置 | |
CN116088914A (zh) | 多核异构片上系统升级方法及装置 | |
CN114579161A (zh) | 应用程序更新方法及ecu | |
CN112732301A (zh) | 一种车辆升级方法和装置 | |
CN115658152A (zh) | 固件升级方法、固件、电子设备和计算机可读存储介质 | |
CN114706608A (zh) | 升级固件的方法和电子设备 | |
CN114546455A (zh) | 一种双分区的mcu软件升级方法及装置 | |
CN114995852A (zh) | 一种设备升级方法、设备及计算机可读存储介质 | |
CN114153660A (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 |