datasheet

STM32单片机

文章数:389 被阅读:1202017

账号入驻

STM32F7云端固件升级例程使用攻略之四:功能演示

2018-12-28
    阅读数:

在前三期的“STM32F7云端固件升级例程使用攻略”教程中,我们已经介绍了整体方案(查看详情)、云端操作步骤(查看详情),以及如何进行代码修改(查看详情),本期是系列教程的最后一讲,我们来进行方案的功能演示。


8

功能演示


功能一:发送板子状态到云端


 Step 1


上电复位运行程序(Bootloader程序先运行,然后自动跳转到用户程序)。


程序会自动获取IP地址,连接百度云成功后,周期性地向云端发送状态,包括:LED的状态、软件版本和运行状态。


下面分别是以太网连接和WiFi连接两种方式下运行的log信息:


例程支持两种log信息打印的方式:

  • 通过板载STLINK-V2自带的USB转串口,把log信息打印在PC的超级终端上。

  • 通过板载LCD,把log信息输出到LCD屏幕上。


以下为了截屏方便,采取第一种方式并向大家展示。两种方式通过LCD_LOG宏切换。



如果在项目全局宏使能了LCD_LOG,需要打开对lcd_log.c的编译。下文是基于串口打印log信息的方式,因此在项目全局宏中不要定义LCD_LOG,并且关闭对lcd_log.c的编译。



另外使用WiFi连接时,用户还要修改代码,在<wifi_net.c>填上所用AP热点的用户名和密码。


 Step 2


在PC机上,打开MQTT.fx软件,连接到demo对应的MQTTserver。


MQTT.fx中配置新连接的界面如下,根据云端给出的服务器地址等信息进行配置。



配置好连接的参数后,点击“连接”。


连接到服务器后在Subscribe页面订阅下面的主题:$baidu/iot/shadow/{deviceName}/update/accepted


然后就可以看到STM32F769DK板子发送的状态信息了。



如果MQTT.fx在Subscribe页面订阅的是$baidu/iot/shadow/{deviceName}/delta主题,则表示只有板子上传的消息有变化时,broker才转发给MQTT.fx这个客户端。由于板子上传的信息(LED状态、软件版本、板子工作状态)固定写死了,没有变化,则MQTT.fx收不到delta主题下的消息。



功能二:远程控制板上LED的状态


保持STM32F769DK板正常运行,并已连接到百度IOT服务器。


在MQTT.fx的publish窗口发布以下Json格式的消息到主题

$baidu/iot/shadow/{deviceName}/update,就可以远程控制打开板上LED。



由于板子有订阅【delta】主题,则任何MQTT客户端(板子本身、MQTT.fx)发布到【update】主题的消息,如有变化就会推送给板子。这里LED这个key的value从off变到了on,因此会把此消息推送给板子。


下图是板子的串口打印信息。



功能三:远程更新板子固件


我们前面已经预先在百度的BOS上放了新的固件,并且获得了固件下载的地址是:XXXXXXX。


保持STM32F769DK板正常运行,并已连接到百度IoT服务器。


在MQTT.fx的publish窗口,发布新固件信息到主题: 

$baidu/iot/shadow/{deviceName}/update


比如,推送信息如下:



“sw_version”,就是要下载的固件的版本。版本格式为:主版本号:+副版本号+测试版本号+00,应该和version.h中的版本对应。比如:有一个软件版本如下:



那么在推送信息中的版本号应该写:“01010000”。



STM32F769DK板子收到推送的新固件信息后,进行解析,并与当前QSPI中的版本进行比较。如果比当前QSPI中的版本新,则自动进行下载。

 

         

下载完成后,提示当前有新版本可用。如果需要更新MCU,请按蓝色USER按键。



用户按下蓝色USER按键后,程序复位。开始执行bootloader程序。


在bootloader程序中会将新的固件从QSPI FLASH烧写到MCU片上的FLASH中。然后跳转执行。


在烧写固件前, 程序会检查固件的完整性。如果发现固件被损坏,则不烧写。直接跳转执行老的程序,并且会在QSPI的INFO区做相应记录。重新从云端下载好的固件来覆盖已被损坏的固件。


功能四:一键恢复出厂固件


该例程还提供了一键恢复出厂固件的功能。


上电复位,程序在执行bootloader时,立刻按下蓝色USER键,就选择了恢复出厂固件。程序会从QSPI FLASH的0x00010000位置将预先烧录好的默认固件烧写到MCU中。然后跳转执行。


同样在烧写固件前, 程序会检查固件的完整性。如果发现固件被损坏,则不烧写。直接跳转执行老的程序,并且会在QSPI的INFO区做相应记录。重新从云端下载好的固件来覆盖已被损坏的固件。


参考文档


  • UM2033-Discovery kit with STM32F769NI MCU

  • UM0892: STM32 ST-LINK utility software description

  • STM32F769DK云端固件升级例程开发文档

  • STM32 OTA例程之cJSON使用

  • STM32 OTA例程之ESP8266使用

  • STM32 OTA例程之Paho embedded C使用


▼▼

STM32F7云端固件升级例程使用攻略
  • 攻略一:方案介绍(详情

  • 攻略二:云端操作(详情

  • 攻略三:代码修改(详情

  • 攻略四:功能演示(本文)


▼▼

点击【阅读原文】,下载技术资料

 利用MQTT及云存储实现STM32远程无线升级


↓↓↓“阅读全文”在这呢~

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: TI培训

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved