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