CN105760165B - 一种mcu自我备份加载刷新的方法 - Google Patents

一种mcu自我备份加载刷新的方法 Download PDF

Info

Publication number
CN105760165B
CN105760165B CN201610095745.XA CN201610095745A CN105760165B CN 105760165 B CN105760165 B CN 105760165B CN 201610095745 A CN201610095745 A CN 201610095745A CN 105760165 B CN105760165 B CN 105760165B
Authority
CN
China
Prior art keywords
area
app
load
data
boot
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
CN201610095745.XA
Other languages
English (en)
Other versions
CN105760165A (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.)
Shenzhen Weimei New Energy Co Ltd
Original Assignee
Shenzhen Weimei New Energy 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 Shenzhen Weimei New Energy Co Ltd filed Critical Shenzhen Weimei New Energy Co Ltd
Priority to CN201610095745.XA priority Critical patent/CN105760165B/zh
Publication of CN105760165A publication Critical patent/CN105760165A/zh
Application granted granted Critical
Publication of CN105760165B publication Critical patent/CN105760165B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种MCU自我备份加载刷新的方法,包括下列步骤:将MCU的FLASH分为Boot区、App区、Bak区和Flag区;MCU上电后首先在Boot区中读取Flag区中的标志位;判断进入App区还是在Boot区完成加载过程;如是App区,则往Flag区写入加载标志、软硬件版本号及模块地址信息后重启;如是Boot区,则判断是新加载还是之前加载失败恢复App数据;恢复App区数据则直接从Bak区中读取数据并更新到App区;新加载,则输入加载密钥,校验通过则将相关数据写入Bak区;从Bak区中取出数据写入App区,并更新App区代码;终止加载过程,重新启动并进入当前App区执行App程序。本发明仅靠MCU自身即可完成备份加载过程,节省外设成本也提高了加载功能的可靠性。

Description

一种MCU自我备份加载刷新的方法
技术领域
本发明涉及应用程序备份和更新的方法,尤其涉及一种BootLoader进行在线加载刷新的通讯电源模块,通过MCU自带的大容量内存进行加载过程中的应用程序自我备份和更新的方法。
背景技术
通讯电源模块开发及市场应用中常常涉及应用程序升级,以修复BUG或增加新功能,此时会用到引导装载程序(BootLoader)加载刷新应用程序,常规的加载刷新方式是直接对APP区程序进行擦除,进而刷新程序,这种刷新方式简单,但当刷新失败时,模块无法继续正常工作,会一直处于等待刷新状态,直到人工再进行强制刷新,恢复正常APP程序才能继续工作。对于在偏远地方无人值守的大型通讯电源系统,通常一个系统框中有好几十个模块,利用此类刷新方式由于某些原因造成局部模块刷新失败时会导致这些模块宕机继而影响整个系统工作,此时需要人工现场处理,这样无疑影响客户体验和增加处理成本。
当前处理这种问题的方式多是通过增加一个外扩闪存(FLASH)或电可擦可编程只读存储器(EEPROM)之类的存储芯片进行程序备份,加载时会先将相关代码存入这类芯片,刷新时再从外扩芯片中读取相关代码并更新自身APP区,当更新失败时会自动重启并继续从外扩芯片中读取相关代码完成自我刷新。此类刷新方式解决了前面提出的问题,但通过外扩方式进行加载刷新一方面增加了成本,另一方面也不可靠,当自身芯片或外扩芯片线路受到干扰或异常时,将影响程序备份甚至导致彻底无法进行加载刷新。
发明内容
本发明针对上述现有技术存在的缺陷,提出一种单片机(MCU)自我备份加载刷新的方法。
本发明提出的技术方案是,一种MCU自我备份加载刷新的方法,包括下列步骤:
步骤1. 将MCU的FLASH分为以下四个用于存储不同的功能数据的部分:Boot区,用于执行加载过程;App区,用于存储正常应用程序代码;Bak区,用于存储应用程序代码备份数据;Flag区,用于掉电或重启过程中的数据保存;
步骤2.MCU上电后首先进入Boot区,在Boot区中读取Flag区中的标志位;
步骤3.判断进入App区还是在Boot区完成加载过程;
如果进入App区,则在代码执行过程中接收到加载请求后,判断软硬件版本号,当版本号满足要求时,往Flag区写入加载标志、软硬件版本号及模块地址信息后重启;当进入Boot区,则进入步骤4,开始执行加载过程;
步骤4.判断是新加载还是之前加载失败恢复App数据,如是恢复App区数据则直接从Bak区中读取数据并更新到App区;如果是新加载,则要求输入加载密钥;
步骤5.判断加载密钥是否正确,加载密钥匹配正确后开始接收数据并校验,校验通过则将相关数据写入Bak区;加载密钥不匹配则转步骤7;
步骤6.从Bak区中取出数据写入App区,并更新App区代码;
步骤7.终止加载过程,重新启动并进入当前App区执行App程序;
步骤8.重新启动,完成MCU的自我备份加载刷新。
所述的应用代码备份空间和正常执行空间位于同一块FLASH中,无需特意进行外加扩展。
所述的Boot区的BootLoader引导程序可以自主判断从Bak区恢复App区数据(即刷新失败可自主从Bak区恢复数据以确保系统正常工作)或是执行新的加载刷新请求。
由于 Boot区中的BootLoader引导程序自主判断当前App区数据的有效性并对其进行刷新或恢复,有效的避免模块在线加载刷新失败导致模块宕机不工作的情况。
通过对App区数据进行CRC校验计算,并与Flag区中保存的上一次加载刷新成功的数据CRC码进行比较,不同,则从Bak区中恢复数据,相同则直接进入App中执行应用程序。
本发明的优点是,相对于通过外扩空间方式实现备份加载的方案,本方案仅靠MCU自身即可完成备份加载过程,节省外设成本也提高了加载功能的可靠性。
附图说明
图1为本发明方法的流程图。
具体实施方式
下面结合附图和实施例对发明进行详细的说明。
本发明提出的方法通过选择满足工作需求的相关芯片的大容量FLASH版本,利用自身的FLASH进行应用程序的备份加载刷新,无需任何外扩芯片,以达到降低实现成本及增加备份可靠性的目的。
本发明首先需要选择合适内存容量的MCU,内存空间大小的选择要考虑如下几点:
1.备份空间大小要足够存放应用程序空间数据;
2.本发明无需任何外扩芯片,因此加载刷新过程中掉电需要保存的数据(如加载标志、模块地址及软硬件版本号等)需要存于自带FLASH中,鉴于常规FLASH特殊的操作方式(写入前需要先擦除、目前大部分的MCU擦除时只能整区擦除),选择的MCU内存需要有一个独立的区可以用来存放这些掉电保留数据;
3.需要有一个独立的FLASH区用于加载相关代码的存放。
总结起来本发明需要将MCU的FLASH分为如下几个区:Boot区(执行加载过程)、App区(正常应用代码空间)、Bak区(应用代码备份空间)、Flag区(掉电数据保存空间),划分完后整个实现过程如下:
MCU上电后首先进入Boot区,在Boot区中读取Flag区中的标志位,判断进入App区还是在Boot区完成加载过程;
如果进入App区,则在代码执行过程中接收到加载请求后,判断软硬件版本号,当版本号满足要求时,往Flag区写入加载标志、软硬件版本号及模块地址等信息后重启,进入Boot区开始执行加载过程;
如果进入Boot区则判断是新加载还是之前加载失败恢复App数据,恢复App区数据则直接从Bak区中读取数据并更新到App区;如果是新加载,加载前软件会先判断加载密钥,加载密钥匹配后开始接收数据并校验,校验通过则将相关数据写入Bak区,所有数据写入Bak区后,再从Bak区中取出数据写入App区,进而更新App区代码;
最后重新启动,完成微控制单元(MCU)的自我备份加载刷新。
上述实施例仅用于说明本发明的具体实施方式。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和变化,这些变形和变化都应属于本发明的保护范围。

Claims (4)

1.一种MCU自我备份加载刷新的方法,其特征在于,包括下列步骤:
步骤1.将MCU的FLASH分为以下四个用于存储不同的功能数据的部分:Boot区,用于执行加载过程;App区,用于正常应用代码空间;Bak区,用于应用代码备份空间;Flag区,用于掉电数据保存空间;
所述的应用代码备份空间和正常执行空间位于同一块FLASH中,无需特意进行外加扩展;
步骤2.MCU上电后首先进入Boot区,在Boot区中读取Flag区中的标志位;
步骤3.判断进入App区还是在Boot区完成加载过程;
如果进入App区,则在代码执行过程中接收到加载请求后,判断软硬件版本号,当版本号满足要求时,往Flag区写入加载标志、软硬件版本号及模块地址信息后重启,进入Boot区开始执行加载过程;当进入Boot区,则进入步骤4,开始执行加载过程;
步骤4.判断是新加载还是之前加载失败恢复App数据,如是恢复App区数据则直接从Bak区中读取数据并更新到App区;如果是新加载,则要求输入加载密钥;
步骤5.判断加载密钥是否正确,加载密钥匹配正确后开始接收数据并校验,校验通过则将相关数据写入Bak区;加载密钥不匹配则转步骤7;
步骤6.从Bak区中取出数据写入App区,并更新App区代码;
步骤7.终止加载过程,重新启动并进入当前App区执行App程序;
步骤8.重新启动,完成MCU的自我备份加载刷新。
2.如权利要求1所述的方法,其特征在于:所述的Boot区的BootLoader引导程序可以自主判断从Bak区恢复App区数据,或是执行新的加载刷新请求。
3.如权利要求2所述的方法,其特征在于: Boot区中的BootLoader引导程序自主判断当前App区数据的有效性并对其进行刷新或恢复,有效的避免模块在线加载刷新失败导致模块宕机不工作的情况。
4.如权利要求3所述的方法,其特征在于:通过对App区数据进行CRC校验计算,并与Flag区中保存的上一次加载刷新成功的数据CRC码进行比较,不同,则从Bak区中恢复数据,相同则直接进入App中执行应用程序。
CN201610095745.XA 2016-02-22 2016-02-22 一种mcu自我备份加载刷新的方法 Active CN105760165B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610095745.XA CN105760165B (zh) 2016-02-22 2016-02-22 一种mcu自我备份加载刷新的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610095745.XA CN105760165B (zh) 2016-02-22 2016-02-22 一种mcu自我备份加载刷新的方法

Publications (2)

Publication Number Publication Date
CN105760165A CN105760165A (zh) 2016-07-13
CN105760165B true CN105760165B (zh) 2019-09-06

Family

ID=56329847

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610095745.XA Active CN105760165B (zh) 2016-02-22 2016-02-22 一种mcu自我备份加载刷新的方法

Country Status (1)

Country Link
CN (1) CN105760165B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108304140B (zh) * 2017-01-12 2023-04-07 中兴通讯股份有限公司 闪存数据管理方法、装置及微控制器
CN109240721A (zh) * 2018-08-24 2019-01-18 江苏恒宝智能系统技术有限公司 一种mcu在线升级的方法
CN110175039A (zh) * 2019-04-26 2019-08-27 潍坊歌尔电子有限公司 在线升级方法、设备、可读存储介质及电子设备
CN110231952B (zh) * 2019-06-17 2023-01-24 合肥巨一动力系统有限公司 一种ecu程序备份及循环升级控制方法及装置
CN110618825B (zh) * 2019-08-02 2023-06-13 惠州市德赛西威汽车电子股份有限公司 一种车机Boot Loader的自更新方法
CN112040476B (zh) * 2020-08-21 2023-08-15 北京三一智农数据技术有限公司 物联网终端的升级方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063318A (zh) * 2010-12-22 2011-05-18 Tcl通力电子(惠州)有限公司 一种供电mcu的升级方法
CN103246536A (zh) * 2013-04-28 2013-08-14 常州南京大学高新技术研究院 物联定位系统的固件无线升级方法
CN103605552A (zh) * 2013-11-29 2014-02-26 Tcl通力电子(惠州)有限公司 Mcu的升级方法和装置
CN103761125A (zh) * 2014-01-06 2014-04-30 凯迈(洛阳)电子有限公司 一种程序升级的应用系统和方法
CN104503804A (zh) * 2014-12-31 2015-04-08 天津市通卡公用网络系统有限公司 一种在线更新单片机程序的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063318A (zh) * 2010-12-22 2011-05-18 Tcl通力电子(惠州)有限公司 一种供电mcu的升级方法
CN103246536A (zh) * 2013-04-28 2013-08-14 常州南京大学高新技术研究院 物联定位系统的固件无线升级方法
CN103605552A (zh) * 2013-11-29 2014-02-26 Tcl通力电子(惠州)有限公司 Mcu的升级方法和装置
CN103761125A (zh) * 2014-01-06 2014-04-30 凯迈(洛阳)电子有限公司 一种程序升级的应用系统和方法
CN104503804A (zh) * 2014-12-31 2015-04-08 天津市通卡公用网络系统有限公司 一种在线更新单片机程序的方法

Also Published As

Publication number Publication date
CN105760165A (zh) 2016-07-13

Similar Documents

Publication Publication Date Title
CN105760165B (zh) 一种mcu自我备份加载刷新的方法
US8423991B2 (en) Embedded network device and firmware upgrading method
CN108646982B (zh) 一种基于ubifs的数据自动修复方法及装置
CN106227680B (zh) 一种数据处理及防掉电数据保护方法
CN105930236A (zh) 一种基于BMS Bootloader升级的应用程序版本回退方法
CN101650662A (zh) 一种嵌入式系统的存储器件、固件启动及升级方法
CN103853566B (zh) Bios更新系统及方法
CN102799497A (zh) Nvram数据恢复系统及方法
CN104516959A (zh) 一种管理数据库日志的方法及装置
CN102163155A (zh) 存储设备的升级方法及升级控制装置
CN109582332B (zh) 互联网摄像机的系统升级方法及装置
CN111142911A (zh) 具有异常恢复功能的嵌入式系统及其升级方法
US20070011416A1 (en) Data storage device and medium and related method of storing backup data
CN102541690A (zh) 一种智能卡及其恢复数据方法
CN104424047A (zh) 一种nvram数据恢复方法和装置
CN107566169A (zh) 一种基于openwrt的固件升级方法及路由器
CN111651304A (zh) 基于双芯智能电表的软件恢复方法、装置和计算机设备
CN112433769A (zh) 一种bmc启动方法、装置、计算机设备及存储介质
CN103455750B (zh) 一种嵌入式设备的高安验证方法及装置
CN108170456B (zh) 电子设备的固件升级方法及装置
CN109947445A (zh) 一种固件升级方法及系统
CN111124294B (zh) 一种扇区映射信息的管理方法及装置、存储介质和设备
CN110928726A (zh) 一种基于看门狗及pxe的嵌入式系统自恢复方法及系统
CN110119285A (zh) 一种低端单片机软件升级方法及相关装置
CN104699514A (zh) 遥控器端系统的更新方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 518000, 5 floor, Fengyun mansion, five road north, Nanshan District science and Technology Park, Shenzhen, Guangdong

Applicant after: Shenzhen Vmax Power Co., Ltd.

Address before: 518000, 4 floor, Fengyun mansion, five road north, Nanshan District science and Technology Park, Shenzhen, Guangdong

Applicant before: Shenzhen Vmax Power Co., Ltd.

CB02 Change of applicant information
CB02 Change of applicant information

Address after: 518000, 5th Floor, Fengyun Building, No. 5 Road, North District, Nanshan Science Park, Shenzhen City, Guangdong Province

Applicant after: Shenzhen Weimei New Energy Co., Ltd.

Address before: 518000, 5th Floor, Fengyun Building, No. 5 Road, North District, Nanshan Science Park, Shenzhen City, Guangdong Province

Applicant before: Shenzhen Vmax Power Co., Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant