實現功能概要
單片機定時使用http訪問雲端的程序版本,如果版本不一致,
然后通過http下載最新的升級文件,實現遠程升級STM32程序.
兼容Air202 ,SIM800
測試准備工作(默認訪問我的服務器,改為自己的服務器,請看后面說明)
一,下載BootLoader程序(請自行下載)
二,調整波動開關位置,STM32和GPRS 串口1 通信
二,別忘了插手機卡,還有安裝上天線
三.准備兩個串口模塊,兩個串口模塊的RX,分別接到單片機的PA9和PA10.
4.1注:此為監控STM32和GPRS之間的數據,看到更新的過程.
4.2 示意圖
開始測試
一.當前只下載了BootLoader程序,在BootLoader程序里面實現更新,需要按照下面操作
長按PB5大約4S,等待指示燈快閃,松開PB5,指示燈閃耀3S以后,程序寫入更新標志位,然后重啟
二.監控的數據
三.實際應用請使用一個引腳控制模塊重啟
3.1 請在每個程序文件的此處修改(注,本人的板子現在未引出復位引腳,下一批板子將跟進)
3.2 如果沒有復位可能出現一直發送 AT+CIPSHUT ,模塊要等到好久才有反應
現在測試可人為進行復位!
四.運行用戶程序,每隔30S訪問一次雲端程序版本
修改為連接自己的服務器
一,修改BootLoader,和兩份用戶程序連接的Web服務器的IP地址,端口號信息
二,Http訪問程序文件的路徑請自行根據自己的修改,我按照我自己的說明
2.1 根據單片機程序訪問的路徑,在Web服務器建立文件夾
2.2 打開上位機軟件,計算兩份用戶程序的SUM值
2.3 計算第一份用戶程序的校驗值,並替換SumBin1的字段值
2.4 計算第二份用戶程序的校驗值,並替換SumBin2的字段值
2.2 拷貝記錄設備版本的updatainfo.txt文件,和用戶程序1文件(Progect.bin),用戶程序2文件(Progect2.bin)到服務器
最終效果
修改完了,然后按照文章一開始的測試
升級成功以后用戶程序里面在定時詢問是不是有新版本
咱剛升級進去的肯定是新版本.
咱到雲端修改下版本
四,修改雲端版本
五,用戶程序檢測到新版本,寫入更新標志,重啟,BootLoader更新另一份程序,重啟,運行新程序
其它
一,可先下載第一份程序到單片機,讓單片機默認運行一份程序
1.1 操作步驟是先下載BootLoader程序(下載進去就可以,不需要任何配置)
1.2 下載第一份用戶程序(程序默認加載第一份用戶程序),請按照下面配置下載
此時單片機啟動以后便會運行第一份用戶程序.