STM32F769DK 云端固件升级例程软件开发文档+ z ?* u7 q; q& C5 e4 N) ` 1. 前言1 T4 a" _+ v# K# b STM32F769DK 云端固件升级例程分为两部分:Bootloader 和用户应用程序。5 O1 m! q- b R0 S8 B- l 该软件基于 STM32F7Cube 库运行在 STM32F769I-DISCO 探索板上,利用百度的 IoT 平台实现了从云端更新固件的功能。 Bootloader 部分主要负责将新版本用户应用程序从 QSPI Flash 烧到 MCU 内部 Flash 中,并跳转到应用程序运行,功能相对简单。$ K! j1 m7 @* s0 F 用户应用程序部分除了用户自己的功能程序外,还包括固件版本云端推送,固件文件云端下载以及断点续传等功能,程序结构相对复杂。+ L2 M" k/ v# l# D' Z: i* n 1 L) ^1 A( s+ _) ?% P$ y 本文档主要介绍用户应用程序这部分。也会对 Bootloader 做简单介绍。, [! x, S3 X" g6 S* l; z% n # {' \5 O# L1 ]) A) M 用户应用程序软件包包括以下功能组件 从云端更新固件的应用程序代码+ o& |% }1 k0 D. m+ V - MbedTLS(用于建立和云端的安全连接) - LwIP(使用有线连接时的 TCP/IP 协议栈)' u$ L5 h" J6 t5 E6 r - FreeRTOS# r; F$ Y: W/ [, ]: W: C - Paho Embedded MQTT(MQTT 客户端在 STM32 上的实现) - cJSON(封装和解析 MQTT 数据包负载) - STM32F769I-Disc 的板级驱动(包括 QSPI Flash,LCD,Wifi 模块等驱动) - STM32F7 系列的 HAL库2 o6 c' o7 p: w+ f* ], h! {9 }# S 支持 IAR Embedded Workbench IDE,V7.80.4 及以上版本。 本例程仅作为 STM32 无线远程升级功能的参考。8 W0 V G. A- w8 Z6 J ! k& T% p& S4 z7 t$ H + X; Y3 u3 [9 o$ P6 T . E- w# Z. X) r: W+ K 2. 软件架构 用户应用程序的软件分层如下图,应用层程序可以通过接口函数调用各层的服务。8 q# c" o; H# Z! S2 V - STM32F7Cube HAL 库:HAL 驱动层向上层软件提供了使用各个外设的接口函数。包括通常的或扩展属性的 APIs。 上层的中间件,应用程序等可以通过调用这些 API 函数来操作外设,这样便不会使得上层的软件依赖于某个特定的 MCU。使得程序更具有复用性,并且容易移植到其他的 MCU 系列上去。# H$ \' i' \. y+ c - STM32F769DK BSP 板级驱动:针对 STM32F769DK 这块板子上使用到的外设和资源,提供了相应的 API 函数,比 如 LED 灯的控制,按键的操作等。 - LwIP 协议栈:TCP/IP 协议的实现。 - mbedTLS: 支持设备与云端建立 TLS 连接。 - Paho:Paho Embedded MQTT 实现 MQTT 客户端部分的协议。支持与云端建立 MQTT 通信。 - cJSON:针对嵌入式系统,提供 JSON 格式数据的解析。 - FreeRTOS: 轻量级的实时操作系统。! r6 T& ^5 @0 c; o6 u9 L 5 \ R( x" {6 Q7 z7 m 除此以外,应用层还实现了:5 Q- w: |! K- `* Q* @ - 连接百度 IoT 平台的 MQTT 客户端: 基于 Paho,根据百度 IoT 平台的连接逻辑进行封装实现。. W9 H8 F0 } g5 Z) R - HTTP 客户端:在 MCU 端实现了 HTTP 客户端,支持通过 TCP 或者 TLS 的方式从云端下载文件。 - 远程固件更新的程序:实现云端推送,自动下载,以及断点续传的逻辑。9 ^ u# |: P r7 B. a ' s0 s# j: ?. X( l" x 3 Q7 ~* w+ S- c5 S% ?0 n% Y 3. 文件结构8 J) C5 c4 Y0 K# J. p& Q 用户应用程序的文件结构如下: ; R/ f9 z6 o) ]3 [. s# i . E l- i) [) |$ v 4. 软件模块 ( X+ V8 ^4 {, H$ _& L* z 4.1 网络 抽象层 在实际的应用中,设备端可能通过多种方式连接到云端。比如以太网,WIFI,2G/3G 等。所以程序中增加了网络抽象层,来$ X, c v$ G& [6 g 支持在不同连接方式上的切换。3 E9 e3 X$ s4 H5 S j5 V r( p! E# G1 h% }! | & Q" x' m7 ], H& x( c1 z4 m, h" x- b. O* S ...3 x' U; f* V. \. j " H& _. D: H5 c5 |# j ! \9 b! w' K9 o( f' ^& J 了解更多,请下载后阅读 下载地址1>> 下载地址2>> 更多实战经验>> / n0 B+ r& h! M/ w Q2 l7 p |
支持,谢谢分享 |
好东西,,谢谢分享! |
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中实现采集和中断