ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于Wi-Fi模块AT指令TCP透传方式,MQTT通信控制升级(含有数据校验)-APP用户程序制作过程

2019-12-20 22:53:09  阅读:269  来源: 互联网

标签:状态 函数 Wi 升级 MQTT TCP 用户程序 BootLoader 更新


 

<iframe frameborder="0" height="1500" name="ifd" scrolling="auto" src="https://mnif.cn/开发板/ESA2GJK1DH1K/升级篇/directory.html" width="100%"></iframe>

 

 

前言

  这一节和上一节是搭配的

  给大家鱼,也必须给鱼竿!

  我期望自己封装的代码,无论过了多少年都有应用的价值!

  这节说明一下制作APP用户程序的过程

  咱是用MQTT通信控制模块实现升级,所以首先自己的程序先实现MQTT哈.

把以下文件放到自己的工程

  stmflash文件直接拷贝的上一节的

  IAP和上一节的不一样,做了很多裁剪.

  

 

 

 

主函数配置

  1.包含下头文件

    

  2.调用一个函数  IAPGetUpdateInfo();//获取更新的信息

    

 

 

  这个函数做的工作

    获取云端版本: 这个是在BootLoader里面升级的时候存进去的

    获取设备版本: 当前这个版本还是以前的程序版本,还没切换呢,后面会说在哪里切换的

    获取更新状态: BootLoader里面设置的那些更新状态

 

    

 

 

  

 

 

 

  大家可以在用户程序里面 通过 IAPStructValue.UpdateStatusValue的值来知道上次更新的状态

 

  为了更直观,大家直接可以调用  printf("%s",IAPStructValue.UpdateStatusStr); 打印对应的字符串

 

  也可以在认为程序没有问题的时候,把这些状态发给上位机,这样就直观的知道更新的状态

 

 

 

 

 

 

处理更新(为什么会有处理更新)

  先说一下哈,处理更新是这个函数

  IAPUpdateDispose();

  这个函数主要就是清零更新状态,然后如果判断运行的是新程序,则切换程序版本.

  

 

 

 

 

   然后说一下上面函数的妙处

  如果在BootLoader里面程序文件下载成功

 

    

 

 

 

 

 

  BootLoader下载好程序以后呢,写入状态为:0x01 然后重启了

 

  重启以后当然还是先运行 BootLoader

 

  然后 BootLoader 判断是0x01以后 写入 0xFF

 

  然后运行新的用户程序

  假设用户程序有问题 没有执行函数  IAPUpdateDispose();

  那么就没有把升级状态清零

  那么单片机重启以后又运行 BootLoader,此时BootLoader里面一判断还是0xFF

  便会认为没有正确执行用户程序,就会切换上一份用户程序执行

  

  然后总的来说就一句话:

  你认为APP用户程序运行没有问题了以后再调用 IAPUpdateDispose();

 

这节建议这样处理

  在连接上MQTT以后,咱调用下 IAPUpdateDispose();

  然后把升级状态通过MQTT发出去

  

  

 

 

  

  

 

 

 

    

 

标签:状态,函数,Wi,升级,MQTT,TCP,用户程序,BootLoader,更新
来源: https://www.cnblogs.com/yangfengwu/p/12075412.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有