CN107908496A - 用于在mcu固件出错后自动恢复的方法和mcu - Google Patents

用于在mcu固件出错后自动恢复的方法和mcu Download PDF

Info

Publication number
CN107908496A
CN107908496A CN201711167145.0A CN201711167145A CN107908496A CN 107908496 A CN107908496 A CN 107908496A CN 201711167145 A CN201711167145 A CN 201711167145A CN 107908496 A CN107908496 A CN 107908496A
Authority
CN
China
Prior art keywords
firmware
version firmware
mcu
upgrading
operational zone
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
CN201711167145.0A
Other languages
English (en)
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.)
Dongxia Datong Beijing Management Consulting Co Ltd
Original Assignee
Dongxia Datong Beijing Management Consulting Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dongxia Datong Beijing Management Consulting Co Ltd filed Critical Dongxia Datong Beijing Management Consulting Co Ltd
Priority to CN201711167145.0A priority Critical patent/CN107908496A/zh
Publication of CN107908496A publication Critical patent/CN107908496A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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
    • 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/0706Error 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 the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0736Error 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 the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
    • 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/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram

Landscapes

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

Abstract

本发明实施例提供一种用于在MCU固件出错后自动恢复的方法和MCU,属于电子技术领域。所述MCU包括:存储模块,所述存储模块包括升级交换区、备份区和运行区;检测模块,用于检测所述新版本固件和/或当前版本固件是否错误;以及执行模块,用于执行以下操作中的一者或多者:在所述检测模块检测到所述新版本固件错误的情况下,继续执行所述运行区内的所述当前版本固件;在所述检测模块检测到所述当前版本固件错误的情况下,复制所述备份区内的所述旧版本固件至所述运行区,并执行被复制到所述运行区内的所述旧版本固件。通过本发明的上述方案,保证了MCU的稳定运行,提高了MCU的可靠性。

Description

用于在MCU固件出错后自动恢复的方法和MCU
技术领域
本发明涉及电子技术领域,具体地涉及一种用于在MCU固件出错后自动恢复的方法和MCU。
背景技术
当前MCU的嵌入式软件(即固件)随着业务的升级而变得越发复杂。固件在升级结束以及运行时,可能会由于固件的程序错误、Flash硬件的不稳定性、传输过程中的干扰导致的新版本固件包错误以及在升级时断电等一系列异常情况的发生,导致MCU不断重启而无法正常工作。
发明内容
为了解决现有技术中存在的上述问题,本发明的目的是提供一种用于在MCU固件出错后自动恢复的方法和MCU。
为了实现上述目的,本发明实施例提供一种MCU,所述MCU包括:存储模块,所述存储模块包括升级交换区、备份区和运行区,其中,所述升级交换区用于存储待升级的新版本固件;所述备份区用于存储旧版本固件;所述运行区用于存储当前版本固件;检测模块,用于检测所述新版本固件和/或当前版本固件是否错误;以及执行模块,用于接收来自所述检测模块的检测结果,并执行以下操作中的一者或多者:操作一:在所述检测模块检测到所述新版本固件错误的情况下,继续执行所述运行区内的所述当前版本固件;操作二:在所述检测模块检测到所述当前版本固件错误的情况下,复制所述备份区内的所述旧版本固件至所述运行区,并执行被复制到所述运行区内的所述旧版本固件。
可选地,所述执行模块还用于在所述检测模块检测到所述新版本固件正确的情况下,执行以下步骤:步骤S201,清空所述备份区,将所述运行区内的所述当前版本固件复制到所述备份区内;步骤S202,将所述升级交换区内的所述新版本固件复制到所述运行区内;步骤S203,运行所述运行区内存储的所述新版本固件。
可选地,所述存储模块还包括标识区,所述标识区用于存储:升级标识,用于指示所述升级交换区内是否有所述新版本固件,其中所述新版本固件为高于所述运行区内的所述当前版本固件的固件;第一标识,用于指示所述步骤S201是否完成;以及第二标识,用于指示所述步骤S202是否完成。
可选地,所述执行模块还用于下载所述新版本固件到所述升级交换区,并在所述新版本固件下载完成后,在所述标识区内写入所述升级标识。
可选地,所述检测模块还用于:在所述标识区内存储有所述升级标识的情况下,检测所述升级交换区内的所述新版本固件是否正确;以及在所述标识区内没有存储所述升级标识的情况下,检测所述运行区内的所述当前版本固件是否正确。
可选地,所述执行模块还用于:在完成步骤S201后,在所述标识区内写入所述第一标识;以及在完成步骤S202后,在所述标识区内删除所述第一标识和所述升级标识并写入所述第二标识。
可选地,所述检测模块,还用于通过检测所述升级交换区内的所述新版本固件的栈顶位置和/或校验值来判断所述新版本固件是否错误。
可选地,所述MCU还包括监控芯片,所述监控芯片用于在监控到当前版本固件运行异常时,重启所述MCU,所述检测模块通过检测所述MCU异常重启的次数来确定所述运行区内的所述当前版本固件是否错误。
可选地,当所述执行模块执行所述步骤S201的过程中出现中断时,所述执行模块还用于重复执行所述步骤S201;以及当所述执行模块执行所述步骤S202的过程中出现中断时,所述执行模块还用于重复执行所述步骤S202。
本发明实施方式还提供一种用于在MCU固件出错后自动恢复的方法,所述方法包括:检测新版本固件和/或当前版本固件是否错误,其中所述MCU的存储模块包括升级交换区、备份区和运行区,所述升级交换区用于存储待升级的所述新版本固件,所述备份区用于存储旧版本固件,所述运行区用于存储所述当前版本固件;以及以下步骤中的一者或多者:步骤S101:在检测到所述新版本固件错误的情况下,继续执行所述运行区内的所述当前版本固件;步骤S102:在检测到所述当前版本固件错误的情况下,复制所述备份区内的所述旧版本固件至所述运行区,并执行被复制到所述运行区内的所述旧版本固件。
可选地,所述方法还包括:在检测到所述新版本固件正确的情况下,执行以下步骤:步骤S201,清空所述备份区,将所述运行区内的所述当前版本固件复制到所述备份区内;步骤S202,将所述升级交换区内的所述新版本固件复制到所述运行区内;步骤S203,运行所述运行区内存储的所述新版本固件。
可选地,所述存储模块还包括标识区,所述标识区用于存储:升级标识,用于指示所述升级交换区内是否有所述新版本固件,其中所述新版本固件为高于所述运行区内的所述当前版本固件的固件;第一标识,用于指示所述步骤S201是否完成;第二标识,用于指示所述步骤S202是否完成。
可选地,所述方法还包括:下载所述新版本固件到所述升级交换区,并在所述新版本固件下载完成后,在所述标识区内写入所述升级标识。
可选地,所述方法还包括:在所述标识区内存储有所述升级标识的情况下,检测所述升级交换区内的所述新版本固件是否正确;以及在所述标识区内没有存储所述升级标识的情况下,检测所述运行区内的所述当前版本固件是否正确。
可选地,所述方法还包括:在完成步骤S201后,在所述标识区内写入所述第一标识;以及在完成步骤S202后,在所述标识区内删除所述第一标识和所述升级标识并写入所述第二标识。
可选地,通过检测所述升级交换区内的所述新版本固件的栈顶位置和/或校验值来判断所述新版本固件是否错误。
可选地,所述MCU的监控芯片在监控到当前版本固件运行异常时,重启所述MCU,通过检测所述MCU异常重启的次数来确定所述运行区内的所述当前版本固件是否错误。
可选地,所述方法还包括:在所述步骤S201出现中断时,重复执行所述步骤S201;在所述步骤S202出现中断时,重复执行所述步骤S202。
通过本发明的上述方案,可以保证MCU的固件无论是在升级过程中出现错误还是在运行出现错误,都不会影响MCU的正常工作,从而保证了MCU的稳定运行,提高了MCU的可靠性。
本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:
图1是本发明实施方式提供的一种用于MCU的框图;
图2是本发明实施方式提供的在检测到新版本固件正确的情况下所执行步骤的流程图;
图3A和图3B是本发明一种可选实施方式提供的MCU的存储器的示意图。
附图标记说明
10 存储模块 20 检测模块
30 执行模块
具体实施方式
以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。
图1是本发明实施方式提供的一种用于MCU的框图。如图1所示,本发明实施方式提供一种MCU,所述MCU包括:
存储模块10,该存储模块10包括升级交换区、备份区和运行区,其中,升级交换区用于存储待升级的新版本固件;备份区用于存储旧版本固件;运行区用于存储当前版本固件。
检测模块20,用于检测新版本固件和/或当前版本固件是否错误。
执行模块30,用于接收来自检测模块20的检测结果,并执行以下操作中的一者或多者:操作一:在检测模块20检测到新版本固件错误的情况下,继续执行运行区内的当前版本固件;操作二:在检测模块20检测到当前版本固件错误的情况下,复制备份区内的旧版本固件至运行区,并执行被复制到运行区内的旧版本固件。
在具体使用时,该MCU的存储模块10(例如Flash存储器、ROM只读存储器等)可以被分为升级交换区、备份区和运行区三个存储区。当MCU需要升级固件时,先将接收到的新版本固件暂存在升级交换区,MCU的检测模块20会检测暂存在升级交换区内的新版本固件是否错误,检测方式可以例如为通过检测栈顶位置以及检测校验值等。运行区内存储用于运行的当前版本固件,当检测模块20检测到新版本固件错误的情况下,为了保证MCU能够正常运行,MCU会继续运行在运行区内的当前版本固件,而不对运行区内的固件进行更新。其中,MCU接收新版本固件的方式既可以为通过有线方式进行接收,例如通过线缆接收,也可以为通过无线方式进行接收,例如通过OTA技术(Over-the-Air Technology,空中下载技术)接收。备份区内存储有旧版本固件,在MCU运行过程中,若检测模块20检测到正在运行的当前版本固件错误,则执行模块30复制备份区内的旧版本固件至运行区,并运行被复制到运行区内的该旧版本固件,以使得MCU恢复正常工作,在将备份区内的旧版本固件复制到运行区前,可以先检测该旧版本固件是否正确,并在该旧版本固件正确的情况下才执行复制操作。
通过本发明的上述方案,可以保证MCU的固件无论是在升级过程中出现错误还是在运行出现错误,都不会影响MCU的正常工作,从而保证了MCU的稳定运行,提高了MCU的可靠性。
上述的MCU可以应用于共享单车的智能车锁以及智能手环、MP3等电子设备。
在本发明一种可选实施方式中,所述执行模块30还用于在检测模块20检测到新版本固件正确的情况下,执行以下步骤:
步骤S201,清空备份区,将运行区内的当前版本固件复制到备份区内;
步骤S202,将升级交换区内的新版本固件复制到运行区内;
步骤S203,运行运行区内存储的新版本固件。
其中,上述步骤是顺序进行的,即在上一步骤成功完成后才执行下一步骤。在确认新版本固件正确的情况下,通过上述步骤,能够完成MCU的固件升级更新。通过将原来运行在运行区内的固件复制到备份区作为备用,可以在运行区内的固件出现错误时,将备份区内的固件复制回运行区,以保证MCU能够及时恢复正常。
在本发明一种可选实施方式中,存储模块10还包括标识区,该标识区用于存储升级标识、第一标识和第二标识。其中,升级标识用于指示升级交换区内是否有新版本固件,其中新版本固件是指高于运行区内的当前版本固件的固件,MCU接收该新版本固件并暂存在升级交换区以用于对其固件进行升级;第一标识用于指示上述步骤S201是否完成;第二标识用于指示上述步骤S202是否完成。
具体地,当MCU需要升级固件时,执行模块30先将接收到的新版本固件暂存到升级交换区,若升级交换区存在之前暂存的固件,则可以先清除该固件后再开始接收新版本固件。当MCU完成新版本固件接收后,即新版本固件下载完成后,执行模块30会在标识区生成升级标识,检测模块20检测到标识区内的升级标识后会检测升级交换区内暂存的新版本固件是否正确。在检测模块20确定新版本固件正确的情况下,执行模块30会清空备份区,并将运行区内的当前版本固件复制到备份区内,并且复制完成后在标识区生成第一标识。随后,执行模块30会将升级交换区内的新版本固件复制到运行区内,并且在复制完成后在标识区生成第二标识,在标识区生成第二标识的同时可以清除第一标识。之后,执行模块30运行运行区内存储的新版本固件,并清除标识区内的升级标识。
上述步骤S201-S203都是顺序进行的,如果在执行某一步骤的过程中出现异常(例如MCU掉电等)从而导致该步骤没有完成,则需要重新执行该未完成的步骤,而通过检测模块20检测标识区内的标识,可以判断执行模块30执行到哪一步骤。具体地,当执行模块30执行步骤S201的过程中出现中断时,执行模块30会重复执行步骤S201;当执行模块30执行步骤S202的过程中出现中断时,执行模块30会重复执行步骤S202。
在一种可选实施方式中,检测模块20还用于在标识区内存储有升级标识的情况下,检测升级交换区内的新版本固件是否正确,在标识区内没有存储升级标识的情况下,检测运行区内的当前版本固件是否正确。也就是说,标识区内的升级标识可以用于指示MCU是处于升级状态还是一般工作状态,检测模块20在MCU处于升级状态的情况下,检测升级交换区内的新版本固件,在MCU处于一般工作状态下,检测运行区内的当前版本固件。
在一种可选实施方式中,所述MCU还包括监控芯片,所述监控芯片用于在监控到当前版本固件运行异常时,重启所述MCU,所述检测模块20通过检测所述MCU异常重启的次数来确定所述运行区内的所述当前版本固件是否错误。
具体地,检测模块20会在每次MCU启动时进行检测,首先检测标识区内是否有升级标识,若标识区内有升级标识,则表示本次重启是在新版本固件下载到升级交换区后进行的重启,若标识区内没有升级标识,则检测本次系统是否为运行区内的固件异常导致的重启。检测模块20会记录异常重启的次数,当检测模块20检测到MCU在预设时间内异常重启超过预设次数时,确定在运行区内的当前版本固件存在错误,该预设次数例如可以是5次,该预设时间可以例如为60分钟。所述预设时间内异常重启超过预设次数可指所述预设时间内连续异常重启超过预设次数,还可指所述预设时间内非连续异常重启超过预设次数。优选地,检测模块20只有在检测到MCU在预设时间内连续异常重启超过预设次数时,才会确定在运行区内的当前版本固件存在错误。其中,监控芯片例如可以是看门狗芯片等。
本发明实施方式还提供一种用于在MCU固件出错后自动恢复的方法,该方法包括:
检测新版本固件和/或当前版本固件是否错误,其中MCU的存储模块包括升级交换区、备份区和运行区,升级交换区用于存储待升级的新版本固件,备份区用于存储旧版本固件,运行区用于存储当前版本固件;以及
以下步骤中的一者或多者:
步骤S101:在检测到新版本固件错误的情况下,继续执行运行区内的当前版本固件;
步骤S102:在检测到当前版本固件错误的情况下,复制备份区内的旧版本固件至运行区,并执行被复制到运行区内的旧版本固件。
具体地,该MCU的存储模块(例如Flash存储器、ROM只读存储器等)可以被分为升级交换区、备份区和运行区三个存储区。当MCU需要升级固件时,先将接收到的新版本固件暂存在升级交换区,然后检测暂存在升级交换区内的新版本固件是否错误,检测方式可以例如为通过检测栈顶位置以及检测校验值等。运行区内存储用于运行的当前版本固件,当MCU检测到所述新版本固件错误的情况下,为了保证MCU能够正常运行,MCU会继续运行在运行区内的当前版本固件,而不对运行区内的固件进行更新。其中,MCU接收新版本固件的方式既可以为通过有线方式进行接收,例如通过线缆接收,也可以为通过无线方式进行接收,例如通过OTA技术(Over-the-Air Technology,空中下载技术)接收。备份区内存储有旧版本固件,在MCU运行过程中,若检测到正在运行的当前版本固件错误,则复制备份区内的旧版本固件至运行区,并运行被复制到运行区内的该旧版本固件,以使得MCU恢复正常工作,在将备份区内的旧版本固件复制到运行区前,可以先检测该旧版本固件是否正确,并在该旧版本固件正确的情况下才执行复制步骤。
图2是本发明实施方式提供的在检测到新版本固件正确的情况下所执行步骤的流程图。如图2所示,在本发明一种可选实施方式中,所述方法还包括:在检测到新版本固件正确的情况下,执行以下步骤:
步骤S201,清空备份区,将运行区内的当前版本固件复制到备份区内;
步骤S202,将升级交换区内的新版本固件复制到运行区内;
步骤S203,运行运行区内存储的新版本固件。
其中,上述步骤是顺序进行的,即在上一步骤成功完成后才执行下一步骤。在确认新版本固件正确的情况下,通过上述步骤,能够完成MCU的固件升级更新。通过将原来运行在运行区内的固件复制到备份区作为备用,可以在运行区内的固件出现错误时,将备份区内的固件复制回运行区,以保证MCU能够及时恢复正常。
在本发明一种可选实施方式中,所述存储模块还包括标识区,该标识区用于存储升级标识、第一标识和第二标识。其中,升级标识用于指示升级交换区内是否有新版本固件,其中该新版本固件为高于运行区内的当前版本固件的固件;第一标识用于指示步骤S201是否完成;第二标识用于指示步骤S202是否完成。
具体地,当MCU需要升级固件时,先将接收到的新版本固件暂存到升级交换区,若升级交换区存在之前暂存的固件,则可以先清除该固件后再开始接收新版本固件。当MCU完成新版本固件接收后,即新版本固件下载完成后,会在标识区生成升级标识。并且当检测到标识区内存在升级标识后会检测升级交换区内暂存的新版本固件是否正确。在确定新版本固件正确的情况下,会清空备份区,并将运行区内的当前版本固件复制到备份区内,并且复制完成后在标识区生成第一标识。随后,会将升级交换区内的新版本固件复制到运行区内,并且在复制完成后在标识区生成第二标识,在标识区生成第二标识的同时可以清除第一标识。之后,运行运行区内存储的新版本固件,并清除标识区内的升级标识。
上述步骤S201-S203都是顺序进行的,如果在执行某一步骤的过程中出现异常(例如MCU掉电等)从而导致该步骤没有完成,则需要重新执行该未完成的步骤,而通过检测标识区内的标识,可以判断执行到了哪一步骤。具体地,当执行步骤S201的过程中出现中断时,会重复执行步骤S201;当执行步骤S202的过程中出现中断时,会重复执行步骤S202。
在本发明一种可选实施方式中,所述方法还包括:在所述标识区内存储有所述升级标识的情况下,检测所述升级交换区内的所述新版本固件是否正确;以及在所述标识区内没有存储所述升级标识的情况下,检测所述运行区内的所述当前版本固件是否正确。也就是说,标识区内的升级标识可以用于指示MCU是处于升级状态还是一般工作状态,在MCU处于升级状态的情况下,检测升级交换区内的新版本固件,在MCU处于一般工作状态下,检测运行区内的当前版本固件。
在本发明一种可选实施方式中,MCU的监控芯片在监控到当前版本固件运行异常时,重启MCU,通过检测该MCU异常重启的次数来确定所述运行区内的所述当前版本固件是否错误。
具体地,每次MCU启动时进行检测,首先检测标识区内是否有升级标识,若标识区内有升级标识,则表示本次重启是在新版本固件下载到升级交换区后进行的重启,若标识区内没有升级标识,则检测本次系统是否为运行区内的固件异常导致的重启,并记录异常重启的次数,当检测到MCU在预设时间内异常重启超过预设次数时,确定在运行区内的当前版本固件存在错误,该预设次数例如可以是5次,该预设时间可以例如为60分钟。所述预设时间内异常重启超过预设次数可指所述预设时间内连续异常重启超过预设次数,还可指所述预设时间内非连续异常重启超过预设次数。优选地,只有在检测到MCU在预设时间内连续异常重启超过预设次数时,才会确定在运行区内的当前版本固件存在错误。
如图3A和图3B所示,在一个可选实施方式中,该MCU可以是STM32L476RG微控制器,该STM32L476RG微控制器的Flash存储器可以包括2个bank,每个各512k,采用双bank模式(配置BOOT0脚为0,从Main Flash启动;配置选项字节DUALBANK为1,从而采用双Bank模式)。Flash存储器的分区如图3A和图3B所示,图中具体分区的偏移和大小仅为一种可选实施方式,其可以根据实际需要进行调整,该Flash存储器大致分为以下几个区:
运行区:用于固件中应用程序的运行。在升级交换区内的新版本固件下载完成后重启MCU,随后MCU中的BootLoader程序将会把升级交换区内的新版本固件复制到运行区中,然后运行。
备份区:用于存储旧版本固件,在运行区内的固件不能正常工作时,将备份区内的旧版本固件复制到运行区中,然后运行。
数据区:用于存储固件中的应用程序在运行过程中需要掉电保存的数据。
扩展区:用于将来扩展。
升级交换区:用于暂存新版本固件
BootLoader数据区:用于存储BootLoader程序进行逻辑判断的标识信息。在新版本固件成功下载到升级交换区后,在BootLoader数据区写入升级标识信息(例如升级标识以及新版本固件的校验值和大小等)。
BootLoader程序区:主要用于升级后各步骤的执行以及跳转到正确位置执行运行区内固件的应用程序。
蓝牙升级数据区:在对蓝牙固件进行升级时,用于存储蓝牙升级标识信息。
其中,固件可以包括APP固件和蓝牙固件等。在MCU上电启动后,首先检查BootLoader数据区是否存在升级标识,如果升级标识存在,检测升级交换区的固件是否正确,在检测到升级交换区固件正确的情况下,执行以下步骤:
步骤301,复制运行区中的当前版本固件到备份区,复制完成后生成第一标识,并将该第一标识存储在BootLoader数据区;
步骤302,复制升级交换区中的新版本固件到运行区,复制完成后,清除BootLoader数据区中的第一标识并生成第二标识;
步骤303,清除BootLoader数据区中的升级标识信息(例如升级标识以及新版本固件的校验值和大小等),跳转至运行区执行运行区中固件的应用程序。
在检测到升级交换区的固件错误的情况下,则表示升级失败,清除BootLoader数据区中的升级标识信息,并跳转至运行区继续执行运行区内的当前版本固件。
如果升级标识不存在,则表示是MCU处于非升级状态的启动,此时检测MCU是否是为异常重启(比如由独立看门狗复位导致的重启等),并且记录MCU异常重启的次数。在检测到MCU一个小时内连续异常重启5次以上,并且检测到备份区内旧版本固件正确时,将就版本固件复制到运行区,运行该旧版本固件,抛弃运行区内的问题固件。若不满足上述条件,则跳转到运行区正常运行当前版本固件的应用程序。因此,本实施方式可以通过Bootloader程序检测这类由于异常导致的不断重新启动的错误,并在确定当前版本固件异常时,自动恢复旧版本固件,保证系统正常运行,提高MCU的整体可靠性。
在本发明的上述方案中,在检测到新版本固件错误的情况下,继续执行运行区内的当前版本固件,在检测到当前版本固件错误的情况下,复制备份区内的旧版本固件至运行区,并执行被复制到运行区内的旧版本固件,因此可以保证MCU的固件无论是在升级过程中出现错误还是在运行出现错误,都不会影响MCU的正常工作,从而保证了MCU的稳定运行,提高了MCU的可靠性。此外,在固件升级过程中,可以通过检测标识区内的标识来确定升级进度,从而在升级过程中出现异常时,能够确定出现异常的步骤,以重新执行该步骤。
以上结合附图详细描述了本发明实施例的可选实施方式,但是,本发明实施例并不限于上述实施方式中的具体细节,在本发明实施例的技术构思范围内,可以对本发明实施例的技术方案进行多种简单变型,这些简单变型均属于本发明实施例的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明实施例对各种可能的组合方式不再另行说明。
此外,本发明实施例的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明实施例的思想,其同样应当视为本发明实施例所公开的内容。

Claims (18)

1.一种MCU,其特征在于,所述MCU包括:
存储模块,所述存储模块包括升级交换区、备份区和运行区,其中,所述升级交换区用于存储待升级的新版本固件;所述备份区用于存储旧版本固件;所述运行区用于存储当前版本固件;
检测模块,用于检测所述新版本固件和/或当前版本固件是否错误;以及
执行模块,用于接收来自所述检测模块的检测结果,并执行以下操作中的一者或多者:
操作一:在所述检测模块检测到所述新版本固件错误的情况下,继续执行所述运行区内的所述当前版本固件;
操作二:在所述检测模块检测到所述当前版本固件错误的情况下,复制所述备份区内的所述旧版本固件至所述运行区,并执行被复制到所述运行区内的所述旧版本固件。
2.根据权利要求1所述的MCU,其特征在于,所述执行模块还用于在所述检测模块检测到所述新版本固件正确的情况下,执行以下步骤:
步骤S201,清空所述备份区,将所述运行区内的所述当前版本固件复制到所述备份区内;
步骤S202,将所述升级交换区内的所述新版本固件复制到所述运行区内;
步骤S203,运行所述运行区内存储的所述新版本固件。
3.根据权利要求2所述的MCU,其特征在于,所述存储模块还包括标识区,所述标识区用于存储:
升级标识,用于指示所述升级交换区内是否有所述新版本固件,其中所述新版本固件为高于所述运行区内的所述当前版本固件的固件;
第一标识,用于指示所述步骤S201是否完成;以及
第二标识,用于指示所述步骤S202是否完成。
4.根据权利要求3所述的MCU,其特征在于,所述执行模块还用于下载所述新版本固件到所述升级交换区,并在所述新版本固件下载完成后,在所述标识区内写入所述升级标识。
5.根据权利要求4所述的MCU,其特征在于,所述检测模块还用于:
在所述标识区内存储有所述升级标识的情况下,检测所述升级交换区内的所述新版本固件是否正确;以及
在所述标识区内没有存储所述升级标识的情况下,检测所述运行区内的所述当前版本固件是否正确。
6.根据权利要求3所述的MCU,其特征在于,所述执行模块还用于:
在完成步骤S201后,在所述标识区内写入所述第一标识;以及
在完成步骤S202后,在所述标识区内删除所述第一标识和所述升级标识并写入所述第二标识。
7.根据权利要求1所述的MCU,其特征在于,所述检测模块,还用于通过检测所述升级交换区内的所述新版本固件的栈顶位置和/或校验值来判断所述新版本固件是否错误。
8.根据权利要求1所述的MCU,其特征在于,所述MCU还包括监控芯片,所述监控芯片用于在监控到当前版本固件运行异常时,重启所述MCU,所述检测模块通过检测所述MCU异常重启的次数来确定所述运行区内的所述当前版本固件是否错误。
9.根据权利要求2所述的MCU,其特征在于,
当所述执行模块执行所述步骤S201的过程中出现中断时,所述执行模块还用于重复执行所述步骤S201;以及
当所述执行模块执行所述步骤S202的过程中出现中断时,所述执行模块还用于重复执行所述步骤S202。
10.一种用于在MCU固件出错后自动恢复的方法,其特征在于,所述方法包括:
检测新版本固件和/或当前版本固件是否错误,其中所述MCU的存储模块包括升级交换区、备份区和运行区,所述升级交换区用于存储待升级的所述新版本固件,所述备份区用于存储旧版本固件,所述运行区用于存储所述当前版本固件;以及
以下步骤中的一者或多者:
步骤S101:在检测到所述新版本固件错误的情况下,继续执行所述运行区内的所述当前版本固件;
步骤S102:在检测到所述当前版本固件错误的情况下,复制所述备份区内的所述旧版本固件至所述运行区,并执行被复制到所述运行区内的所述旧版本固件。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:在检测到所述新版本固件正确的情况下,执行以下步骤:
步骤S201,清空所述备份区,将所述运行区内的所述当前版本固件复制到所述备份区内;
步骤S202,将所述升级交换区内的所述新版本固件复制到所述运行区内;
步骤S203,运行所述运行区内存储的所述新版本固件。
12.根据权利要求11所述的方法,其特征在于,所述存储模块还包括标识区,所述标识区用于存储:
升级标识,用于指示所述升级交换区内是否有所述新版本固件,其中所述新版本固件为高于所述运行区内的所述当前版本固件的固件;
第一标识,用于指示所述步骤S201是否完成;
第二标识,用于指示所述步骤S202是否完成。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:下载所述新版本固件到所述升级交换区,并在所述新版本固件下载完成后,在所述标识区内写入所述升级标识。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:
在所述标识区内存储有所述升级标识的情况下,检测所述升级交换区内的所述新版本固件是否正确;以及
在所述标识区内没有存储所述升级标识的情况下,检测所述运行区内的所述当前版本固件是否正确。
15.根据权利要求12所述的方法,其特征在于,所述方法还包括:
在完成步骤S201后,在所述标识区内写入所述第一标识;以及
在完成步骤S202后,在所述标识区内删除所述第一标识和所述升级标识并写入所述第二标识。
16.根据权利要求10所述的方法,其特征在于,通过检测所述升级交换区内的所述新版本固件的栈顶位置和/或校验值来判断所述新版本固件是否错误。
17.根据权利要求10所述的方法,其特征在于,所述MCU的监控芯片在监控到当前版本固件运行异常时,重启所述MCU,通过检测所述MCU异常重启的次数来确定所述运行区内的所述当前版本固件是否错误。
18.根据权利要求11所述的方法,其特征在于,所述方法还包括:
在所述步骤S201出现中断时,重复执行所述步骤S201;
在所述步骤S202出现中断时,重复执行所述步骤S202。
CN201711167145.0A 2017-11-21 2017-11-21 用于在mcu固件出错后自动恢复的方法和mcu Pending CN107908496A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711167145.0A CN107908496A (zh) 2017-11-21 2017-11-21 用于在mcu固件出错后自动恢复的方法和mcu

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711167145.0A CN107908496A (zh) 2017-11-21 2017-11-21 用于在mcu固件出错后自动恢复的方法和mcu

Publications (1)

Publication Number Publication Date
CN107908496A true CN107908496A (zh) 2018-04-13

Family

ID=61846712

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711167145.0A Pending CN107908496A (zh) 2017-11-21 2017-11-21 用于在mcu固件出错后自动恢复的方法和mcu

Country Status (1)

Country Link
CN (1) CN107908496A (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109002317A (zh) * 2018-06-27 2018-12-14 上海有个机器人有限公司 一种pcba固件升级方法及系统、pcba
CN109766207A (zh) * 2019-01-04 2019-05-17 日立楼宇技术(广州)有限公司 固件远程升级的恢复方法、装置、监控设备和存储介质
CN111158738A (zh) * 2019-12-30 2020-05-15 青岛歌尔智能传感器有限公司 耳机固件的升级方法、装置及可读存储介质
CN111209059A (zh) * 2020-01-14 2020-05-29 中国北方车辆研究所 一种嵌入式软件多版本控制系统及方法
CN111221553A (zh) * 2019-12-31 2020-06-02 深圳优地科技有限公司 一种固件升级的方法及装置
CN112181466A (zh) * 2020-09-08 2021-01-05 上海深聪半导体有限责任公司 一种语音空调固件云端升级方法及系统
CN112433775A (zh) * 2019-08-20 2021-03-02 比亚迪股份有限公司 启动应用程序的方法、装置、存储介质和电子设备
CN112559349A (zh) * 2020-12-16 2021-03-26 合安科技技术有限公司 一种程序的运行方法及运行装置
CN113434185A (zh) * 2021-06-29 2021-09-24 成都中微达信科技有限公司 一种在线升级处理器应用程序的方法及其系统
CN114143197A (zh) * 2021-11-29 2022-03-04 武汉天喻信息产业股份有限公司 物联网设备ota升级方法、装置、设备及可读存储介质
CN115220758A (zh) * 2022-06-24 2022-10-21 武汉联特科技股份有限公司 一种单片机固件在线升级的方法
CN117130639A (zh) * 2023-10-26 2023-11-28 江苏华鲲振宇智能科技有限责任公司 一种bmc集群管理单板mcu固件升级方法及系统

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109002317A (zh) * 2018-06-27 2018-12-14 上海有个机器人有限公司 一种pcba固件升级方法及系统、pcba
CN109766207A (zh) * 2019-01-04 2019-05-17 日立楼宇技术(广州)有限公司 固件远程升级的恢复方法、装置、监控设备和存储介质
CN112433775A (zh) * 2019-08-20 2021-03-02 比亚迪股份有限公司 启动应用程序的方法、装置、存储介质和电子设备
CN111158738A (zh) * 2019-12-30 2020-05-15 青岛歌尔智能传感器有限公司 耳机固件的升级方法、装置及可读存储介质
CN111158738B (zh) * 2019-12-30 2023-10-24 青岛歌尔智能传感器有限公司 耳机固件的升级方法、装置及可读存储介质
CN111221553A (zh) * 2019-12-31 2020-06-02 深圳优地科技有限公司 一种固件升级的方法及装置
CN111209059B (zh) * 2020-01-14 2023-03-03 中国北方车辆研究所 一种嵌入式软件多版本控制系统及方法
CN111209059A (zh) * 2020-01-14 2020-05-29 中国北方车辆研究所 一种嵌入式软件多版本控制系统及方法
CN112181466A (zh) * 2020-09-08 2021-01-05 上海深聪半导体有限责任公司 一种语音空调固件云端升级方法及系统
CN112181466B (zh) * 2020-09-08 2024-04-16 深聪半导体(江苏)有限公司 一种语音空调固件云端升级方法及系统
CN112559349A (zh) * 2020-12-16 2021-03-26 合安科技技术有限公司 一种程序的运行方法及运行装置
CN112559349B (zh) * 2020-12-16 2024-04-09 合安科技技术有限公司 一种程序的运行方法及运行装置
CN113434185A (zh) * 2021-06-29 2021-09-24 成都中微达信科技有限公司 一种在线升级处理器应用程序的方法及其系统
CN114143197A (zh) * 2021-11-29 2022-03-04 武汉天喻信息产业股份有限公司 物联网设备ota升级方法、装置、设备及可读存储介质
CN114143197B (zh) * 2021-11-29 2024-04-02 武汉天喻信息产业股份有限公司 物联网设备ota升级方法、装置、设备及可读存储介质
CN115220758A (zh) * 2022-06-24 2022-10-21 武汉联特科技股份有限公司 一种单片机固件在线升级的方法
CN117130639A (zh) * 2023-10-26 2023-11-28 江苏华鲲振宇智能科技有限责任公司 一种bmc集群管理单板mcu固件升级方法及系统
CN117130639B (zh) * 2023-10-26 2024-03-08 江苏华鲲振宇智能科技有限责任公司 一种bmc集群管理单板mcu固件升级方法及系统

Similar Documents

Publication Publication Date Title
CN107908496A (zh) 用于在mcu固件出错后自动恢复的方法和mcu
CN106020865B (zh) 一种系统升级方法和装置
JP4482029B2 (ja) 無線基地局および無線基地局の運用方法
CN104918114B (zh) 一种操作系统升级方法及装置
CN110333891A (zh) 基于物联网的增强型ota升级的方法
US20090265403A1 (en) File system
CN103699421A (zh) 嵌入式设备系统升级方法及其装置
CN111142911B (zh) 具有异常恢复功能的嵌入式系统及其升级方法
CN107153559A (zh) 一种电子设备的应用程序升级方法
CN108197476B (zh) 一种智能终端设备的漏洞检测方法及装置
CN109062598A (zh) 一种安全的ota升级方法及系统
CN108804118A (zh) 固件升级方法、设备及存储介质
CN110633091A (zh) 一种电子模块及其软件无线升级方法
CN108205446A (zh) 固件修复方法及装置
CN106406955A (zh) RSU设备bootloader程序升级的方法、装置
CN107566169A (zh) 一种基于openwrt的固件升级方法及路由器
CN105354063A (zh) 程序在线升级方法及系统
CN104536841B (zh) 一种Android系统Data分区自修复方法及系统
CN107678762A (zh) 一种系统版本升级方法及装置
CN110806884A (zh) 一种操作系统故障的修复方法和装置
CN106201584B (zh) 版本升级方法及终端设备
CN104427120B (zh) 通信终端及其非易失性数据的处理方法
CN109375953B (zh) 一种操作系统启动方法及装置
CN105183580A (zh) 一种引导程序的存储方法、故障恢复方法及设备
CN106959873A (zh) Gnss接收机系统升级方法

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