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所示。