ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于WIFI模块AT指令TCP透传方式,定时访问升级(含有数据校验)
实现功能概要
定时使用http访问云端的程序版本,如果版本不一致,然后通过http下载最新的升级文件,实现升级.
测试准备工作(默认访问我的服务器,改为自己的服务器,请看后面说明)
一,下载BootLoader程序(请自行下载)

二,调整波动开关位置,STM32和Wi-Fi 串口 通信

三,短接STM32的PB2和Wi-Fi模块的RST引脚(内部程序使用该引脚硬件复位Wi-Fi)

四.两个串口模块的RX,分别接到单片机的PA9和PA10.
4.1注:此为监控STM32和Wi-Fi之间的数据,看到更新的过程.

4.2 示意图

开始测试
一,打开可以配网的APP,给Wi-Fi配网
请参考基础篇: https://www.cnblogs.com/yangfengwu/p/11760590.html
二,配网成功后,默认重启以后更新程序文件,更新完成以后自动加载更新的用户程序
下面说明一下监控的数据
2.1 单片机发送数据,(获取云端程序文件的版本信息)

2.2 其实就是获取的这个文件

2.3 获取程序文件

2.4 如果升级没有问题重启以后运行刚升级进去的用户程序

修改为连接自己的服务器
一,修改BootLoader,和两份用户程序连接的Web服务器的IP地址,端口号信息



二,Http访问程序文件的路径请自行根据自己的修改,我按照我自己的说明
2.1 根据单片机程序访问的路径,在Web服务器建立文件夹

2.2 打开上位机软件,计算两份用户程序的SUM值


2.3 计算第一份用户程序的校验值,并替换SumBin1的字段值


2.4 计算第二份用户程序的校验值,并替换SumBin2的字段值


2.5 拷贝记录设备版本的updatainfo.txt文件,和用户程序1文件(Progect.bin),用户程序2文件(Progect2.bin)到服务器



2.5 最终效果

修改完了按照文章一开始的测试
升级成功以后用户程序里面在定时询问是不是有新版本
咱刚升级进去的肯定是新版本.
咱到云端修改下版本
修改云端版本
一,修改云端版本

二,用户程序检测到新版本,写入更新标志,重启,
BootLoader获取更新另一份程序,重启,运行新程序

其它
一,可先下载第一份程序到单片机,让单片机默认运行一份程序
1.1 操作步骤是先下载BootLoader程序(下载进去就可以,不需要任何配置)
1.2 下载第一份用户程序(程序默认加载第一份用户程序),请按照下面配置下载

此时单片机启动以后便会运行第一份用户程序.

ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于WIFI模块AT指令TCP透传方式,定时访问升级(含有数据校验)的更多相关文章
- ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于(WIFI模块AT指令TCP透传方式),定时访问升级
前言 学习此代码所需: 实现功能概要 定时使用http访问云端的程序版本,如果版本不一致,然后通过http下载最新的升级文件,实现升级. 测试准备工作(默认访问我的服务器,改为自己的服务器,请看后面说 ...
- ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于GPRS模块AT指令TCP透传方式,定时访问升级(含有数据校验)
实现功能概要 单片机定时使用http访问云端的程序版本,如果版本不一致, 然后通过http下载最新的升级文件,实现远程升级STM32程序. 兼容Air202 ,SIM800 测试准备工作(默认访问我的 ...
- ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于(GPRS模块AT指令TCP透传方式),定时访问升级(兼容Air202,SIM800)
实现功能概要 单片机定时使用http访问云端的程序版本, 如果版本不一致,然后通过http下载最新的升级文件,实现远程升级STM32. 兼容Air202,SIM800 测试准备工作(默认访问我的服务器 ...
- ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于(Wi-Fi模块AT指令TCP透传方式),MQTT通信控制升级
实现功能概要 前面的版本都是,定时访问云端的程序版本,如果版本不一致,然后下载最新的升级文件,实现升级. 这一节,在用户程序里面加入MQTT通信,执行用户程序的时候,通过接收MQTT的升级命令实现升级 ...
- ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于Wi-Fi模块AT指令TCP透传方式,MQTT通信控制升级(含有数据校验)-APP用户程序制作过程
前言 这一节和上一节是搭配的 给大家鱼,也必须给鱼竿! 我期望自己封装的代码,无论过了多少年都有应用的价值! 这节说明一下制作APP用户程序的过程 咱是用MQTT通信控制模块实现升级,所以首先自己的程 ...
- ESA2GJK1DH1K升级篇: 移植远程更新程序到STM32F103RET6型号的单片机,基于(GPRS模块AT指令TCP透传方式)
前言 上节实现远程更新是更新的STM32F103C8T6的单片机 GPRS网络(Air202/SIM800)升级STM32: 测试STM32远程乒乓升级,基于(GPRS模块AT指令TCP透传方式),定 ...
- ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于GPRS模块(Air202,SIM800)AT指令TCP透传方式,MQTT通信控制升级
实现功能概要 这节和上一节的功能一样(只不过上节是利用Wi-Fi模块,这节是利用GPRS模块) 用户程序里面加入MQTT通信,执行用户程序的时候, 通过接收MQTT的升级命令实现升级. 凡是可以实现M ...
- ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于Wi-Fi模块(ESP8266)AT指令TCP透传方式,MQTT通信控制升级(加入数据校验)
前言 这节演示下,上两节写的利用MQTT来控制STM32控制的程序 测试准备工作(默认访问我的服务器,改为自己的服务器,请看后面说明) 一,下载BootLoader程序(请自行下载) 首先BootLo ...
- ESA2GJK1DH1K升级篇: STM32远程乒乓升级,升级流程源码详细说明
前言 1.BootLoader程序,升级简要流程图 2.其实主要的就是把程序文件写入环形队列,然后环形队列取出来数据写入Flash 3.用户程序,简要流程图 下面的读一下,有个印象就可以: 说白了就是 ...
随机推荐
- mac解决安装提示“xxx软件已损坏,打不开,您应该将它移到废纸篓”的提示
如果没有“任何来源”选项则运行: macOS Sierra设置说明 若已安装了最新系统 macOS Sierra 则有可能出现某些安装包已损坏.显示未激活.打开崩溃等的提示!!原因是因为新系统屏蔽了任 ...
- Loj #3111. 「SDOI2019」染色
Loj #3111. 「SDOI2019」染色 题目描述 给定 \(2 \times n\) 的格点图.其中一些结点有着已知的颜色,其余的结点还没有被染色.一个合法的染色方案不允许相邻结点有相同的染色 ...
- IntelliJ IDEA 提交代码时出现:Code analysis failed with exception: com.intellij.psi......
IntelliJ IDEA 提交代码时出现:Code analysis failed with exception: com.intellij.psi...... 错误原因: 当我们勾选Perform ...
- navicat for Mysql查询数据不能直接修改
navicat for Mysql查询数据不能直接修改 原来的sql语句: <pre> select id,name,title from table where id = 5;</ ...
- log4j2记录日志到数据库(完美支持mysql使用DruidDataSource)
引用 log4j-core-2.12.1.jar log4j-web-2.12.1.jar 1:配置数据源 2:调用类 3:写入
- 五、Hexo静态博客背景及界面显示优化配置
示例预览:我的主页 背景图片添加 自动切换背景 静态本地背景 首先将已选定的背景图片放到博客根目录下的\source\images下 示例:D:\Blog\source\images\backgr ...
- 适配器模式(Adapter Pattern)--设计模式
在生活中,想用苹果充电线给安卓的手机充电时,因为两者的接口不一样,会导致充电口无法进行匹配, 这时候,就需要适配器,将安卓的充电口转化为苹果的接口,这样就可以充电啦.已有的类与新的接口不兼容问题是很普 ...
- Web应急:网站首页被篡改
网站首页被非法篡改,是的,就是你一打开网站就知道自己的网站出现了安全问题,网站程序存在严重的安全漏洞,攻击者通过上传脚本木马,从而对网站内容进行篡改.而这种篡改事件在某些场景下,会被无限放大. 现象描 ...
- .Net工具类--表达式目录树解析DataReader和DataTable
一.概述 在项目中经常会使用SQL去操作数据库,在读取数据的时候返回结果一般是DataReader和DataSet,其中DataaSet里面可以包含多个DataTable. 读取到数据之后,一般情况下 ...
- Prometheus监控学习笔记之Prometheus 2.x版本的常用变化
最近用了prometheus 2.0 版本,感觉改变还是有点大,现将改变相关记录如下: 1.prometheus.yml文件配置修改后,要想重新加载,必须在启动的时候添加参数: --web.enabl ...