STM32+ESP8266+AIR202/302遠程升級方案-程序優化3-關於版本號判斷的問題


<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_B/" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

 

說明

 當前的程序,版本號是用一個數組記錄在了用戶程序里面

 

 

 

每次升級固件的時候,需要修改這個版本號,然后info.txt文件里面的版本號也需要跟着修改

 

 

 

用戶程序運行的時候,獲取info.txt文件里面的版本號.

然后和自己程序里面的   char FirmwareVersion[FirmwareVersionLen] = "0.0.2";

進行對比,如果不一致就說明有新版本.

 

問題

如果開發人員疏忽,本身用戶程序里面寫的是 0.0.2

但是info.txt里面寫的是0.0.3

 

 

 

就是說,沒有對應起來,就會出現問題!

用戶程序里面是0.0.2,而從info.txt一直得到的是0.0.3所以就會檢測出來一直有新版本,

導致一直在升級程序.

 

為什么要把版本號寫到用戶程序里面

如果用戶看過我老版本的教程,會發現並沒有把版本寫在用戶程序里面

而是每次升級完成的時候把info.txt文件里面的版本號保存到Flash記錄下來.

檢測升級的時候是拿着本地記錄的版本號和雲端的info.txt文件里面的版本號做對比

這種方式完全避免了上面說的那種問題!

 

后期的教程之所以改了方案,是因為要兼容各大物聯網平台!

有些平台只提供了上傳固件到服務器的功能,然后上傳的時候設置一下版本號

然后如果單片機想升級,就上報一下自己程序的版本號,雲平台去判斷版本如果不一致

就把程序或程序下載鏈接發給單片機.最后單片機去下載,下載完成以后上報一下最新的版本號.

 

用戶會發現,物聯網平台並沒有提供獲取雲端版本號的接口.

如果不把固件版本寫到用戶程序里面,那么就接入不了某些物聯網平台了!

 

當時我考慮由於操作人員疏忽而造成反復升級的比重太小.

一次編寫到處運行占的比重更大!

所以我才定的這個方案.

當然有些用戶確實擔心這個問題,所以我預期提供下面解決的方式

 

方式1:由OTA Tools軟件生成info.txt文件

{"version":"0.0.3","size":16120,"url":"http://mnif.cn/ota/hardware/STM32ESP8266BK/user_crc.bin","info":"1.解決了部分BUG
2.優化了部分程序"}

現在主要解決的是info.txt里面的版本號和程序文件里面版本號容易修改錯的問題.

那就不讓用戶去修改.直接用軟件生成info.txt

version ,size 和 url 的字段的值都由軟件提取bin文件信息生成.

最后 info 字段的值弄幾個對話框,讓用戶填寫.

這樣子即提高了效率也降低了失誤的可能.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM