一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种可靠的MCU固件升级的方法与流程

2022-03-04 23:58:32 来源:中国专利 TAG:

一种可靠的mcu固件升级的方法
技术领域
1.本发明涉及一种可靠的mcu固件升级的方法。


背景技术:

2.由于设备功能升级、bug修复等原因,经常需要对设备的mcu固件程序进行升级。通常的固件升级方法包括烧录器烧录、isp升级等。
3.但本技术发明人在进行技术研发的过程中,发现上述技术至少存在如下技术问题:
4.烧录器烧录方法需要烧录器与板载烧录接口硬连接,需要专用烧录设备,且通常需要拆机、逐台烧录,对于大批量布放的设备,升级成本较大;isp固件升级方式可以通过上位机软件对设备固件进行在线升级,不需要拆机及额外的烧录设备,但是通常的isp升级方法不具备固件恢复机制,在升级过程中如出现设备断电、传输中断、升级失败等情况,固件无法恢复到原版本,导致设备无法使用。
5.因此,亟需一种可靠的mcu固件升级的方法。


技术实现要素:

6.本发明的目的是提供一种可靠的mcu固件升级的方法,解决现有技术升级成本大以及无法应对各种突发情况的技术问题。
7.实现本发明目的的技术方案是一种可靠的mcu固件升级的方法,包括以下步骤:
8.步骤s100,将mcu的存储器分成n个区域,n为不小于4的自然数;
9.步骤s200,将升级前的mcu固件程序数据复制n-1份,分别存储于所述n个区域的第2至第n区域中;
10.步骤s300,在第2至第n-1区域中任意选定第x区域作为升级程序写入的区域;
11.步骤s400,进行升级时,擦除第x区域内的数据,写入升级程序。
12.进一步的,所述步骤s100还包括在所述n个区域中的第一区域中写入启动程序。
13.进一步的,所述步骤s300还包括,在所述第n区域添加指示标记;
14.所述启动程序根据第n区域的指示标记对第x区域进行步骤s400。
15.进一步的,还包括步骤s500,判断升级是否成功;
16.步骤s600,如果升级成功,则存储第x区域中的升级程序,将除第1区域和第x区域以外的区域的数据删除,并将第x区域中升级程序复制到第n区域中。
17.进一步的,还包括:
18.步骤s500,判断升级是否成功;
19.步骤s600’,如果升级成功,则存储第x区域中的数据,同时除第x区域外,第2至第n区域中仅保留第y区域中的数据,删除其余区域中的数据,并将第x区域中升级程序复制到第n区域中。
20.进一步的,还包括:
21.步骤s700,将所述第y区域中的数据进行压缩存储,并设置该压缩数据为仅存储不运行。
22.进一步的,还包括:
23.步骤s800,将第x区域中的数据复制n-2份,分别存储于所述n个区域中除第一、第x以及第y区域以外的区域中;
24.步骤s900,在除第一区域、第y区域以及第n区域以外的任一个区域中任意选定第x’区域作为升级程序写入空间的区域;在所述第n区域添加指示标记;步骤s1000,进行升级时,所述启动程序根据第n区域的指示标记擦除第x’区域内的数据,写入升级程序,如果升级成功,则存储第x’区域中的升级程序,将除第1区域和第x’区域以外的区域的数据删除,并将第x’区域中升级程序复制到第n区域中。
25.采用了上述技术方案后,本发明具有积极的效果:本发明先将mcu存储器分成多个区域,将现有程序拷贝在多个区域中,然后根据设定将升级程序写入其中一个区域,这样无论升级成功与否,现有版本程序不会丢失,可以实现升级失败后恢复前一个版本,避免了因为升级失败而导致设备无法启动,确保了高效、可靠。
附图说明
26.为了使本发明的内容更容易被清楚地理解,下面根据具体实施例并结合附图,对本发明作进一步详细的说明,其中
27.图1为本发明实施例中的mcu的存储器分区的示意图。
28.图2为本发明一实施例的方法流程图。
具体实施方式
29.(实施例1)
30.本发明实施例提供了一种可靠的mcu固件升级方法,用以解决现有技术中升级复杂、成本高、易出错的技术问题,达到了高效准确对mcu固件进行升级的技术效果。
31.本发明提供的技术方案总体思路如下:
32.一种可靠的mcu固件升级的方法,包括以下步骤:
33.步骤s100,将mcu的存储器分成n个区域,n为不小于4的自然数;
34.步骤s200,将升级前的mcu固件程序数据复制n-1份,分别存储于所述n个区域的第2至第n区域中;
35.步骤s300,在第2至第n-1区域中任意选定第x区域作为升级程序写入的区域;
36.步骤s400,进行升级时,擦除第x区域内的数据,写入升级程序。
37.下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本技术实施例以及实施例中的具体特征是对本技术技术方案的详细的说明,而不是对本技术技术方案的限定,在不冲突的情况下,本技术实施例以及实施例中的技术特征可以相互组合。
38.本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
39.(实施例1)
40.步骤s100,将mcu的存储器分成n个区域,n为不小于4的自然数;在所述n个区域中的第一区域中写入启动程序;
41.步骤s200,将升级前的mcu固件程序数据复制n-1份,分别存储于所述n个区域的第2至第n区域中;
42.步骤s300,在第2至第n-1区域中任意选定第x区域作为升级程序写入的区域;在所述第n区域添加指示标记;所述启动程序根据第n区域的指示标记对第x区域进行步骤s400;
43.步骤s400,进行升级时,擦除第x区域内的数据,写入升级程序。
44.步骤s500,判断升级是否成功;
45.步骤s600,如果升级成功,则存储第x区域中的升级程序,将除第1区域和第x区域以外的区域的数据删除,并将第x区域中升级程序复制到第n区域中。
46.见图1和图2,以将mcu的存储器flash分成4个区为例,如图1所示,分别定义为iap(第一区域)、ap1-addr(第二区域)、ap2-addr(第三区域)、ap-addr-flag(第四区域,也即第n区域),当然这只是本具体实施例的命名,任何的命名都是允许的。iap是整个固件的起始程序,负责升级和加载;ap1和ap2位于iap之后,是设备具体功能的实现,ap-addr-flag位于ap2之后,是一个指示标记,指示iap加载启动ap1还是ap2,也就是说iap先读取ap-addr-flag,从而知道应该读取加载启动ap1还是ap2。
47.其升级过程为:在ap1-addr、ap2-addr、ap-addr-flag均备份现有的版本程序(也即升级前的程序);iap接收到上位机升级指令后,读取ap-addr-flag,假设ap-addr-flag指示启动ap2(第x区域),则擦除ap2中的数据,将上位机发送的升级数据写入ap2,如升级成功,则更新ap-addr-flag中的内容也为已经写入ap2的升级程序,擦除ap1中的现有版本程序(当然也可以不擦除)。如果升级失败,ap-addr-flag保持不变,依然存储的是现有版本程序。后续再次升级,也采用前面的同样的方式,iap按照ap-addr-flag指示加载对应的ap(ap1或者ap2),也即可以任意选定,选定ap1还是ap2进行写入升级程序的操作并不做限制。由此,可以实现升级失败后恢复前一个版本,避免了因为升级失败而导致设备无法启动,确保了高效、可靠。
48.(实施例2)
49.步骤s100,将mcu的存储器分成n个区域,n为不小于4的自然数;在所述n个区域中的第一区域中写入启动程序;
50.步骤s200,将升级前的mcu固件程序数据复制n-1份,分别存储于所述n个区域的第2至第n区域中;
51.步骤s300,在第2至第n-1区域中任意选定第x区域作为升级程序写入的区域;在所述第n区域添加指示标记;所述启动程序根据第n区域的指示标记对第x区域进行步骤s400;
52.步骤s400,进行升级时,擦除第x区域内的数据,写入升级程序。
53.步骤s500,判断升级是否成功;
54.步骤s600’,如果升级成功,则存储第x区域中的数据,同时除第x区域外,第2至第n区域中仅保留第y区域中的数据,删除其余区域中的数据,并将第x区域中升级程序复制到第n区域中。
55.步骤s700,将所述第y区域中的数据进行压缩存储,并设置该压缩数据为仅存储不运行。
56.进一步的,还包括:
57.步骤s800,将第x区域中的数据复制n-2份,分别存储于所述n个区域中除第一、第x以及第y区域以外的区域中;
58.步骤s900,在除第一区域、第y区域以及第n区域以外的任一个区域中任意选定第x’区域作为升级程序写入空间的区域;在所述第n区域添加指示标记;步骤s1000,进行升级时,所述启动程序根据第n区域的指示标记擦除第x’区域内的数据,写入升级程序,如果升级成功,则存储第x’区域中的升级程序,将除第1区域和第x’区域以外的区域的数据删除,并将第x’区域中升级程序复制到第n区域中。
59.具体来说,本实施例具体指mcu的存储器分成超过4个区域,比如分成5个区域,即第一区域、第二区域、第三区域、第四区域和第五区域。分成更多的区域的目的是可以将每一个版本程序都存放,或者根据flash的容量存放比如三版程序。第一代程序升级到第二代程序后,第一代程序依然被存放在一个区域中,但是进行压缩和打标,不仅节约空间,而且确保了后续运行时不被加载,以免出现运行错误。如此类推,只要第n区域能够及时的进行更新和标记,就可以确保循环的准确的进行迭代升级。
60.以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献