|
STM32F10x的IAP在線(xiàn)升級(jí)功能非常實(shí)用——不必拆開(kāi)設(shè)備的外殼,然后通過(guò)JLINK或是其它工具燒錄程序。而是僅通過(guò)設(shè)備上的串口、USB或是CAN,即可完成程序的更新,實(shí)現(xiàn)固件升級(jí)。
整個(gè)過(guò)程用到兩個(gè)程序,一個(gè)IAP程序,它用來(lái)實(shí)現(xiàn)通過(guò)串口下載用戶(hù)程序。另一個(gè)就是用戶(hù)應(yīng)用程序了。
通過(guò)串口實(shí)現(xiàn)在線(xiàn)升級(jí)的原理如下:
1、首先通過(guò)JLINK或其它工具將IAP程序下載至STM32的FLASH中,其占據(jù)的地址空間為0x800 0000到0x8002fff,這段空間用來(lái)存放IAP程序,IAP代碼大小不能超過(guò)(0x800 2fff - 0x800 0000 =12K)。
2、打開(kāi)“超級(jí)終端”,按照IAP程序里設(shè)置的參數(shù)(波特率、數(shù)據(jù)長(zhǎng)度、校驗(yàn)位等),對(duì)“超級(jí)終端”作相應(yīng)設(shè)置。
3、將設(shè)備斷電,按住設(shè)備上的某一開(kāi)關(guān)或是按鍵(這個(gè)可以在IAP程序里自已定義,下文有敘述)。然后給設(shè)備上電,這時(shí)“超級(jí)終端”上會(huì)顯示操作界面,讓用戶(hù)選擇:1、給STM32下載新的用戶(hù)程序;2、將STM32內(nèi)現(xiàn)存的用戶(hù)程序上傳至電腦;3、運(yùn)行新下載的用戶(hù)程序。出現(xiàn)這個(gè)界面后,就可以松開(kāi)開(kāi)關(guān)或是按鍵了。
4、通過(guò)電腦鍵盤(pán)上的“1”、“2”、“3”這幾個(gè)數(shù)字鍵選擇你想執(zhí)行的操作。若是希望下載,按下數(shù)字鍵“1”.接下來(lái)電腦屏幕上會(huì)彈出對(duì)話(huà)框,讓你選擇希望下載的二進(jìn)制文件,以及傳輸協(xié)議,這個(gè)得選“Ymodem”協(xié)議。完成后按“確定”就開(kāi)始下載了。
再來(lái)看一下兩個(gè)源程序里,用戶(hù)根據(jù)自己的需要可能得改動(dòng)的地方。
an2557.zip里面就是IAP程序。
這個(gè)程序里面,用戶(hù)可能要改動(dòng)的就是IAP的觸發(fā)方式,即如何進(jìn)入IAP來(lái)進(jìn)行新的用戶(hù)程序的下載。該源程序里定義的是一個(gè)連接至PB9的按鍵,當(dāng)設(shè)備剛上電的時(shí)候,如果該按鍵按下,則進(jìn)入IAP模式,否則跳至0x8003000運(yùn)行用戶(hù)程序。如何觸發(fā)IAP,用戶(hù)可以根據(jù)自己的實(shí)際情況,自行定義。另外,這里面初始化了一個(gè)串口,即用來(lái)和PC通信的串口,波特率、數(shù)據(jù)長(zhǎng)度、校驗(yàn)位等,也是這里設(shè)置的。
再來(lái)看用用戶(hù)應(yīng)用程序里需要改動(dòng)兩個(gè)的地方。
1、將中斷向量表映射至0x8003000處。在main函數(shù)里,待系統(tǒng)初始化后,可以通過(guò)這條語(yǔ)句即可實(shí)現(xiàn):
NVIC_SetVectorTable(0x08000000,0x00003000);
2、將用戶(hù)應(yīng)用程序的起始地址設(shè)置為0x8003000,在keil4中如下圖所示:

另外請(qǐng)注意,在線(xiàn)升級(jí)時(shí)只能選擇BIN格式的二進(jìn)制文件,可以通過(guò)H-JTAG里面的Convert工具,將Keil編譯生成的HEX文件轉(zhuǎn)換成BIN文件。
以上就是通過(guò)串口實(shí)現(xiàn)STM32IAP在線(xiàn)升級(jí)的原理及過(guò)程。
若有不清楚的地方請(qǐng)看an2557:STM32F10x in-application programming using theUSART 這個(gè)PDF文檔,里面有詳細(xì)的說(shuō)明。
an2557 ApplicationNote.pdf下載地址:
http://www.st.com/st-web-ui/static/active/en/resource/technical/document/application_note/CD00161640.pdf
an2557.zip下載地址:(IAP源代碼)http://www.st.com/st-web-ui/static/active/en/st_prod_software_internet/resource/technical/software/firmware/stsw-stm32008.zip
|
|