打印
[应用相关]

STM32垂直应用挑战第五周+STM32F769DK云端固件升级例程

[复制链接]
645|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lark100|  楼主 | 2020-12-19 21:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式


STM32F769DK云端固件升级例程软件开发文档
https://www.stmcu.com.cn/Designresource/design_resource_detail?file_name=%E5%88%A9%E7%94%A8MQTT%E5%8F%8A%E4%BA%91%E5%AD%98%E5%82%A8%E5%AE%9E%E7%8E%B0STM32%E8%BF%9C%E7%A8%8B%E6%97%A0%E7%BA%BF%E5%8D%87%E7%BA%A7%E4%BE%8B%E7%A8%8B%E7%9A%84%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3&lang=EN&ver=1

STM32F769DK云端固件升级例程分为两部分:Bootloader和用户应用程序。
该软件基于STM32F7Cube库运行在STM32F769I-DISCO探索板上,利用百度的IoT平台实现了从云端更新固件的功能。
Bootloader部分主要负责将新版本用户应用程序从QSPI Flash烧到MCU内部Flash中,并跳转到应用程序运行,功能相对简单。
用户应用程序部分除了用户自己的功能程序外,还包括固件版本云端推送,固件文件云端下载以及断点续传等功能,程序结构相对复杂。

用户应用程序软件包包括以下功能组件
 从云端更新固件的应用程序代码
 MbedTLS(用于建立和云端的安全连接)
 LwIP(使用有线连接时的TCP/IP协议栈)
 FreeRTOS
 Paho Embedded MQTT(MQTT客户端在STM32上的实现)
 cJSON(封装和解析MQTT数据包负载)
 STM32F769I-Disc的板级驱动(包括QSPI Flash,LCD,Wifi模块等驱动)
 STM32F7系列的HAL库


用户应用程序的软件分层如下图,应用层程序可以通过接口函数调用各层的服务。



在实际的应用中,设备端可能通过多种方式连接到云端。比如以太网,WIFI,2G/3G等。所以程序中增加了网络抽象层,来支持在不同连接方式上的切换。


MQTT协议在TCP之上,属于应用层的协议,它基于发布/订阅模式的轻量级通信协议,适用资源受限设备,低带宽,高延时,不稳定网络中进行消息传输。
Baidu的MQTT客户端,基于Paho的MQTT客户端实现。这部分的代码由三部分组成:对网络接口函数的封装,百度IoT客户端的操作和对MQTT消息的处理。分别位于baidu_iot_network_wrapper.c,baidu_iotclient.c和mqtt_msg_handler.c文件中。


收到云端推送的新固件下载信息后,程序会自动通过HTTP来下载新的固件,然后根据用户的选择进行更新。这个模块由2部分内容组成:
 通过HTTP下载文件
 将下载的固件烧写到外部QSPI Flash中
代码在http_util.c和rfu.c两个文件中。


从云端下载的固件先被保存在QSPI Flash中。QSPI Flash除了保存从云端下载的固件,还保存下载过程的一些状态信息,比如下载的版本,下载的连接,下载失败的标志等。
在stm32f769i_discovery_qspi.c文件中,提供了读写QSPI Flash的接口函数:BSP_QSPI_Erase_Sector(), BSP_QSPI_Erase_Block(), BSP_QSPI_Write(), BSP_QSPI_Read()等。
在qspi_flash_if.c文件中,则提供了对状态信息读写的接口函数。




过程复杂,结合软件实际操作学习效果更好!

STM32F769DK云端固件升级例程.pdf (658.58 KB)

399695fde04a5ae7a3.png (86.22 KB )

399695fde04a5ae7a3.png

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:有阳光就灿烂,有知识就高兴!!

114

主题

4421

帖子

10

粉丝