
1.前言 对于一个物联网应用,远程监控设备状态、远程更新设备固件都是其要包含的典型基本功能。本示例在百度天工 IoT 平台和STM32F769 探索板上实现了上述功能,并有以下特性: 支持 MQTT,HTTP 协议 支持安全传输(TLS)支持应用数据的 Json 格式解析 后台下载固件(不影响前台应用程序运行) 断点续传 固件完整性检查 支持一键恢复出厂默认固件在本示例中,STM32F769DK 板可以通过板载以太网接口或者外接的 WIFI 模块连接到百度天工IoT 平台,与其建立 MQTT 连接:将板上的 LED 灯状态、软件版本等信息上传到云端,并可接收云端下发的 LED 控制命令、新固件版本和下载地址。根据接收到新固件下载地址,通过 HTTP 协议从对应的服务器下载新固件。下载完成后程序通过LCD 屏向用户提示可用的新版本信息,用户可以通过用户按键启动新固件的升级。下载和升级过程支持固件完整性校验。 在此例程中,我们用到了百度 IoT 平台和对象存储(BOS)服务。首先需要在 IoT 平台上创建 MQTT 服务,百度 IoT 平台相当于MQTT 服务器,STM32F769DK 板相当 MQTT 客户端。在本示例中,还用到了一个 PC 端工具 MQTT.fx,作为另一个 MQTT客户端来向 STM32F769DK 板推送固件升级消息,接收 STM32F769DK 板发送到云端的消息并进行显示。远程下载的固件需要保存在百度云 BOS 服务器上,然后就可以获取到对应的下载链接。这个下载地址信息,通过 PC 上的MQTT 客户端 MQTT.fx 进行推送,STM32F769DK 板收到消息后,从百度的 BOS 服务器下载新固件。 本例程提供了 IAR 的工程。 2.系统框图 ![]() ![]() 3.存储区域划分 本示例用外部 QSPI Flash 保存从云端接收到的新固件和程序运行的状态。QSPI Flash 的功能区域划分如下: 地址 0 开始的 64K 字节:Info 区域,用来保存程序运行的状态以及接收到的固件下载地址和版本号等。 地址 0x00010000 开始的 4M 字节:Default Firmware 区域,用来保存默认的应用程序固件。通常可以将第一版稳定的应用程序,烧写到 Default 区域中,用作“恢复板子出厂设置”。 地址 0x00410000 开始的 4M 字节:Download Firmware 区域,用来保存在 OTA 过程中从云端下载的当前新固件。 STM32F769 MCU 的内部 Flash 分为两部分: 地址 0x08000000 开始是 Bootloader 程序:板子复位后,先执行的是 Bootloader 的程序,之后再跳转到应用程序。bootloader 程序会根据用户操作决定是否将 QSPI Flash 中的固件更新到 MCU 内部 Flash 中。 地址 0x08010000 开始,保存用户应用程序:它除了用户自己的功能程序之外,还包括与云端通信,以及从云端下载新固件的程序。 ![]() 完整版请查看:附件 |
STM32 OTA Demo.pdf
下载1.42 MB, 下载次数: 3
STM32F769I-DISCO开发板GUI学习内容(二)_课前硬件基础
基于STM32F767通过cube配置:QSPI接口读写64M PSRAM+flash参考资料...
【实战经验】基于STM32F7的网络时间同步例程
STM32硬件结构学习
STM32中BOOT的作用
【STM32F769I-DISC1】开发板刷入Micropython并完成点灯、读取内部温度测试
【STM32F769I-DISC1】测评01:创建STM32cube IDE 工程,点个灯
【STM32F769】创建deepseek本地服务,并实现http请求
汇编浮点库qfplib移植STM32F769I-DISCO开发板与硬件浮点运算性能测试对比
coremark移植到STM32F769I-DISCO开发板的两种方法