一种基于单片机的可回溯的升级方法技术

技术编号:29300420 阅读:15 留言:0更新日期:2021-07-17 01:19
本发明专利技术公开了一种基于单片机的可回溯的升级方法,包括以下步骤:单片机上电,运行BOOT代码;进行上电复位检测,包括以下步骤:对应用程序区进行CRC计算,与数据存储区的CRC比对;对比通过:执行应用程序,应用程序运行过程中若收到升级指令则擦除备份区,对备份区进行写入操作,若升级数据暂停则停止写入flash,继续执行上述步骤;若收到结束升级指令与CRC值,则写入CRC值至数据存储区,执行上述步骤,此时,进行软件复位检测;比对不通过:报错“flash损坏”,每次开机BMU均会对应用程序区进行校验,防止意外的flash损坏导致运行后出现意外故障;升级失败后可自动退回应用程序继续工作;Boot内代码极少,只有搬运flash的代码,易于维护,不易出错。不易出错。不易出错。

A traceable upgrade method based on MCU

【技术实现步骤摘要】
一种基于单片机的可回溯的升级方法


[0001]本专利技术涉及单片机
,具体为一种基于单片机的可回溯的升级方法。

技术介绍

[0002]目前单片机的应用日益广泛,其应用范围包括工业自动化、仪器仪表、家用电器、信息和通信产品及军事装备等。为了提高产品的竞争力,设备厂商所生产的产品在其售后服务上均最大程度地提供其最新的应用软件,这就要求设备支持自动给单片机升级的能力。
[0003]现有技术中,对单片机的在线升级方式可能会由于网络波动、升级中途掉电、通讯线路不稳导致应用程序丢失。虽然可以继续升级,但是程序丢失之后系统将会报通讯丢失错误,暂时会处于故障模式。如果一直无法升级成功,系统将会持续处于故障模式。
[0004]由于设备内的单片机的数量多、种类不一,CN109358887A公布了一种单片机程序的在线升级方法、装置及系统,针对在对不同的单片机的程序进行升级时,会出现其他单片机对应的程序文件升级到另一不同功能的单片机的情况,从而导致升级失败或者异常,具体的,是通过将MCU控制器的内部程序Flash进行分区,第一区域用于存储引导加载程序,第二区域用于存储应用程序,第三区域用于存储标志位信息可以通过应用程序来执行与升级和其他功能,引导加载程序用来根据第二标志位信息的内容选择是否进行在线升级,并将待更新的程序数据更新至程序数据区,进行分区以后,使得单片机即可以运行具有在线升级功能的程序,也能运行应用程序;通过在线升级功能程序,对自身的应用程序进行在线升级。但是,上述公布的方法,不能对升级过程进行回溯,即,当出现网络波动、升级中途掉电、通讯线路不稳等因素导致的应用程序丢失,同样会造成升级失败,并且,因为一直无法升级成功,系统将会持续处于故障模式,所以,针对于上述因素造成的升级失败,需要一种可回溯的升级方法。
[0005]有些单片机有一个很强大的功能是支持应用程序中编程在线升级,即应用程序自己可以往程序存储器里写数据或修改程序。单片机的升级方法为:单片机上电后根据升级标志位判断是否升级,若确定升级,则从中央处理器下载升级程序并覆盖原有的应用程序,然后清除升级标志位并重启,单片机运行升级程序,这种升级方式不能确保升级后单片机正常运行,甚至还会缩短单片机的使用寿命,针对上述单片机升级方法出现的问题,CN108021381A公布了设备的单片机升级方法及装置,具体的是,只有在升级成功并校验升级程序成功后,才会将升级程序覆盖应用程序,若升级失败或者校验升级程序失败,都会将应用程序覆盖升级程序,并运行应用程序,来确保单片机正常运行;并且,由于采用发送指令的方式通知单片机执行相应的操作,无需读写升级标志位,不会对单片机的寿命产生任何影响。但是,上述升级方法不能保证新的程序具有问题时,会造成单片机持续性故障,为了解决故障,需要回溯到原来的程序,但是,上述方式的升级方法是新的应用程序完全覆盖原有的程序,原有程序丢失,所以,针对上述缺陷,需要能够将单片机程序回溯到初始的某个版本,而不是简单地覆盖,所以,需要一种基于单片机的可回溯的升级方法。

技术实现思路

[0006]本专利技术的目的在于提供一种基于单片机的可回溯的升级方法,以解决上述
技术介绍
中提出的问题。
[0007]为实现上述目的,本专利技术提供如下技术方案:
[0008]一种基于单片机的可回溯的升级方法,包括以下步骤:
[0009]S1:单片机上电,运行BOOT代码;
[0010]S2:进行上电复位检测,包括以下步骤:
[0011]S2

1:对应用程序区进行CRC计算,与数据存储区的CRC比对;
[0012]S2

2:

、步骤S2

1的对比通过:执行应用程序,应用程序运行过程中若收到升级指令则擦除备份区,对备份区进行写入操作,若升级数据暂停则停止写入flash,继续执行

步骤;若收到结束升级指令与CRC值,则写入CRC值至数据存储区,执行S2

1步骤,此时,进行软件复位检测;
[0013]②
、步骤S2

1的比对不通过:报错“flash损坏”;
[0014]S3:步骤S2中S2

2步骤中的软件复位检测包括以下步骤:
[0015]S3

1:对备份区进行CRC计算,与数据存储区的CRC比对;
[0016]S3

2:

、步骤S3

1的对比通过:将数据从备份区搬移至应用程序区,并执行步骤S2;
[0017]②
、步骤S3

1的比对不通过:报错“flash写入异常”。
[0018]作为本专利技术进一步的方案:所述步骤S2中的上电复位检测只需要读取芯片内复位原因寄存器的值即可。
[0019]作为本专利技术进一步的方案:所述步骤S2中的CRC检测具体是CRC16计算法,从应用程序区首地址取数据进行计算,直到尾地址结束。
[0020]作为本专利技术进一步的方案:所述步骤S3中的CRC检测具体是CRC16计算法,从备份区首地址取数据进行计算,直到尾地址结束。
[0021]作为本专利技术进一步的方案:所述Boot区为校验CRC与搬运备份区至应用程序区的代码,所述数据存储区为存放CRC校验值的区域,所述应用程序区为主程序存储位置,所述备份区为主程序临时存放区域。
[0022]作为本专利技术进一步的方案:所述Boot区、数据存储区、应用程序区和备份区的分配空间的大小分别为2KB、1KB、200KB和200KB。
[0023]作为本专利技术进一步的方案:所述Boot区、数据存储区、应用程序区和备份区的存储空间的划分是通过修改链接文件实现区域的划分。
[0024]作为本专利技术进一步的方案:所述步骤S2和步骤S3的升级过程中不对数据进行校验。
[0025]与现有技术相比,本专利技术的有益效果是:本专利技术提供一种基于单片机的可回溯的升级方法,每次开机BMU均会对应用程序区进行校验,防止意外的flash损坏导致运行后出现意外故障;升级失败后可自动退回应用程序继续工作;Boot内代码极少,只有搬运flash的代码,易于维护,不易出错。
附图说明
[0026]图1为一种基于单片机的可回溯的升级方法的流程图。
具体实施方式
[0027]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0028]请参阅图1,本专利技术提供一种技术方案:一种基于单片机的可回溯的升级方法,包括以下步骤:
[0029]S1:单片机上电,运行BOOT代码;
[0030]S2:进行上电复位检测,包括以下步骤:...

【技术保护点】

【技术特征摘要】
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...

【专利技术属性】
技术研发人员:严海龙马慧娇刘雄江袁宏亮林栋
申请(专利权)人:沃太能源股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1