专栏首页知识分享GPRS网络(Air202/SIM800)升级STM32: 测试STM32远程乒乓升级,基于(GPRS模块AT指令TCP透传方式),定时访问升级

GPRS网络(Air202/SIM800)升级STM32: 测试STM32远程乒乓升级,基于(GPRS模块AT指令TCP透传方式),定时访问升级

实现功能概要

BootLoader程序:

    获取上次的更新状态,如果更新状态是0x01 则设置更新状态是 0xFF

    注:用户程序需要清除更新状态为0,如果用户程序运行错误,没有清零,则重启以后

    BootLoader程序判断更新状态为0xFF,则认为没有正常运行用户程序,

    就会执行切换程序文件,便会加载原先的程序文件.

    如果没有更新标志位,则尝试加载用户程序.

    如果有更新标志位,STM32控制GPRS模块以TCP方式连接Web服务器,然后发送Get 协议获取程序文件,写入Flash后,重启!

    每次写入Flash 切换Flash的写入位置,加入更新状态检测,更新失败则运行上一版程序(程序回滚)

APP用户程序:

    获取更新的状态,清除更新状态

    如果更新状态是 0x01 切换程序版本号

    每隔30S,控制GPRS模块以TCP方式连接Web服务器,获取当前程序版本,如果版本不一致,写入更新标志,重启单片机!

Flash配置:

测试准备工作(默认访问我的服务器,改为自己的服务器,请看后面说明)

一,下载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 拷贝记录设备版本的updatainfo.txt文件,和用户程序1文件(Progect.bin),用户程序2文件(Progect2.bin)到服务器

  最终效果

三,大家设置完自己的,重新按照上面的测试一下,看下可不可以测试通过

  可以自己看看是什么问题,或者告诉我有什么问题.

四,修改云端版本

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

五,测试程序有问题,实现程序回滚(由于底层处理都是一样的,可自行参考上一节测试)

  5.1 我说一下BootLoader里面预防的一个极端问题: 用户程序两份全是有问题的,程序不停的在重启

    5.1.1 在执行BootLoader程序的时候,实际上加载用户程序受控于,按钮(我用的PB5)

     5.1.2  假设出现极端情况,可让用户长按PB5大约4S,等待指示灯快闪,松开PB5,指示灯闪耀3S以后,程序写入更新标志位,然后重启 

        其实和一开始的一样的操作(这个也可以用来预防极端情况)

其它

一,可先下载第一份程序到单片机,让单片机默认运行一份程序

  1.1 操作步骤是先现在BootLoader程序(下载进去就可以,不需要任何配置)

  1.2 下载第一份用户程序(程序默认加载第一份用户程序),请按照下面配置下载

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 移植远程更新程序到STM32F103RET6型号的单片机,基于(GPRS模块AT指令TCP透传方式)

    这一节以 STM32F103RET6 (512KB Flash 64KB RAM) 为例 

    杨奉武
  • ESA2GJK1DH1K升级篇: 快速的移植升级程序到自己的项目(APP用户程序制作)

      APP用户程序的 stmflash.c stmflash.h 和 上一节的BootLoader 是一样的.

    杨奉武
  • STM32远程乒乓升级,基于GPRS模块AT指令TCP透传方式,定时访问升级(含有数据校验)

    一.当前只下载了BootLoader程序,在BootLoader程序里面实现更新,需要按照下面操作

    杨奉武
  • 悬赏百万美金,检测Deepfake假视频,数据集有470G:很久不见这么壕的比赛

    这是Facebook联合亚马逊、微软、“AI伙伴关系”以及各路学者,一同举办的比赛。

    量子位
  • Cell Research | 华农解析水虻基因组图谱和肠道微生物组降解规律

    近日,华中农业大学生命科学技术学院张吉斌教授课题组与上海植物生理研究所黄勇平研究员课题组合作,对武汉亮斑扁角水虻纯化10代的品系进行了全基因组测序,获得了高质量...

    生信宝典
  • 问与答71: 如何使用VBA打印PDF文件?

    A:在《VBA小技巧04:使用VBA获取能够打开指定文件的EXE程序》中,我们介绍了一个自定义函数ExePath,可以获取能够打开指定文件的EXE程序的路径。这...

    fanjy
  • 圣诞树背后的故事:生物学家耗时40年,只为用基因测序培育完美圣诞树

    镁客网
  • .NET MongoDB Driver GridFS 2.2原理及使用示例

    一、API解读 1 GridFSBucketOptions 1)public string BucketName { get; set; } 获取或设置buck...

    甜橙很酸
  • 业界 | 微软RobustFill:无需编程语言,让神经网络自动生成程序

    选自Microsoft Research blog 作者:Rishabh Singh等 参与:李泽南 长久以来,摆脱编程语言的束缚,让计算机自我生成程序一直是开...

    机器之心
  • Excel实战技巧58: 使用VBA创建进度条

    2.设置其ShowModal属性为False,这样在该用户窗体处于打开状态时仍能继续运行程序。

    fanjy

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动