STM32F769DK 云端固件升级例程软件开发文档 ; K6 {% C" p, Q8 u/ v c% o + z6 p# x! |5 S/ D6 e$ K$ x5 b 1. 前言" P( ]* f; F T$ m8 Q STM32F769DK 云端固件升级例程分为两部分:Bootloader 和用户应用程序。 该软件基于 STM32F7Cube 库运行在 STM32F769I-DISCO 探索板上,利用百度的 IoT 平台实现了从云端更新固件的功能。 Bootloader 部分主要负责将新版本用户应用程序从 QSPI Flash 烧到 MCU 内部 Flash 中,并跳转到应用程序运行,功能相对简单。' u2 S/ F2 h6 p: Q! W8 f ' _6 }5 Y& v# A3 ` 用户应用程序部分除了用户自己的功能程序外,还包括固件版本云端推送,固件文件云端下载以及断点续传等功能,程序结构相对复杂。 本文档主要介绍用户应用程序这部分。也会对 Bootloader 做简单介绍。 : ]; f$ y* X7 V) @' r+ _: p 用户应用程序软件包包括以下功能组件: C& z6 B% B6 N# s! L+ |( ? 从云端更新固件的应用程序代码 - MbedTLS(用于建立和云端的安全连接) - LwIP(使用有线连接时的 TCP/IP 协议栈) - FreeRTOS" e: l& c4 d1 | - Paho Embedded MQTT(MQTT 客户端在 STM32 上的实现)! N: M8 C x1 z& j - cJSON(封装和解析 MQTT 数据包负载) - STM32F769I-Disc 的板级驱动(包括 QSPI Flash,LCD,Wifi 模块等驱动)6 ?7 _0 s8 p0 l7 q - STM32F7 系列的 HAL库 ' E9 ?6 I. Y, J! g' S$ J2 O / h) F: I4 H4 |6 }3 k) y 支持 IAR Embedded Workbench IDE,V7.80.4 及以上版本。% ^# J: P) h. |+ ? 本例程仅作为 STM32 无线远程升级功能的参考。+ u4 ^' s: e: I8 S 2. 软件架构 用户应用程序的软件分层如下图,应用层程序可以通过接口函数调用各层的服务。4 d' J, f$ a( y0 v1 j) S- e) m - STM32F7Cube HAL 库:HAL 驱动层向上层软件提供了使用各个外设的接口函数。包括通常的或扩展属性的 APIs。- o$ V9 D$ T2 G7 V1 E: [ 上层的中间件,应用程序等可以通过调用这些 API 函数来操作外设,这样便不会使得上层的软件依赖于某个特定的 D! M/ {( T; R1 e7 K6 h4 ^ MCU。使得程序更具有复用性,并且容易移植到其他的 MCU 系列上去。: S6 @5 |7 p b - STM32F769DK BSP 板级驱动:针对 STM32F769DK 这块板子上使用到的外设和资源,提供了相应的 API 函数,比 如 LED 灯的控制,按键的操作等。% L& H, R6 ~. Z, i4 j3 p# ^9 N& Y - LwIP 协议栈:TCP/IP 协议的实现。 - mbedTLS: 支持设备与云端建立 TLS 连接。% O u# x. }: I4 D9 A4 ? - Paho:Paho Embedded MQTT 实现 MQTT 客户端部分的协议。支持与云端建立 MQTT 通信。* S: E' I& p* _% x7 ^1 A5 L' w - cJSON:针对嵌入式系统,提供 JSON 格式数据的解析。 - FreeRTOS: 轻量级的实时操作系统。 a$ ?7 W& P/ o7 O) H $ `! v2 }2 h" t" ]$ r$ p3 D 除此以外,应用层还实现了: - 连接百度 IoT 平台的 MQTT 客户端: 基于 Paho,根据百度 IoT 平台的连接逻辑进行封装实现。 - HTTP 客户端:在 MCU 端实现了 HTTP 客户端,支持通过 TCP 或者 TLS 的方式从云端下载文件。 - 远程固件更新的程序:实现云端推送,自动下载,以及断点续传的逻辑。 2 a! Y$ b/ e7 W( t7 w / \* B& j9 q; A8 a ) Y0 k5 W- M1 e. M- g 3. 文件结构 用户应用程序的文件结构如下: 7 ^1 P( v5 `! j6 Z6 B- @7 e+ |1 R 4. 软件模块 ! {, H9 L, E3 | 4.1 网络 抽象层$ t! n0 \0 [* T7 x8 m0 u6 q9 } 在实际的应用中,设备端可能通过多种方式连接到云端。比如以太网,WIFI,2G/3G 等。所以程序中增加了网络抽象层,来3 B6 G" F; X* d: d3 j: X' W% E4 P 支持在不同连接方式上的切换。) {, Q& S" t U4 E " r4 Q& L l4 C8 U2 d! b: ]( @ ...% z+ @; g, L% q* G1 z* b' ] / ^: n6 I% i. I7 P1 ] 5 s4 @8 w# ^( ?9 S8 t3 U 了解更多,请下载后阅读 下载地址1>> 下载地址2>> 更多实战经验>> " ^% d+ x b, o5 }, u7 ] |
支持,谢谢分享 |
好东西,,谢谢分享! |
OTA好实例,谢谢分享 |
基于STM32F746G-Discover的扩展电路板
【合集】STM32F7教程、资料大集合
F769 Discovery实现播放U盘音乐的播放器
STM32 VS Code Extension (在Ubuntu上开发STM32,ST官方vscode插件使用指南)
STM32F765@216MHz跑NES模拟器【代码】【视频】
基于STM32F7实现ADC软件触发+轮询采集
基于STM32F7进行ADC采集解决更新问题
基于STM32F7使用定时器经验分享
实现基于STM32F7中周期采集
基于STM32F7中实现采集和中断