一种基于单片机的可回溯的升级方法与流程

文档序号:25875025发布日期:2021-07-16 17:32阅读:65来源:国知局
一种基于单片机的可回溯的升级方法与流程

1.本发明涉及单片机技术领域,具体为一种基于单片机的可回溯的升级方法。


背景技术:

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


技术实现要素:

6.本发明的目的在于提供一种基于单片机的可回溯的升级方法,以解决上述背景技术中提出的问题。
7.为实现上述目的,本发明提供如下技术方案:
8.一种基于单片机的可回溯的升级方法,包括以下步骤:
9.s1:单片机上电,运行boot代码;
10.s2:进行上电复位检测,包括以下步骤:
11.s2

1:对应用程序区进行crc计算,与数据存储区的crc比对;
12.s2

2:

、步骤s2

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

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

1步骤,此时,进行软件复位检测;
13.②
、步骤s2

1的比对不通过:报错“flash损坏”;
14.s3:步骤s2中s2

2步骤中的软件复位检测包括以下步骤:
15.s3

1:对备份区进行crc计算,与数据存储区的crc比对;
16.s3

2:

、步骤s3

1的对比通过:将数据从备份区搬移至应用程序区,并执行步骤s2;
17.②
、步骤s3

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

1:对应用程序区进行crc计算,与数据存储区的crc比对;
32.s2

2:

、步骤s2

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

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

1步骤,此时,进行软件复位检测;
33.②
、步骤s2

1的比对不通过:报错“flash损坏”;
34.s3:步骤s2中s2

2步骤中的软件复位检测包括以下步骤:
35.s3

1:对备份区进行crc计算,与数据存储区的crc比对;
36.s3

2:

、步骤s3

1的对比通过:将数据从备份区搬移至应用程序区,并执行步骤s2;
37.②
、步骤s3

1的比对不通过:报错“flash写入异常”。
38.其中,步骤s2中的上电复位检测只需要读取芯片内复位原因寄存器的值即可,所述步骤s2中的crc检测具体是crc16计算法,从应用程序区首地址取数据进行计算,直到尾地址结束,所述步骤s3中的crc检测具体是crc16计算法,从备份区首地址取数据进行计算,直到尾地址结束,所述boot区为校验crc与搬运备份区至应用程序区的代码,所述数据存储区为存放crc校验值的区域,所述应用程序区为主程序存储位置,所述备份区为主程序临时存放区域,所述boot区、数据存储区、应用程序区和备份区的分配空间的大小分别为2kb、1kb、200kb和200kb,所述boot区、数据存储区、应用程序区和备份区的存储空间的划分是通过修改链接文件实现区域的划分,所述步骤s2和步骤s3的升级过程中不对数据进行校验。
39.空间分配大小表格如下:
40.boot区数据存储区应用程序区备份区2kb1kb200kb200kb
41.对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
42.此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1