STM32+ESP8266+AIR202/302远程升级方案-程序优化3-关于版本号判断的问题

Posted yangfengwu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 字段的值弄几个对话框,让用户填写.

这样子即提高了效率也降低了失误的可能.

 

以上是关于STM32+ESP8266+AIR202/302远程升级方案-程序优化3-关于版本号判断的问题的主要内容,如果未能解决你的问题,请参考以下文章

STM32+ESP8266+AIR202/302远程升级方案-程序优化-如果判断Flash需要擦除再擦除Flash,提高Flash使用寿命

1-STM32+ESP8266+AIR202远程升级篇-远程升级篇概述

3-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案基础篇(项目功能演示--GPRS )

3-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(项目功能演示--远程升级WIFI模块程序)

3-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(购买域名,域名绑定IP)

20-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(升级篇优化)