移植遠程更新程式到STM32F103RET6型號的單片機,基於(GPRS模組AT指令TCP透傳方式)

  • 2019 年 11 月 11 日
  • 筆記

前言

上節實現遠程更新是更新的STM32F103C8T6的單片機

GPRS網路(Air202/SIM800)升級STM32: 測試STM32遠程乒乓升級,基於(GPRS模組AT指令TCP透傳方式),定時訪問升級

這節將告訴大家如何移植到其它型號的單片機.

這一節以 STM32F103RET6 (512KB Flash 64KB RAM) 為例 

我使用我的這塊板子

  大家測試的時候可以按照下面的方式接到自己的GPRS模組(Air202 / SIM800)

  單片機串口1 接到GPRS的AT指令配置串口

  單片機引腳PB2 接到GPRS的複位引腳

直接上菜

一,由於是移植的F103系列所以BootLoader程式咱可以不用移植,直接先拷貝過去

二,調整下Flash的分配

  2.1 自己自行調整哈,不過要注意最好設置成2的倍數因為512KB的Flash單片機都是以2KB作為一頁

三,其它大家應該知道的配置(以下根據自己使用的晶片選擇)

 四,編譯下載,看下列印的資訊

  user1ROMStart: 0x8004000  //用戶程式1開始的地址   user1ROMSize : 0x3d000      //用戶程式1大小  249856位元組 == 244KB

  user2ROMStart: 0x8041000  //用戶程式2開始的地址   user2ROMSize : 0x3d000      //用戶程式2大小  249856位元組 == 244KB

五,當前Flash分配

六,然後呢,還有一點,大家可以修改一個地方.這個是預留的,方便不同的用戶

  6.1 在BootLoader裡面呢,其實每隔30S訪問一下升級,不過是受升級標誌限制的

  6.2 通過上面的章節咱知道在BootLoader裡面想操作升級,需要按下PB5等待3S指示燈快閃以後,寫入升級標誌重啟,然後實現的升級

    如果運行在BootLoader裡面超過30S其實就說明沒有用戶程式可執行(或者在升級中)

    我現在希望只要是運行在BootLoader裡面超過30S,就主動訪問升級去吧!讓晶片主動一點

    所以做以下更改

七,最後呢!修改下訪問的http路徑

現在看用戶程式

一,假設用戶程式是什麼也沒有的,我以下面的作為用戶程式的底層

二,打開那個程式,首先咱弄的簡潔點,這個程式就是控制PC13 500Ms亮  500Ms滅,其它功能就不做了

  咱遠程更新的時候只要發現PC13 500Ms亮 500Ms滅就說明更新進去了

三,拷貝BootLoader裡面的stmflash 到咱當前工程

四,然後呢需要拷貝IAP文件(可以拷貝BootLoader裡面的,也可以拷貝原先的用戶程式裡面的)

  建議拷貝原先用戶程式裡面的IAP文件,因為原先用戶程式裡面的IAP相對於BootLoader裡面的做了很多裁剪(省記憶體)

  無所謂哈,拷貝哪個都一樣用,裡面所有的操作都一樣,只不過BootLoader裡面的IAP文件比較龐大點,佔用記憶體大點

五,整理下工程

六,添加上處理升級部分

  6.1 獲取更新的狀態,為了簡潔了當我就直接拷貝源碼

  6.2 我是從原先用戶程式的這裡拷貝的

  6.2 處理更新狀態

  6.3 源碼位置

現在用戶程式的處理升級部分的完了,接著配置下生成bin文件

  一,配置用戶程式1

    1.1,還記得上面列印的不

    1.2,配置用戶程式1

    1.3 配置下生成的用戶程式1的bin文件名字  我設置的是 Progect.bin

  二,配置用戶程式2

    2.1 拷貝出來一份用戶程式

    2.2 打開STM32F10xTemplate – 副本程式,首先把基本配置先檢查一遍

    2.2 打開STM32F10xTemplate – 副本程式,配置生成bin文件

    2.3 配置下生成的用戶程式2的bin文件名字  我設置的是 Progect2.bin

測試

  一,拷貝記錄設備版本的updatainfo.txt文件,和用戶程式1文件(Progect.bin),用戶程式2文件(Progect2.bin)到伺服器

  最終效果

  二,下載BootLoader程式

  三,等待大約30S

    3.1 我監控的數據  大家會發現執行了用戶程式,但是會每隔5S重啟

    3.2 其實忘了告訴大家一講事情了,BootLoader 裡面的程式配置,對用戶程式同樣有效,所以用戶程式需要有喂狗程式

      可以自己加上喂狗程式以後自己重新測試.

結語

  該程式程式碼可以比較方便的移植到F103全系列的型號上.

  其實大家不必急於弄懂我的程式,因為這套升級程式我測試了很多很多次,做了很長時間,最終總結成現在的

  如果不明白流程,可以問我哈.

  其實無論再怎麼變,本質改變不了,環形隊列快取數據,寫入Flash,啟動運行.

  其它的皆是為了穩定性而做的配合性程式