IAP是什么
有時項目上需要遠(yuǎn)程升級單片機(jī)程序,此時需要接觸到IAP編程。
IAP即為In Application Programming,解釋為在應(yīng)用中編程,用戶自己的程序在運行過程中對User Flash的部分區(qū)域進(jìn)行燒寫。即是一種對單片機(jī)Flash擦寫的一種編程方案。
通常情況下,一片STM32單片機(jī)的Flash只有一個用戶程序,而IAP編程則是將單片機(jī)的Flash分成至少兩大區(qū)域,一部分叫做bootloader區(qū),一部分叫做app用戶代碼區(qū),還可留出一部分區(qū)域為代碼備份區(qū)。
IAP的應(yīng)用場所
通常情況下我們給STM32單片機(jī)燒錄更新程序時是通過SWD、J-link或者通過設(shè)置BOOT引腳后,使用串口進(jìn)行程序下載,這樣的方式直接一次性將程序文件下載到單片機(jī)的Flash中,比較適合絕大部分的應(yīng)用。
但是當(dāng)產(chǎn)品投入實際應(yīng)用時,封裝完成后在后期的使用過程中遇到某些程序上的bug或者是根據(jù)客戶需求需要增加一些功能的時候,使用傳統(tǒng)代碼燒錄的方法就可能需要拆除封裝,而使用IAP編程在bootloader區(qū)提前寫入與外部通信的接口用于升級單片機(jī)代碼,使得我們不用對已完成包裝的產(chǎn)品進(jìn)行拆除既可以更新代碼,這樣既節(jié)約了成本,也更加方便快捷。
IAP編程的流程
IAP編程將Flash區(qū)分成的兩個區(qū)域,bootloader區(qū)和app用戶代碼區(qū)具有截然不同的功能。
bootloader區(qū),主要實現(xiàn)接收程序文件,并將該程序?qū)懹谔囟ㄎ恢玫腇lash區(qū)域。而這里接收外部程序文件,就需要實時和外部通信了。STM32單片機(jī)與外部通信大多是通過自身的串口接收和發(fā)送數(shù)據(jù),不過STM32單片機(jī)的串口可以外接多種通訊接口。
例如422、485、GPRS及ESP8266等。即我們可以通過串口外接藍(lán)牙模塊、WiFi模塊或者是其他網(wǎng)絡(luò)模塊,就可以實現(xiàn)遠(yuǎn)程的文件傳送更新單片機(jī)程序了。
app用戶代碼區(qū)則是主要實現(xiàn)我們所需要的功能操作,除此之外app用戶代碼區(qū)還需要實時檢查代碼運行情況,通過判斷更新程序的標(biāo)志位來判斷是否需要升級程序。若是需要升級程序則進(jìn)入bootloader區(qū)進(jìn)行代碼更新;若不需要則繼續(xù)運行功能函數(shù)代碼即可。
根據(jù)運行流程,我們可以總結(jié)出簡單幾條bootloader設(shè)計過程中需要注意的地方:
精簡、程序盡可能精簡。在單片機(jī)Flash有限的情況下,bootloader代碼占用Flash的空間越小,則APP程序代碼就可占用更多,實現(xiàn)更多功能函數(shù)。
標(biāo)志位不受復(fù)位的影響。
Bootloader中盡量不使用中斷。
編輯:jq
-
編程
+關(guān)注
關(guān)注
88文章
3685瀏覽量
94927 -
IAP
+關(guān)注
關(guān)注
2文章
165瀏覽量
24875 -
單片機(jī)程序
+關(guān)注
關(guān)注
1文章
12瀏覽量
9649
原文標(biāo)題:STM32代碼遠(yuǎn)程升級之IAP編程
文章出處:【微信號:gh_94c30763133f,微信公眾號:FPGA那點事兒】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
IAP在應(yīng)用中編程及其應(yīng)用
STM32的IAP技術(shù)入門提高
SST單片機(jī)IAP編程示例(C語言)
STM32在應(yīng)用編程(IAP)使用USART
MCU之IAP升級

AN0001 AT32 IAP 使用 USART

Megawin 8051 MCU的IAP(應(yīng)用程序編程)示例代碼

常用的幾種IAP升級技術(shù)方案是哪些

評論