一种单片机的在线升级方法与流程

未命名 08-03 阅读:103 评论:0


1.本发明涉及单片机的固件升级技术,尤其涉及一种单片机的在线升级方法。


背景技术:

2.单片机在线升级是指通过网络或其他通信方式在线更新单片机的固件。
3.随着电源产品逐渐向数字化发展,单片机在产品中的应用也越来越广泛,单片机在实现各种复杂功能的同时,由于使用环境的复杂性,软件逻辑考虑不周,不可避免地会产生漏洞,而为了解决一些小问题,厂家召回需要花费巨大的人力物力,而在线升级功能能让客户自行对售出的产品程序进行升级,所以自动升级功能是高端数字化电源产品的标配。
4.如图1所示,目前电源产品升级普遍带eeprom备份,这种升级方法的eeprom通过i2c总线与单片机连接,容易受i2c总线速率影响,还增加了电源成本。
5.传统闪存分区备份的在线升级方式如图2所示,通过将闪存分成升级区,应用程序区,备份区来进行升级,这种升级方式的缺点是在传输数据包的过程中无法运行应用代码,宕机时间长。


技术实现要素:

6.本发明要解决的技术问题是提供一种宕机时间短的单片机的在线升级方法。
7.为了解决上述技术问题,本发明采用的技术方案是, 一种单片机的在线升级方法,包括以下步骤:101)将单片机的闪存分为第一存储区和第二存储区,两个存储区都作为完整的闪存区提供代码给单片机内核运行,在非升级条件下默认的启动区为第一存储区;102)单片机在接收到上位机发送的升级命令后在第一存储区运行代码保证系统正常工作的同时接收升级包,将代码数据备份,更新第二存储区;103)第二存储区更新完成后,两个存储区的映射互换,单片机切换到第二存储区,将第二存储区的新版本的代码复制到第一存储区,代码复制完成后将映射互换回第一存储区运行代码。
8.以上所述的单片机的在线升级方法,包括以下步骤:在步骤103中,第二存储区更新完成后,对第二存储区的新版本的代码数据进行校验,校验成功后将默认启动运行区设为第二存储区,关闭系统,复位单片机,映射互换后进入第二存储区运行代码。
9.以上所述的单片机的在线升级方法,在步骤103中,单片机判断此时运行的代码属于第二存储区时,将第二存储区的新版本代码复制到第一存储区;复制完成后校验第一存储区的新版本代码,校验成功后将默认启动运行区重新设为第一存储区,并在初始化后映射互换进入第一存储区运行代码。
10.以上所述的单片机的在线升级方法,在第一存储区的代码初始化中,单片机判断此时运行的代码属于第一存储区还是第二存储区,如判定为第一存储区,单片机对所有外设进行初始化,如判定为第二存储区,则不进行初始化,直接开始代码复制。
11.以上所述的单片机的在线升级方法,电源异常断电或者正常下电后都从默认启动区启动。如果单片机在第一存储区运行过程中掉电,下一次上电时重新从第一存储区启动;如果在第二存储区运行过程中掉电,下一次上电时重新从第二存储区启动,重复步骤103。
12.本发明在线升级传输数据包的过程中,单片机在第一存储区运行应用代码,无需停机;复制过程是从第二存储区的闪存读取后写入第一存储区的闪存,整个复制过程限于单片机自身闪存进行,没有其他外设参与,加快了复制效率,减少了升级过程中的宕机时间。
附图说明
13.下面结合附图和具体实施方式对本发明作进一步详细的说明。
14.图1是现有技术之一带eeprom备份在线升级系统示意图。
15.图2是现有技术之二闪存分区备份在线升级系统示意图。
16.图3是本发明实施例双闪存备份在线升级系统示意图。
17.图4是本发明实施例单片机的在线升级方法的流程图。
18.图5是本发明实施例从第二存储区启动映射的示意图。
19.图6是本发明实施例从第一存储区启动映射的示意图。
20.图7是本发明实施例双闪存单片机在线升级方法的完整流程示意图。
具体实施方式
21.本发明实施例在线升级系统示意图如图3所示,将闪存分为第一存储区和第二存储区,且两个运行区都能单独作为完整的闪存区提供代码给单片机内核运行,非升级条件下默认启动区设置为第一存储区。双闪存模式下在第一存储区代码运行的过程中,单片机内核能不受干扰地向第二存储区擦除以及写入代码。
22.本发明实施例的开关电源使用带有双闪存功能单片机,并将闪存平均分为第一存储区和第二存储区两个部分,其中第一存储区设为默认启动运行区,单片机在接收到上位机发送的升级命令后在第一存储区运行代码保证电源输出的同时接收升级包并更新进第二存储区。当第二存储区更新完成后,单片机再切换到第二存储区,复制并校验第一存储区完成后,同时将第二存储区代码映射互换到第一存储区,代码复制完成后将映射互换回第一存储区运行电源程序。
23.启动映射示意图如图5与图6所示,从第一存储区启动时,第一存储区将会映射到0x08000000地址,内核将从第一存储区获取第一条指令,从第二存储区启动时,第二存储区将会映射到0x08000000地址,内核将从第二存储区获取第一条指令。
24.本发明实施例的单片机基于双闪存的备份在线升级方法如图7所示,单片机在接收到上位机发送的升级命令后在第一存储区运行功能性应用代码保证电源输出的同时进入升级模式,单片机接收上位机传来的升级包并在运行原代码保证电源的前提下将代码数据备份,更新第二存储区。当更新完成后,单片机对第二存储区的整个新版本代码数据进行校验,校验成功后将默认启动运行区设为第二存储区,关闭电源输出,并复位单片机,映射互换后进入第二存储区运行代码。
25.在第二存储区的代码中,单片机首先会判断此时运行的代码属于第一存储区还是
第二存储区,此时为第二存储区,单片机将第二存储区的新版本代码复制到第一存储区,复制完成后校验第一存储区的新版本代码,校验成功后将会将默认启动运行区重新设为第一存储区,并初始化后映射互换进入第一存储区运行代码。
26.在第一存储区的代码初始化中,单片机同样首先会判断此时运行的代码属于第一存储区还是第二存储区,如判定此时运行的代码为第一存储区,单片机将会完成所有外设初始化,运行电源程序。
27.默认启动区设置后电源异常断电或者正常下电后都将从应用程序设置的默认启动区启动。如果单片机在第一存储区运行过程中掉电,下一次正常上电后将会重新从第一存储区启动,如果单片机在第二存储区运行过程中掉电,下一次正常上电后将会重新从第二存储区启动,重新进行复制,校验,校验成功后将复位单片机映射互换到第一存储区。
28.本发明以上实施例的单片机的在线升级方法具有以下有益效果:1)在线升级传输数据包的过程中,单片机在第一存储区运行应用代码,无需停机;复制过程是从第二存储区的闪存读取后写入第一存储区的闪存,整个复制过程限于单片机自身闪存进行,没有其他外设参与,加快了复制效率,减少了升级过程中的宕机时间。
29.2)在避免使用eeprom部件前提下,实现了在线备份升级和降本增效。


技术特征:
1.一种单片机的在线升级方法,其特征在于,包括以下步骤:101)将单片机的闪存分为第一存储区和第二存储区,两个存储区都作为完整的闪存区提供代码给单片机内核运行,在非升级条件下默认的启动区为第一存储区;102)单片机在接收到上位机发送的升级命令后在第一存储区运行代码保证系统正常工作的同时接收升级包,将代码数据备份,更新第二存储区;103)第二存储区更新完成后,两个存储区的映射互换,单片机切换到第二存储区,将第二存储区的新版本的代码复制到第一存储区,代码复制完成后将映射互换回第一存储区运行代码。2.根据权利要求1所述的单片机的在线升级方法,其特征在于,包括以下步骤:在步骤103中,第二存储区更新完成后,对第二存储区的新版本的代码数据进行校验,校验成功后将默认启动运行区设为第二存储区,关闭系统,复位单片机,映射互换后进入第二存储区运行代码。3.根据权利要求1所述的单片机的在线升级方法,其特征在于,在步骤103中,单片机判断此时运行的代码属于第二存储区时,将第二存储区的新版本代码复制到第一存储区;复制完成后校验第一存储区的新版本代码,校验成功后将默认启动运行区重新设为第一存储区,并在初始化后映射互换进入第一存储区运行代码。4.根据权利要求3所述的单片机的在线升级方法,其特征在于,在第一存储区的代码初始化中,单片机判断此时运行的代码属于第一存储区还是第二存储区,如判定为第一存储区,单片机对所有外设进行初始化,如判定为第二存储区,则不进行初始化,直接开始代码复制。5.根据权利要求1所述的单片机的在线升级方法,其特征在于,电源异常断电或者正常下电后都从默认启动区启动,如果单片机在第一存储区运行过程中掉电,下一次上电时重新从第一存储区启动;如果在第二存储区运行过程中掉电,下一次上电时重新从第二存储区启动,重复步骤103。

技术总结
本发明公开了一种单片机的在线升级方法,包括以下步骤:单片机的闪存分为第一存储区和第二存储区,在非升级条件下默认的启动区为第一存储区;单片机在接收到上位机发送的升级命令后在第一存储区运行代码保证系统正常工作的同时接收升级包,将代码数据备份,更新第二存储区;第二存储区更新完成后,两个存储区的映射互换,单片机切换到第二存储区,将第二存储区的新版本的代码复制到第一存储区,代码复制完成后将映射互换回第一存储区运行代码。本发明在线升级传输数据包的过程中,单片机在第一存储区运行应用代码,无需停机;整个复制过程限于在单片机自身的闪存中进行,宕机时间短。短。短。


技术研发人员:谢伟东 龙冬冬 宋逸斌
受保护的技术使用者:广东高斯宝电气技术有限公司
技术研发日:2023.06.28
技术公布日:2023/8/1
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐