本发明属于远程固件更新
技术领域:
,特别是一种基于STM32F407单片机的靶场测试数据采集设备的远程固件升级方法。
背景技术:
:固件(firmware)一般存储于设备中的电可擦除只读存储器EEPROM(ElectricallyErasableProgrammableROM)或FLASH芯片中,一般可由用户通过特定的刷新程序进行升级的程序。在目前的嵌入式领域应用中,对设备进行固件更新通常使用编程器(下载器)等专业设备将编写好的程序烧录到嵌入式设备中。由于每一次的程序升级都需要将每个设备通过编程器(下载器)与计算机进行连接,从而达到下载的目的。这种方法往往只能为需要进行固件升级的设备进行一一升级,连接繁琐并且重复性劳动多,升级效率低下,后期升级维护复杂。技术实现要素:本发明的目的在于提供一种嵌入式设备远程固件升级方法,升级操作简单、效率高。实现本发明目的的技术解决方案为:一种嵌入式设备远程固件升级方法,适用于通过以太网或无线网络与远程TFTP服务器信号连接的基于STM32F407单片机的靶场测试数据采集设备,所述嵌入式设备包括flash空间,所述flash空间包括引导程序区域和固件程序区域,包括如下步骤:(11)下载请求:嵌入式设备作为TFTP客户端,向存储新版固件程序文件的远程TFTP服务器发起下载文件请求;(12)文件传输:远程TFTP服务器接收到读文件请求后,直接向嵌入式设备发回包含数据块编号以及数据块大小的数据报文,所有数据块整体构成新版固件程序文件;(13)程序写入:嵌入式设备将接收到的新版固件程序文件写入固件程序区域;(14)程序执行:嵌入式设备执行新版固件程序。本发明与现有技术相比,其显著优点为:1、升级操作简单:嵌入式设备进行固件升级时无需专业下载器,通过TFTP客户端模式连接到远程TFTP服务器无需固件编写者操作,操作简单;2、效率高:多台嵌入式设备可以进行批量固件升级,升级效率高。3、灵活可控:设备的升级与否可有用户自主决定,为用户提供选择升级的权力。下面结合附图和具体实施方式对本发明作进一步的详细描述。附图说明图1为本发明嵌入式设备远程固件升级方法的主流程图。图2为图1中文件传输步骤的流程图。具体实施方式如图1所示,本发明嵌入式设备远程固件升级方法,适用于通过以太网或无线网络与远程TFTP服务器信号连接的基于STM32F407单片机的靶场测试数据采集设备,所述嵌入式设备包括flash空间,所述flash空间包括引导程序(BootLoader)区域和固件程序区域。本发明嵌入式设备远程固件升级方法,包括如下步骤:(11)下载请求:嵌入式设备作为TFTP客户端,向存储新版固件程序文件的远程TFTP服务器发起下载文件请求;(12)文件传输:远程TFTP服务器接收到读文件请求后,直接向嵌入式设备发回包含数据块编号以及数据块大小的数据报文,所有数据块整体构成新版固件程序文件;所述(12)文件传输步骤中,远程TFTP服务器每次向嵌入式设备发回一个包含数据块和该数据块编号的DATA报文,嵌入式设备每次成功收到DATA报文后,向远程TFTP服务器发送一个回应报文;远程TFTP服务器接收到回应报文后,顺序发送下一个DATA报文。所述DATA报文中的数据块,直到最后一个DATA报文发送前,每个数据块大小均是完整;当发送DATA报文数据小于512字节时,文件传输结束;若最后一个DATA报文的数据大小正好为512字节,则远程TFTP服务器必须再次发送一个数据大小为0字节的额外DATA报文以表示传输结束。当TFTP客户端接收到一个数据包的大小小于完整数据块大小的数据包后,传输结束。TFTP协议为了传输的可靠性,使用了差错控制控制机制,差错控制主要用在报文损坏、报文丢失、确认丢失和报文重复四种情况。因此,优选地,所述(12)文件传输步骤中,当DATA报文出现损坏时,嵌入式设备检测出损坏DATA报文,并将该DATA报文丢弃,远程TFTP服务器不会收到回应报文,发送端计时器超时后,将重新传送该DATA报文;当DATA报文出现丢失,发送端无法接收到回应报文,发送端计时器超时后,将重新发送该DATA报文;当回应报文丢失后,若发送端计时器超时时间大于接收端计时器超时时间,接收端将重新发送ACK报文,若发送端计时器超时时间小于接收端计时器超时时间,发送端将重新发送DATA报文;当接收端收到了包含与之前收到的块编号重复的DATA报文时,将会丢弃掉当前接收到的DATA报文。(13)程序写入:嵌入式设备将接收到的新版固件程序文件写入固件程序区域;(14)程序执行:嵌入式设备执行新版固件程序。本发明使用采用TFTP传输协议,嵌入式设备以TFTP客户端模式连接到储存着新版二进制固件文件的TFTP服务器,向TFTP服务器发起下载请求,数据传输过程中,数据块大小为512字节,每块数据传输成功后,客户端将会向TFTP服务器发送ACK报文,TFTP服务器将会向设备发送下一个数据报文。新版固件下载完成后,在BootLoader的引导下,设备进行Flash的固件程序区域的擦除以及写入,完成对设备的固件升级,升级成功后,设备将跳转至固件存放区域的固件程序首地址完成设备正常运行。本发明以嵌入式设备为主体的方案为:一种嵌入式设备远程固件升级方法,适用于通过以太网或无线网络与远程TFTP服务器信号连接的嵌入式设备,所述嵌入式设备包括flash空间,所述flash空间包括引导程序区域和固件程序区域,其特征在于,包括如下步骤:(21)嵌入式设备作为TFTP客户端,向存储新版固件程序文件的远程TFTP服务器发起读文件请求;(22)嵌入式设备收到远程TFTP服务器发回的新版固件程序文件后,将新版固件程序文件写入固件程序区域;(23)嵌入式设备执行新版固件程序。本发明以远程TFTP服务器为主体的方案为:一种嵌入式设备远程固件升级方法,适用于通过以太网或无线网络与远程TFTP服务器信号连接的基于STM32F407单片机的靶场测试数据采集设备,所述嵌入式设备包括flash空间,所述flash空间包括引导程序区域和固件程序区域,其特征在于,包括如下步骤:远程TFTP服务器接收到嵌入式设备作为TFTP客户端发来的读文件请求后,向嵌入式设备发回包含数据块编号以及数据块大小的数据报文,所有数据块整体构成新版固件程序文件;以供嵌入式设备将新版固件程序文件写入固件程序区域并执行新版固件程序。优选地,上述各方案中所述嵌入式设备为基于STM32F407单片机的靶场测试数据采集设备。使用基于STM32F407单片机的靶场测试数据采集设备进行基于在应用编程(IAP)的远程固件升级。在嵌入式上电或者复位的同时,若用户按下了嵌入式设备的升级按键,设备跳转至引导程序所在的首地址执行引导程序。其中,BootLoader将会通过在线编程的方式下载到嵌入式设备Flash的引导程序区域,引导程序完成对TFTP协议的配置,以TFTP客户端模式连接到远程TFTP服务器,并向TFTP发起下载新版二进制固件文件的请求。新版固件下载完毕之后,设备将在BootLoader引导程序的配合下完成对设备Flash的擦除,写入操作,新版固件写入完毕之后,设备将会跳转至固件存放区域的首地址执行新版固件程序功能。若用户没有在设备上电或者复位的同时按下升级按键,设备将跳转至旧版固件所在的区间区域首地址,若设备flash的固件程序区域存在固件程序数据,则设备运行固件程序功能,若不存在固件数据,则提示用户当前设备不存在合法的固件。图2为TFTP客户端传输协议的流程图。TFTP(TrivialFileTransferProtocol)协议是一种基于UDP协议的简单文件传输协议,它支持ASCII码或者二进制格式的文件的上传与下载。TFTP协议共定义了五种类型的报文,如下表所示:表1TFTP协议报文报文名称报文含义以及对应操作码RRQ读文件请求报文,操作码为1WRQ写文件请求报文,操作码为2DATA数据报文,操作码为3ACK回应报文,操纵码为4ERROR错误信息报文,操作码为5本发明所实现的远程固件升级方法以在应用编程技术为基础,通过将Lwip轻型TCP/IP协议栈移植到基于STM32F407单片机的靶场测试数据采集设备中,在此基础上使用TFTP协议,将嵌入式设备配置为TFTP客户端模式,使用以太网连接到局域网内的TFTP服务器,完成对新版二进制固件程序文件的下载,烧录,实现设备的批量更新。在实现IAP功能时,需要实现在程序正常运行的同时,检测用户是否通过在设备上电或复位的同时按下升级按键,从而进入升级模式,实现对固件程序的更新。在嵌入式设备Flash的空间内,存放着两种程序区域,一种称作引导程序(BootLoader)区域,该区域的程序负责用户主动进入升级模式操作之后,对远程固件的下载和烧录,另一种乘坐固件程序区域,该区域的程序负责嵌入式设备的正常运行功能,并且可以被擦除以及再次写入。在对基于STM32F407单片机的靶场测试数据采集设备的片上Flash进行新版固件程序更新时,需要先对Flash进行固件程序区域地址进行擦除,对Flash的擦除主要分为扇区擦除和整片擦除两种方法。本发明采用对STM32F407的Flash进行扇区擦除。当嵌入式设备成功下载完存储在TFTP服务器的新版固件二进制文件后,设备将会在引导程序BootLoader的配合下先进行对Flash的擦除操作,BootLoader程序会从预先定义的存放固件程序区域的首地址开始对Flash进行擦除,在擦除前BootLoader程序会先解锁Flash,并提示用户Flash的擦除操作开始进行。Flash擦除完毕后,BooLoader将向Flash的固件程序区域首地址写入512字节的数据,数据写入成功后再向下一个地址再次写入512字节的数据,直到固件文件数据完全写入Flash的固件程序区域。当新版固件程序写入完毕后,嵌入式设备将跳转至固件程序的首地址开始运行固件程序。当前第1页1 2 3