3.2燒寫文件格式
IAP驅動和GPRS通信程序是用MDK編譯器生成的HEX文件,通過JTAG燒寫到STM32F103VET6的Flash中,起始地址是008000000。由于MDK產生的是HEX文件,因此需要使用轉換工具將用于通過GPRS通信方式從服務器端下發(fā)到終端的固件代碼由HEX文件格式轉換成BIN文件格式。終端將新的固件代碼寫入到Flash中,起始地址設為008020000。
3.3軟件實現
由于要更新的固件的存儲地址是008020000,因此需要調整新固件的中斷向量表的地址:NVIC_SetVectorTable(NVIC_VectTab_FLASH,008020000)。使用起始地址為00807f800最后一頁Flash存儲字符型變量Update_Flag,該變量的值保存了固件更新的狀態(tài)。當Update_Flag等于0時,代表無應用程序,MCU執(zhí)行IAP驅動和GPRS通信程序;當Update_Flag等于1時,代表應用程序是已經寫入Flash中的有效代碼,則MCU執(zhí)行新的固件程序。系統(tǒng)的軟件流程如圖3所示。