(华北打算机系统工程研究所,北京 100083)
:在阐述STM32F103VET6微处理器的存储空间和在运用中编程(IAP)技能事理的根本上,以GPRS通信的办法,实现了MCU固件在线远程更新,提高了固件掩护的方便性,缩短了终端系统的开拓周期,降落了本钱。

:STM32F103;GPRS;IAP;固件更新
在以物联网、大数据、云打算为代表的信息科技爆炸式发展的本日,嵌入式产品越来越丰富,并且版本的升级迭代速率非常快。但是常日的嵌入式产品都是用烧写器将代码烧写到嵌入式主掌握器或者其他存储芯片中,在产品交付给用户往后,如果须要对软件代码进行升级,或者生产厂家想要对产品进行修正,就必须到现场重新烧写程序。这样,从韶光到本钱都造成了很大的开销,非常不灵巧。因此远程更新MCU的固件就成为办理这一问题的有效手段。本文以STM32F103VET6 为平台,利用GPRS通信办法和IAP 技能实现MCU固件的远程更新。该技能对付具备GPRS通信的嵌入式产品有很好的帮助,对3G或者4G的嵌入式产品也有借鉴的意义。
1系统的硬件设计
本系统的构造如图1所示。MCU利用芯片STM32F103VET6,该处理器是意法半导体(ST)公司发布的基于CortexM3内核的增强型系列处理器,事情频率最高达到72 MHz,带有片内RAM、片内Flash和丰富的外设。GPRS模块的型号是G510。MCU通过串口,利用AT命令与G510模块进行数据交互。USB转串口模块作为PC与MCU的数据交互的有效手段,通过打印数据信息就可以知道MCU的事情状态。电源模块产生两种电压,包括为MCU和USB模块供电的3.3 V电压和为GPRS模块供电的4.0 V电压。
2MCU的地址
STM32F103VET6的内核是CortexM3,它的存储系统采取统一寻址办法,程序存储器、数据存储器、寄存器和输入输出接口被组织在同一个4 GB的线性地址空间内。存储空间被分成8个紧张块,每个块为512 MB。以STM32F103VET6处理器为例, 图2为代码块和片内SRAM的地址映射图。STM32F103VET6有512 KB的Flash存储空间,地址从0x08000000至0x0807ffff;有64 KB的SRAM,地址从0x20000000到0x2000ffff。
通过设置BOOT[1:0]引脚值为00,使STM32F103 VET6上电后从Flash的0x08000000地址处开始实行代码。
3IAP技能的实现
3.1IAP技能事理[1]
在运用编程(IAP)技能是指MCU在实行用户程序的过程中对片内Flash 的部分区域进行擦写,把真正的用户二进制代码烧写到Flash中。在这里,IAP的程序要实现两个功能: 一是通过GPRS通信吸收已经编译链接好的二进制的运用代码到内存;二是将运用代码烧写到片内Flash 中。系统复位后,MCU首先实行IAP和GPRS通信程序,此段代码必须利用硬件烧写器,比如JLink烧写到MCU中;等待MCU吸收并烧写好真正的功能代码后,跳转至此段代码开始实行用户程序。这两段代码都是烧写在片内Flash中,必须担保两段代码的存放区域不能重叠,否则会涌现程序覆盖,将无法精确实行用户程序。通过设置标志位,并且存储到Flash中,来判断上电后实行的是IAP程序还是用户程序。
3.2烧写文件格式
IAP驱动和GPRS通信程序是用MDK编译器天生的HEX文件,通过JTAG烧写到STM32F103VET6的Flash中,起始地址是0x08000000。由于MDK产生的是HEX文件,因此须要利用转换工具将用于通过GPRS通信办法从做事器端下发到终真个固件代码由HEX文件格式转换成BIN文件格式。终端将新的固件代码写入到Flash中,起始地址设为0x08020000。
3.3软件实现
由于要更新的固件的存储地址是0x08020000,因此须要调度新固件的中断向量表的地址:NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x08020000)[2]。利用起始地址为0x0807f800末了一页Flash存储字符型变量Update_Flag,该变量的值保存了固件更新的状态。当Update_Flag即是0时,代表无运用程序,MCU实行IAP驱动和GPRS通信程序;当Update_Flag即是1时,代表运用程序是已经写入Flash中的有效代码,则MCU实行新的固件程序。系统的软件流程如图3所示。
连接的流程图STM32F103VET6与GPRS模块的数据交互[3]通过串口来完成,终端与做事器的连接建立的过程如图4所示。建立连接后,MCU可以发送报文A1向做事器要求新固件。做事器收到此报文后,把要发送的BIN格式的新固件按照表1所示的报文格式发送至终端。帧长度是包含从类型到校验位的总长度。这里考虑到G510传输每帧数据的最长字节数和Flash写操作的方便性,设天命据区的最大长度为1 024 B。做事器端打开BIN格式的文件,并且按照表1所示的帧格式把数据装载成帧A2,然后发送。用帧计数来避免由于网络拥堵等问题造成的数据传输缺点。采取应答式的交互办法,终端每次收到一条固件帧,就以精确帧R1或者缺点帧R2回应。R1和R2中包含帧计数和做事器端设置延时,发送完一帧数据后,延时5 s,在这段韶光内,没有收到回应的数据则重发。做事器发送完末了一帧固件数据,并且收到精确的回答后,再发送一帧结束数据A3,使终端知道固件已经全部发送完毕。详细的做事器和终真个数据传输的流程图如图5所示。
先利用JTAG把IAP驱动和GPRS通信的代码写入到Flash的起始地址0x08000000处,然后复位终端,等待终端与做事器建立好连接。做事器利用图6所示的客户端界面形成规范的报文,然后发送到终端,实现终端固件的远程更新。
4结论
通过实验,用户代码被正常实行,解释远程更新已经正常实现。因此,IAP 技能为远程更新用户代码供应了极大的方便,不仅能够提高产品性能,增强产品的功能,而且大大降落了企业产品运营和掩护的本钱,是一门实用性很强的技能,在将来的3G、4G等嵌入式产品中将会被广泛地利用。
参考文献
[1] 曹欲晓,韩冬,徐金宝.一种基于CPUID 和AES 算法的STM32 固件升级方案[J].电子技能运用,2015,41(3):2830.
[2] 陈峰峰,胡毅,许艳.STM32F10x 在运用中编程的实现方法[J].技能纵横,2009(9):2531.
[3] Fibocom Wireless Inc. G5family at commands user manual[Z].2013.









