STM32CubeMx開發之路—在線升級OTA(1/4)—基礎知識


運行環境

  • Windows10
  • STM32CubeMX Version 5.4.0
  • Keil5(MDK5) Version 5.28.0.0
  • 硬件開發板 F103RB-NUCLEO

簡介

本例程主要講解在線升級(OTA)的基礎知識, 主要是針對IAP OTA原理分析, 分區劃分, 到代碼編寫實驗驗證等過程闡述這一過程. 幫助大家加深對OTA的認識.


什麼是BootLoader?

BootLoader可以理解成是引導程序, 它的作用是啓動正式的App應用程序.
換言之, BootLoader是一個程序, App也是一個程序, BootLoader程序是用於啓動App程序的.


STM32中的程序在哪兒?

正常情況下, 我們寫的程序都是放在STM32片內Flash中(暫不考慮外擴Flash).
我們寫的代碼最終會變成二進制文件, 放進Flash中
感興趣的話可以在Keil>>>Debug>>>Memory中查看, 右邊Memory窗口存儲的就是代碼

接下來就可以進入正題了.


進行分區

既然我們寫的程序都會變成二進制文件存放到Flash中, 那麼我們就可以進一步對我們程序進行分區.
我使用的是F103RB-NUCLEO開發板,他的Flash一共128頁, 每頁1K.見下圖:


以它爲例, 我將它分爲三個區.BootLoader區App1區App2區(備份區)具體劃分如下圖:

  • BootLoader區存放啓動代碼
  • App1區存放應用代碼
  • App2區存放暫存的升級代碼

總體流程圖

  • 先執行BootLoader程序, 先去檢查APP2區有沒有程序, 如果有就將App2區(備份區)的程序拷貝到App1區, 然後再跳轉去執行App1的程序.
  • 然後執行App1程序, 因爲BootLoaderApp1這兩個程序的向量表不一樣, 所以跳轉到App1之後第一步是先去更改程序的向量表. 然後再去執行其他的應用程序.
  • 在應用程序裏面會加入程序升級的部分, 這部分主要工作是拿到升級程序, 然後將他們放到App2區(備份區), 以便下次啓動的時候通過BootLoader更新App1的程序.
    流程圖如下圖所示:

備註:提供一下個人微信號 Hleafleafleaf,歡迎加好友,共同學習!共同進步!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章