STM32F103VET6的內(nèi)核是CortexM3,它的存儲系統(tǒng)采用統(tǒng)一尋址方式,程序存儲器、數(shù)據(jù)存儲器、寄存器和輸入輸出接口被組織在同一個4 GB的線性地址空間內(nèi)。存儲空間被分成8個主要塊,每個塊為512 MB。以STM32F103VET6處理器為例, 圖2為代碼塊和片內(nèi)SRAM的地址映射圖。STM32F103VET6有512 KB的Flash存儲空間,地址從008000000至00807ffff;有64 KB的SRAM,地址從020000000到02000ffff。
通過設(shè)置BOOT[1:0]引腳值為00,使STM32F103 VET6上電后從Flash的008000000地址處開始執(zhí)行代碼。
3IAP技術(shù)的實現(xiàn)
3.1IAP技術(shù)原理
在應(yīng)用編程(IAP)技術(shù)是指MCU在執(zhí)行用戶程序的過程中對片內(nèi)Flash 的部分區(qū)域進行擦寫,把真正的用戶二進制代碼燒寫到Flash中。在這里,IAP的程序要實現(xiàn)兩個功能: 一是通過GPRS通信接收已經(jīng)編譯鏈接好的二進制的應(yīng)用代碼到內(nèi)存;二是將應(yīng)用代碼燒寫到片內(nèi)Flash 中。系統(tǒng)復(fù)位后,MCU首先執(zhí)行IAP和GPRS通信程序,此段代碼必須使用硬件燒寫器,比如Jlink燒寫到MCU中;等待MCU接收并燒寫好真正的功能代碼后,跳轉(zhuǎn)至此段代碼開始執(zhí)行用戶程序。這兩段代碼都是燒寫在片內(nèi)Flash中,必須保證兩段代碼的存放區(qū)域不能重疊,否則會出現(xiàn)程序覆蓋,將無法正確執(zhí)行用戶程序。通過設(shè)置標志位,并且存儲到Flash中,來判斷上電后執(zhí)行的是IAP程序還是用戶程序。