基于GPRS通信的MCU固件远程更新技术的实现
1系统的硬件设计
本系统的结构如图1所示。MCU使用芯片STM32F103VET6,该处理器是意法半导体(ST)公司发布的基于Cortex?M3内核的增强型系列处理器,工作频率最高达到72 MHz,带有片内RAM、片内Flash和丰富的外设。GPRS模块的型号是G510。MCU通过串口,使用AT命令与G510模块进行数据交互。USB转串口模块作为PC与MCU的数据交互的有效手段,通过打印数据信息就可以知道MCU的工作状态。电源模块产生两种电压,包括为MCU和USB模块供电的3.3 V电压和为GPRS模块供电的4.0 V电压。
2MCU的地址
STM32F103VET6的内核是Cortex?M3,它的存储系统采用统一寻址方式,程序存储器、数据存储器、寄存器和输入输出接口被组织在同一个4 GB的线性地址空间内。存储空间被分成8个主要块,每个块为512 MB。以STM32F103VET6处理器为例, 图2为代码块和片内SRAM的地址映射图。STM32F103VET6有512 KB的Flash存储空间,地址从008000000至00807ffff;有64 KB的SRAM,地址从020000000到02000ffff。
通过设置BOOT[1:0]引脚值为00,使STM32F103 VET6上电后从Flash的008000000地址处开始执行代码。
3IAP技术的实现
3.1IAP技术原理
在应用编程(IAP)技术是指MCU在执行用户程序的过程中对片内Flash 的部分区域进行擦写,把真正的用户二进制代码烧写到Flash中。在这里,IAP的程序要实现两个功能: 一是通过GPRS通信接收已经编译链接好的二进制的应用代码到内存;二是将应用代码烧写到片内Flash 中。系统复位后,MCU首先执行IAP和GPRS通信程序,此段代码必须使用硬件烧写器,比如J?link烧写到MCU中;等待MCU接收并烧写好真正的功能代码后,跳转至此段代码开始执行用户程序。这两段代码都是烧写在片内Flash中,必须保证两段代码的存放区域不能重叠,否则会出现程序覆盖,将无法正确执行用户程序。通过设置标志位,并且存储到Flash中,来判断上电后执行的是IAP程序还是用户程序。
3.2烧写文件格式
IAP驱动和GPRS通信程序是用MDK编译器生成的HEX文件,通过JTAG烧写到STM32F103VET6的Flash中,起始地址是008000000。由于MDK产生的是HEX文件,因此需要使用转换工具将用于通过GPRS通信方式从服务器端下发到终端的固件代码由HEX文件格式转换成BIN文件格式。终端将新的固件代码写入到Flash中,起始地址设为008020000。
3.3软件实现
由于要更新的固件的存储地址是008020000,因此需要调整新固件的中断向量表的地址:NVIC_SetVectorTable(NVIC_VectTab_FLASH,008020000)。使用起始地址为00807f800最后一页Flash存储字符型变量Update_Flag,该变量的值保存了固件更新的状态。当Update_Flag等于0时,代表无应用程序,MCU执行IAP驱动和GPRS通信程序;当Update_Flag等于1时,代表应用程序是已经写入Flash中的有效代码,则MCU执行新的固件程序。系统的软件流程如图3所示。
连接的流程图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的起始地址
物联网 嵌入式 MCU STM32 意法半导体 Cortex USB 电源模块 电压 相关文章:
- Cortex-M3的生态物联网数据采集分站设计(10-11)
- 基于物联网技术的智慧汽车检测线解决方案(04-07)
- 适合嵌入式射频系统调测的混合域示波器(06-13)
- 泰克MDO4000混合域示波器应用案例分析四——RF模块功能验证及调试(07-30)
- μTrace对Cortex-M处理器进行智能调试与跟踪(12-16)
- 盘点NI 2014年关键技术,看软硬件平台如何推动工程创新(01-13)