本发明涉及数据处理领域,特别涉及一种固件升级的方法和设备。
背景技术:
现有技术中,针对STM32单片机的固件升级,适用范围有限,无法适用无大容量的固件文件升级,且操作不方便。
技术实现要素:
针对现有技术中的缺陷,本发明提出了一种固件升级的方法和设备,用以快捷地进行固件升级。
具体的,本发明提出了以下具体的实施例:
本发明实施例提出了一种固件升级的方法,用于对STM32单片机的固件进行升级,该方法包括:
通过移动终端获取升级用的固件文件,并通过网络透传模块将升级用的固件文件发送至bootloader;
通过所述bootloader将获取到的固件文件缓存在RAM中;
通过所述RAM不断将所获取到的固件文件转移至外部存储器中;
利用外部存储器中的升级用的固件文件进行固件升级。
在一个具体的实施例中,该方法还包括:
若STM32单片机的复位为普通复位,将标志位的值更新为0;
若STM32单片机的复位是基于传输固件文件进行的复位,将标志位的值更新为1;并对外部存储器所接收到的固件文件进行完整性的校验;
若校验通过,则将标志位的值更新为2;
若校验不通过,则将标志位的值更新为0;
若检测到STM32单片机中APP固件区发生物理损坏,则将标志位的值更新为3。
在一个具体的实施例中,所述利用外部存储器中的升级固件文件进行固件升级,具体包括:
确定外部存储器中的固件文件的标志位的值;
若标志位的值为2,则确定外部存储器中对应的固件文件为升级用的固件文件;
基于确定的升级用的固件文件进行固件升级。
在一个具体的实施例中,该方法还包括:
若确定标志位的值为0,则通过外部存储器重新接收固件文件;
若确定标志位的值为1,则启动APP固件区以执行正常功能;
若确定标志位的值为3,则生成报警信息并发送给指定的设备。
在一个具体的实施例中,所述网络透传模块具体包括:无线网络透传模块。
本发明实施例还提出了一种固件升级的设备,用于对STM32单片机的固件进行升级,该设备包括:
发送模块,用以通过移动终端获取升级用的固件文件,并通过网络透传模块将固件文件发送至bootloader;
第一缓存模块,用以通过所述bootloader将获取到的固件文件缓存在RAM中;
第二缓存模块,用以通过所述RAM不断将所获取到的固件文件转移至外部存储器中;
升级模块,用以利用外部存储器中的升级用的固件文件进行固件升级。
在一个具体的实施例中,该设备还包括:
更新模块,用以当STM32单片机的复位为普通复位时,将标志位的值更新为0;
当STM32单片机的复位是基于传输固件文件进行的复位时,将标志位的值更新为1;并对外部存储器所接收到的固件文件进行完整性的校验;
若校验通过,则将标志位的值更新为2;
若校验不通过,则将标志位的值更新为0;
当检测到STM32单片机中APP固件区发生物理损坏时,则将标志位的值更新为3。
在一个具体的实施例中,所述升级模块,具体用于:
确定外部存储器中的固件文件的标志位的值;
若标志位的值为2,则确定外部存储器中对应的固件文件为升级用的固件文件;
基于确定的升级用的固件文件进行固件升级。
在一个具体的实施例中,该设备还包括:处理模块,用以当确定标志位的值为0时,通过外部存储器重新接收固件文件;
当确定标志位的值为1时,启动APP固件区以执行正常功能;
当确定标志位的值为3时,生成报警信息并发送给指定的设备。
在一个具体的实施例中,所述网络透传模块具体包括:无线网络透传模块。
与现有技术相比,本发明实施例提出了一种固件升级的方法和设备,用于对STM32单片机的固件进行升级,其中,该方法包括:通过移动终端获取升级用的固件文件,并通过网络透传模块将升级用的固件文件发送至bootloader;通过所述bootloader将获取到的固件文件缓存在RAM中;通过所述RAM不断将所获取到的固件文件转移至外部存储器中;利用外部存储器中的升级用的固件文件进行固件升级。以此,通过外部大容量的外部存储器,实现了更大的适用范围,可以应对更大容量固件文件的升级,且通过网络透传模块进行固件文件的传输,方便了操作。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提出的一种固件升级的方法的流程示意图;
图2为本发明实施例提出的一种STM32单片机的结构的示意图;
图3为已有的的一种STM32单片机的固件升级所涉及的结构的示意图;
图4为本发明实施例提出的一种STM32单片机的固件升级所涉及的结构的示意图;
图5为本发明实施例提出的一种固件升级的设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和出示的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下,根据实施例及附图对本发明作进一步的详细说明:
如图1所示,为本发明实施例提出的一种固件升级的方法,用于对STM32单片机的固件进行升级,如图1所示,该方法包括:
步骤101、通过移动终端获取升级用的固件文件,并通过网络透传模块将升级用的固件文件发送至bootloader;
步骤102、通过所述bootloader将获取到的固件文件缓存在RAM中;
步骤103、通过所述RAM不断将所获取到的固件文件转移至外部存储器中;
步骤104、利用外部存储器中的升级用的固件文件进行固件升级。
其中,一种具体的STM32单片机的结构如图2所示,包括bootloader、APP固件区、RAM(random access memory,随机存取存储器)。
具体的,bootloader用于执行代码执行IAP功能,在具体的执行过程中,需要JTAG或ISP的烧入;而APP固件区则执行正常的用户功能,具体是通过bootloader的IAP功能烧入。
如图3所示,为一种已有的固件升级方式所涉及到的结构示意图,在该方式中,STM32单片机通过USB线与PC机相连,PC通过UART串口协议将APP固件文件传输给bootloader,bootloader将接收到的APP固件文件缓存到RAM中,接下来bootloader对APP固件区进行擦除,擦除完成后bootloader将APP固件文件写入APP固件区。这样就完整的实现了一次固件升级的操作。
但是,这种方式有以下缺陷:
第一,传统方案采用RAM进行固件文件暂存,固件文件大小受到RAM容量的限制;
第二,传统方案直接用存储在RAM中的固件文件来烧录到APP固件区,一旦系统电源波动或掉电,将会导致固件文件完全丢失和固件升级失败;
第三,传统方案采用USB等有线方式进行单片机和PC机的通信,给产品的外形设计带来不便,在户外或一些特殊应用场景下操作变得繁琐;
本发明人正是考虑到上述缺陷,提出了本发明的方案,采用两级缓存,即固件文件流首先被缓存到RAM中,随后RAM中的数据再被缓存到外部存储器,具体的,例如为外部FLASH,其中,外部FLASH的容量足够大,且外部存储器容易更换,可以根据需要选取合适的容量,解决了固件文件大小受到RAM容量的限制问题。
本文设计采用两级缓存,固件文件最终保存在外部FLASH中,掉电数据不会丢失。
此外,具体的网络透传模块可以为无线网络透传模块,一个具体的实施例中,无线网络透传模块例如可以为蓝牙无线透传模块,以此,可以通过蓝牙的方式来将固件文件传输给STM32单片机,这样产品外形设计时就不用考虑预留调试接口,在户外或一些特殊应用场景下只需要将移动终端(例如手机)连接到云端和STM32单片机便可以很方便的升级固件了。
实施例1
本发明实施例1公开了一种固件升级的方法,用于对STM32单片机的固件进行升级,如图1所示,该方法包括:
步骤101、通过移动终端获取升级用的固件文件,并通过网络透传模块将升级用的固件文件发送至bootloader;
步骤102、通过所述bootloader将获取到的固件文件缓存在RAM中;
步骤103、通过所述RAM不断将所获取到的固件文件转移至外部存储器中;
步骤104、利用外部存储器中的升级用的固件文件进行固件升级。
在一个具体的实施例中,该方法还包括:
若STM32单片机的复位为普通复位,将标志位的值更新为0;
若STM32单片机的复位是基于传输固件文件进行的复位,将标志位的值更新为1;并对外部存储器所接收到的固件文件进行完整性的校验;
若校验通过,则将标志位的值更新为2;
若校验不通过,则将标志位的值更新为0;
若检测到STM32单片机中APP固件区发生物理损坏,则将标志位的值更新为3。
在一个具体的实施例中,其过程分别的0、1、2、3个分支:
STM32单片机系统被复位后,从开始位置进入bootloader程序区,首先进行更新标志位的操作:如果是普通复位,更新标志状态则取0值,程序从对应的0分支跳转到APP程序区;
如果是传输固件文件复位,更新标志状态则取1值,
程序从对应的1分支进入,通过预设的协议交互,获取到固件文件的头部和*.bin固件文件并存入外部FLASH,固件文件接收完成后利用文件头部对文件进行校验,校验通过更新标志状态则取2值;校验未通过则更新标志状态则取0值;
如果分支1中正确接收了固件文件,接下来程序进入分支2,执行APP固件区擦除和写入操作;
分支3是预留给APP固件区物理损坏时的异常抛出响应。
在一个具体的实施例中,所述利用外部存储器中的升级固件文件进行固件升级,具体包括:
确定外部存储器中的固件文件的标志位的值;
若标志位的值为2,则确定外部存储器中对应的固件文件为升级用的固件文件;
基于确定的升级用的固件文件进行固件升级。
具体的,通过上述步骤,固件升级流程被分为0,1,2,3分支,接收固件操作和烧写固件操作被分开进行,即使发生系统电源波动和掉电后,升级流程可以接着上一次的断点或开始点继续运行。
在一个具体的实施例中,该方法还包括:
若确定标志位的值为0,则通过外部存储器重新接收固件文件;
若确定标志位的值为1,则启动APP固件区以执行正常功能;
若确定标志位的值为3,则生成报警信息并发送给指定的设备。
在一个具体的实施例中,所述网络透传模块具体包括:无线网络透传模块。
实施例2
本发明实施例2公开了一种固件升级的设备,用于对STM32单片机的固件进行升级,如图5所示,该设备包括:
发送模块201,用以通过移动终端获取升级用的固件文件,并通过网络透传模块将固件文件发送至bootloader;
第一缓存模块202,用以通过所述bootloader将获取到的固件文件缓存在RAM中;
第二缓存模块203,用以通过所述RAM不断将所获取到的固件文件转移至外部存储器中;
升级模块204,用以利用外部存储器中的升级用的固件文件进行固件升级。
在一个具体的实施例中,该设备还包括:
更新模块,用以当STM32单片机的复位为普通复位时,将标志位的值更新为0;
当STM32单片机的复位是基于传输固件文件进行的复位时,将标志位的值更新为1;并对外部存储器所接收到的固件文件进行完整性的校验;
若校验通过,则将标志位的值更新为2;
若校验不通过,则将标志位的值更新为0;
当检测到STM32单片机中APP固件区发生物理损坏时,则将标志位的值更新为3。
在一个具体的实施例中,所述升级模块204,具体用于:
确定外部存储器中的固件文件的标志位的值;
若标志位的值为2,则确定外部存储器中对应的固件文件为升级用的固件文件;
基于确定的升级用的固件文件进行固件升级。
在一个具体的实施例中,该设备还包括:处理模块,用以当确定标志位的值为0时,通过外部存储器重新接收固件文件;
当确定标志位的值为1时,启动APP固件区以执行正常功能;
当确定标志位的值为3时,生成报警信息并发送给指定的设备。
在一个具体的实施例中,所述网络透传模块具体包括:无线网络透传模块。
与现有技术相比,本发明实施例提出了一种固件升级的方法和设备,用于对STM32单片机的固件进行升级,其中,该方法包括:通过移动终端获取升级用的固件文件,并通过网络透传模块将升级用的固件文件发送至bootloader;通过所述bootloader将获取到的固件文件缓存在RAM中;通过所述RAM不断将所获取到的固件文件转移至外部存储器中;利用外部存储器中的升级用的固件文件进行固件升级。以此,通过外部大容量的外部存储器,实现了更大的适用范围,可以应对更大容量固件文件的升级,且通过网络透传模块进行固件文件的传输,方便了操作。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。