關於STM32單片機的IAP實現

 

基於STM32F103單片機的IAP實現(雖然該篇文章不會詳細寫出實現細節,可是會從一個全局的角度講述,實際的實現細節只需根據datasheet便可完成)。編程

1、基礎概念服務器

      什麼是IAPIAP即在應用中編程(In-Application Programming IAP),簡單的說就像是一個用戶自定義的升級程序。實際上,STM32單片機的程序燒寫有多種方法,能夠用JTAG,也可用串口經過ISP軟件燒寫新程序。工具

JTAG的方式須要專用的燒寫工具,在產品佈置到現場後,更新產品程序比較麻煩,而經過串口的ISP軟件升級方法能夠直接使用常見的串口線升級程序,十分方便,這種方法用的是ISPISP能夠說是單片機默認的bootloaderspa

正常狀況下,單片機系統啓動後,會直接從用戶程序執行,而升級程序時,單片機會進入bootloader,在ISP中一直運行。ISP雖然方便了升級,可是仍是無法解決用戶自定義和遠程升級的問題。對於用戶來講,有時候可能須要在單片機設計

flash不一樣地址燒寫多個應用程序,用於根據不一樣條件啓動不一樣應用程序;有時候,產品分佈到全國各地,去全部現場升級程序明顯不理智,解決方法是將升級程序放到服務器上,發送遠程升級指令,設備進入IAP升級程序,從遠程blog

獲取升級應用程序,實如今線升級。flash

2、IAP實現產品

1.硬件io

STM32單片機的啓動方式有三種,class

單片機根據boot0boot1的引腳來肯定啓動方式。主閃存存儲器即爲用戶程序空間,IAP啓動將會從這裏開始,系統存儲器是ISP啓動,內置SRAM不討論。正常狀況下,boot0管腳接入低電平,單片機從應用程序開始執行;當使用ISP升級時,boot01boot10,系統進入ISP程序,等待串口升級,升級完成後,須要斷電,改變boot電平,從新啓動,讓單片機從應用程序執行。(因此ISP升級時,還須要關注有關boot腳的電平開關問題。)

IAP升級不須要改變任何管腳電平,由於它實際上就是一個應用程序,只是讓單片機啓動時先執行它,執行完後,跳轉到真正的應用程序執行。

注意:單片機第一次燒寫時,是須要經過JTAGISP燒寫IAP的,若是打算用ISP,那最好留一個boot腳的硬件撥碼開關用於首次ISP升級hex文件。

 

2.軟件

弄清楚硬件以後,就知道什麼樣的硬件boot對應什麼樣的啓動方式。加入IAP以後,系統啓動時會先執行IAP程序用於判斷是否達到升級條件和執行什麼樣的升級配置,相應的邏輯相似於下圖:

 

用戶能夠根據本身的需求來設計IAP程序,詳細設計能夠參考ST官方資料:               

 《使用STM32F10xxxUSART 實如今應用中編程》,並且官方也給出了例程,資料比較全面,實現起來也很簡單。

最後,提醒注意一點的是,在IAP後面的應用程序都要在系統啓動時從新定義中斷向量表。

相關文章
相關標籤/搜索