连接的流程图STM32F103VET6与GPRS模块的数据交互通过串口来完成,终端与服务器的连接建立的过程如图4所示。建立连接后,MCU可以发送报文A1向服务器请求新固件。服务器收到此报文后,把要发送的BIN格式的新固件按照表1所示的报文格式发送至终端。帧长度是包含从类型到校验位的总长度。这里考虑到G510传输每帧数据的最长字节数和Flash写操作的方便性,设定数据区的最大长度为1024 B。服务器端打开BIN格式的文件,并且按照表1所示的帧格式把数据装载成帧A2,然后发送。用帧计数来避免因为网络拥堵等问题造成的数据传输错误。采用应答式的交互方式,终端每次收到一条固件帧,就以正确帧R1或者错误帧R2回应。R1和R2中包含帧计数和服务器端设置延时,发送完一帧数据后,延时5 s,在这段时间内,没有收到回应的数据则重发。服务器发送完最后一帧固件数据,并且收到正确的回答后,再发送一帧结束数据A3,使终端知道固件已经全部发送完毕。具体的服务器和终端的数据传输的流程图如图5所示。
先使用JTAG把IAP驱动和GPRS通信的代码写入到Flash的起始地址008000000处,然后复位终端,等待终端与服务器建立好连接。服务器使用图6所示的客户端界面形成规范的报文,然后发送到终端,实现终端固件的远程更新。
4结论
通过实验,用户代码被正常执行,说明远程更新已经正常实现。因此,IAP 技术为远程更新用户代码提供了极大的方便,不仅能够提高产品性能,增强产品的功能,而且大大降低了企业产品运营和维护的成本,是一门实用性很强的技术,在将来的3G、4G等嵌入式产品中将会被广泛地使用。