CN113127035A - 一种基于单片机的可回溯的升级方法 - Google Patents
一种基于单片机的可回溯的升级方法 Download PDFInfo
- Publication number
- CN113127035A CN113127035A CN202110406869.6A CN202110406869A CN113127035A CN 113127035 A CN113127035 A CN 113127035A CN 202110406869 A CN202110406869 A CN 202110406869A CN 113127035 A CN113127035 A CN 113127035A
- Authority
- CN
- China
- Prior art keywords
- area
- application program
- upgrading
- crc
- chip microcomputer
- 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.)
- Withdrawn
Links
Images
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/24—Resetting means
-
- 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于单片机的可回溯的升级方法,包括以下步骤:单片机上电,运行BOOT代码;进行上电复位检测,包括以下步骤:对应用程序区进行CRC计算,与数据存储区的CRC比对;对比通过:执行应用程序,应用程序运行过程中若收到升级指令则擦除备份区,对备份区进行写入操作,若升级数据暂停则停止写入flash,继续执行上述步骤;若收到结束升级指令与CRC值,则写入CRC值至数据存储区,执行上述步骤,此时,进行软件复位检测;比对不通过:报错“flash损坏”,每次开机BMU均会对应用程序区进行校验,防止意外的flash损坏导致运行后出现意外故障;升级失败后可自动退回应用程序继续工作;Boot内代码极少,只有搬运flash的代码,易于维护,不易出错。
Description
技术领域
本发明涉及单片机技术领域,具体为一种基于单片机的可回溯的升级方法。
背景技术
目前单片机的应用日益广泛,其应用范围包括工业自动化、仪器仪表、家用电器、信息和通信产品及军事装备等。为了提高产品的竞争力,设备厂商所生产的产品在其售后服务上均最大程度地提供其最新的应用软件,这就要求设备支持自动给单片机升级的能力。
现有技术中,对单片机的在线升级方式可能会由于网络波动、升级中途掉电、通讯线路不稳导致应用程序丢失。虽然可以继续升级,但是程序丢失之后系统将会报通讯丢失错误,暂时会处于故障模式。如果一直无法升级成功,系统将会持续处于故障模式。
由于设备内的单片机的数量多、种类不一,CN109358887A公布了一种单片机程序的在线升级方法、装置及系统,针对在对不同的单片机的程序进行升级时,会出现其他单片机对应的程序文件升级到另一不同功能的单片机的情况,从而导致升级失败或者异常,具体的,是通过将MCU控制器的内部程序Flash进行分区,第一区域用于存储引导加载程序,第二区域用于存储应用程序,第三区域用于存储标志位信息可以通过应用程序来执行与升级和其他功能,引导加载程序用来根据第二标志位信息的内容选择是否进行在线升级,并将待更新的程序数据更新至程序数据区,进行分区以后,使得单片机即可以运行具有在线升级功能的程序,也能运行应用程序;通过在线升级功能程序,对自身的应用程序进行在线升级。但是,上述公布的方法,不能对升级过程进行回溯,即,当出现网络波动、升级中途掉电、通讯线路不稳等因素导致的应用程序丢失,同样会造成升级失败,并且,因为一直无法升级成功,系统将会持续处于故障模式,所以,针对于上述因素造成的升级失败,需要一种可回溯的升级方法。
有些单片机有一个很强大的功能是支持应用程序中编程在线升级,即应用程序自己可以往程序存储器里写数据或修改程序。单片机的升级方法为:单片机上电后根据升级标志位判断是否升级,若确定升级,则从中央处理器下载升级程序并覆盖原有的应用程序,然后清除升级标志位并重启,单片机运行升级程序,这种升级方式不能确保升级后单片机正常运行,甚至还会缩短单片机的使用寿命,针对上述单片机升级方法出现的问题,CN108021381A公布了设备的单片机升级方法及装置,具体的是,只有在升级成功并校验升级程序成功后,才会将升级程序覆盖应用程序,若升级失败或者校验升级程序失败,都会将应用程序覆盖升级程序,并运行应用程序,来确保单片机正常运行;并且,由于采用发送指令的方式通知单片机执行相应的操作,无需读写升级标志位,不会对单片机的寿命产生任何影响。但是,上述升级方法不能保证新的程序具有问题时,会造成单片机持续性故障,为了解决故障,需要回溯到原来的程序,但是,上述方式的升级方法是新的应用程序完全覆盖原有的程序,原有程序丢失,所以,针对上述缺陷,需要能够将单片机程序回溯到初始的某个版本,而不是简单地覆盖,所以,需要一种基于单片机的可回溯的升级方法。
发明内容
本发明的目的在于提供一种基于单片机的可回溯的升级方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
一种基于单片机的可回溯的升级方法,包括以下步骤:
S1:单片机上电,运行BOOT代码;
S2:进行上电复位检测,包括以下步骤:
S2-1:对应用程序区进行CRC计算,与数据存储区的CRC比对;
S2-2:①、步骤S2-1的对比通过:执行应用程序,应用程序运行过程中若收到升级指令则擦除备份区,对备份区进行写入操作,若升级数据暂停则停止写入flash,继续执行①步骤;若收到结束升级指令与CRC值,则写入CRC值至数据存储区,执行S2-1步骤,此时,进行软件复位检测;
②、步骤S2-1的比对不通过:报错“flash损坏”;
S3:步骤S2中S2-2步骤中的软件复位检测包括以下步骤:
S3-1:对备份区进行CRC计算,与数据存储区的CRC比对;
S3-2:①、步骤S3-1的对比通过:将数据从备份区搬移至应用程序区,并执行步骤S2;
②、步骤S3-1的比对不通过:报错“flash写入异常”。
作为本发明进一步的方案:所述步骤S2中的上电复位检测只需要读取芯片内复位原因寄存器的值即可。
作为本发明进一步的方案:所述步骤S2中的CRC检测具体是CRC16计算法,从应用程序区首地址取数据进行计算,直到尾地址结束。
作为本发明进一步的方案:所述步骤S3中的CRC检测具体是CRC16计算法,从备份区首地址取数据进行计算,直到尾地址结束。
作为本发明进一步的方案:所述Boot区为校验CRC与搬运备份区至应用程序区的代码,所述数据存储区为存放CRC校验值的区域,所述应用程序区为主程序存储位置,所述备份区为主程序临时存放区域。
作为本发明进一步的方案:所述Boot区、数据存储区、应用程序区和备份区的分配空间的大小分别为2KB、1KB、200KB和200KB。
作为本发明进一步的方案:所述Boot区、数据存储区、应用程序区和备份区的存储空间的划分是通过修改链接文件实现区域的划分。
作为本发明进一步的方案:所述步骤S2和步骤S3的升级过程中不对数据进行校验。
与现有技术相比,本发明的有益效果是:本发明提供一种基于单片机的可回溯的升级方法,每次开机BMU均会对应用程序区进行校验,防止意外的flash损坏导致运行后出现意外故障;升级失败后可自动退回应用程序继续工作;Boot内代码极少,只有搬运flash的代码,易于维护,不易出错。
附图说明
图1为一种基于单片机的可回溯的升级方法的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本发明提供一种技术方案:一种基于单片机的可回溯的升级方法,包括以下步骤:
S1:单片机上电,运行BOOT代码;
S2:进行上电复位检测,包括以下步骤:
S2-1:对应用程序区进行CRC计算,与数据存储区的CRC比对;
S2-2:①、步骤S2-1的对比通过:执行应用程序,应用程序运行过程中若收到升级指令则擦除备份区,对备份区进行写入操作,若升级数据暂停则停止写入flash,继续执行①步骤;若收到结束升级指令与CRC值,则写入CRC值至数据存储区,执行S2-1步骤,此时,进行软件复位检测;
②、步骤S2-1的比对不通过:报错“flash损坏”;
S3:步骤S2中S2-2步骤中的软件复位检测包括以下步骤:
S3-1:对备份区进行CRC计算,与数据存储区的CRC比对;
S3-2:①、步骤S3-1的对比通过:将数据从备份区搬移至应用程序区,并执行步骤S2;
②、步骤S3-1的比对不通过:报错“flash写入异常”。
其中,步骤S2中的上电复位检测只需要读取芯片内复位原因寄存器的值即可,所述步骤S2中的CRC检测具体是CRC16计算法,从应用程序区首地址取数据进行计算,直到尾地址结束,所述步骤S3中的CRC检测具体是CRC16计算法,从备份区首地址取数据进行计算,直到尾地址结束,所述Boot区为校验CRC与搬运备份区至应用程序区的代码,所述数据存储区为存放CRC校验值的区域,所述应用程序区为主程序存储位置,所述备份区为主程序临时存放区域,所述Boot区、数据存储区、应用程序区和备份区的分配空间的大小分别为2KB、1KB、200KB和200KB,所述Boot区、数据存储区、应用程序区和备份区的存储空间的划分是通过修改链接文件实现区域的划分,所述步骤S2和步骤S3的升级过程中不对数据进行校验。
空间分配大小表格如下:
BOOT区 | 数据存储区 | 应用程序区 | 备份区 |
2KB | 1KB | 200KB | 200KB |
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
Claims (8)
1.一种基于单片机的可回溯的升级方法,其特征在于,包括以下步骤:
S1:单片机上电,运行BOOT代码;
S2:进行上电复位检测,包括以下步骤:
S2-1:对应用程序区进行CRC计算,与数据存储区的CRC比对;
S2-2:①、步骤S2-1的对比通过:执行应用程序,应用程序运行过程中若收到升级指令则擦除备份区,对备份区进行写入操作,若升级数据暂停则停止写入flash,继续执行①步骤;若收到结束升级指令与CRC值,则写入CRC值至数据存储区,执行S2-1步骤,此时,进行软件复位检测;
②、步骤S2-1的比对不通过:报错“flash损坏”;
S3:步骤S2中S2-2步骤中的软件复位检测包括以下步骤:
S3-1:对备份区进行CRC计算,与数据存储区的CRC比对;
S3-2:①、步骤S3-1的对比通过:将数据从备份区搬移至应用程序区,并执行步骤S2;
②、步骤S3-1的比对不通过:报错“flash写入异常”。
2.根据权利要求1所述的一种基于单片机的可回溯的升级方法,其特征在于:所述步骤S2中的上电复位检测只需要读取芯片内复位原因寄存器的值即可。
3.根据权利要求2所述的一种基于单片机的可回溯的升级方法,其特征在于:所述步骤S2中的CRC检测具体是CRC16计算法,从应用程序区首地址取数据进行计算,直到尾地址结束。
4.根据权利要求3所述的一种基于单片机的可回溯的升级方法,其特征在于:所述步骤S3中的CRC检测具体是CRC16计算法,从备份区首地址取数据进行计算,直到尾地址结束。
5.根据权利要求4所述的一种基于单片机的可回溯的升级方法,其特征在于:所述Boot区为校验CRC与搬运备份区至应用程序区的代码,所述数据存储区为存放CRC校验值的区域,所述应用程序区为主程序存储位置,所述备份区为主程序临时存放区域。
6.根据权利要求5所述的一种基于单片机的可回溯的升级方法,其特征在于:所述Boot区、数据存储区、应用程序区和备份区的分配空间的大小分别为2KB、1KB、200KB和200KB。
7.根据权利要求6所述的一种基于单片机的可回溯的升级方法,其特征在于:所述Boot区、数据存储区、应用程序区和备份区的存储空间的划分是通过修改链接文件实现区域的划分。
8.根据权利要求7所述的一种基于单片机的可回溯的升级方法,其特征在于:所述步骤S2和步骤S3的升级过程中不对数据进行校验。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110406869.6A CN113127035A (zh) | 2021-04-15 | 2021-04-15 | 一种基于单片机的可回溯的升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110406869.6A CN113127035A (zh) | 2021-04-15 | 2021-04-15 | 一种基于单片机的可回溯的升级方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113127035A true CN113127035A (zh) | 2021-07-16 |
Family
ID=76776785
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110406869.6A Withdrawn CN113127035A (zh) | 2021-04-15 | 2021-04-15 | 一种基于单片机的可回溯的升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113127035A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114281383A (zh) * | 2021-12-27 | 2022-04-05 | 苏州高鹏光电科技有限公司 | 一种程序升级方法 |
CN114968317A (zh) * | 2022-04-01 | 2022-08-30 | 北京遥测技术研究所 | 一种基于zynq防呆设计的程序升级方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040015952A1 (en) * | 2001-04-18 | 2004-01-22 | Domosys Corporation | Method of remotely upgrading firmware in field-deployed devices |
CN103092647A (zh) * | 2012-12-29 | 2013-05-08 | 聚光科技(杭州)股份有限公司 | 嵌入式系统的在线升级方法 |
CN111782246A (zh) * | 2020-07-03 | 2020-10-16 | 常州东晟合众节能科技有限公司 | 基于总线的多节点设备嵌入式程序升级方法 |
CN112650518A (zh) * | 2019-10-10 | 2021-04-13 | 国创新能源汽车能源与信息创新中心(江苏)有限公司 | Dsp程序在线升级方法 |
-
2021
- 2021-04-15 CN CN202110406869.6A patent/CN113127035A/zh not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040015952A1 (en) * | 2001-04-18 | 2004-01-22 | Domosys Corporation | Method of remotely upgrading firmware in field-deployed devices |
CN103092647A (zh) * | 2012-12-29 | 2013-05-08 | 聚光科技(杭州)股份有限公司 | 嵌入式系统的在线升级方法 |
CN112650518A (zh) * | 2019-10-10 | 2021-04-13 | 国创新能源汽车能源与信息创新中心(江苏)有限公司 | Dsp程序在线升级方法 |
CN111782246A (zh) * | 2020-07-03 | 2020-10-16 | 常州东晟合众节能科技有限公司 | 基于总线的多节点设备嵌入式程序升级方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114281383A (zh) * | 2021-12-27 | 2022-04-05 | 苏州高鹏光电科技有限公司 | 一种程序升级方法 |
CN114968317A (zh) * | 2022-04-01 | 2022-08-30 | 北京遥测技术研究所 | 一种基于zynq防呆设计的程序升级方法 |
CN114968317B (zh) * | 2022-04-01 | 2024-04-26 | 北京遥测技术研究所 | 一种基于zynq防呆设计的程序升级方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105912356B (zh) | 一种支持版本回退的光模块固件程序在线升级方法 | |
CN100456246C (zh) | 一种固件程序升级的方法与装置 | |
US7197613B2 (en) | Nonvolatile memory | |
CN113127035A (zh) | 一种基于单片机的可回溯的升级方法 | |
CN104007996A (zh) | 一种分布式控制系统的可靠固件升级实现方法 | |
CN101650662A (zh) | 一种嵌入式系统的存储器件、固件启动及升级方法 | |
CN104615471A (zh) | 一种终端的系统升级方法及装置 | |
CN105637521A (zh) | 一种数据处理方法及智能终端 | |
CN104360952A (zh) | 一种软件测试系统及方法 | |
CN111767172A (zh) | 一种基于看门狗及bootloader的机顶盒自修复办法 | |
CN113641390B (zh) | 一种系统升级方法、装置、设备及存储介质 | |
CN115220758A (zh) | 一种单片机固件在线升级的方法 | |
CN112379843B (zh) | Eeprom数据处理方法、系统、存储介质及终端 | |
CN108170456B (zh) | 电子设备的固件升级方法及装置 | |
CN109933374A (zh) | 一种计算机启动方法 | |
CN113220319A (zh) | 一种数据更新方法、装置及车辆 | |
CN112394965B (zh) | 电池管理系统升级和运行方法,控制器,电池管理系统及存储介质 | |
CN111273928A (zh) | 一种自升级的bootloader设计方法 | |
CN110956284A (zh) | 一种产品信息的可靠性维护方法、系统、设备及存储介质 | |
CN114398087B (zh) | 一种提高单片机更新程序后运行稳定性的方法及单片机 | |
CN112579338B (zh) | 一种设备的启动方法、系统及存储介质 | |
CN114064358A (zh) | 一种异常恢复方法、装置、设备及存储介质 | |
CN107480007B (zh) | 一种程序冗余校验与纠错的方法 | |
CN103106089B (zh) | 一种智能平台管理控制器的升级方法和系统 | |
CN112905375A (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210716 |