你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
zero99 发布时间:2018-10-17 16:05
STM32F769DK 云端固件升级例程软件开发文档+ z  ?* u7 q; q& C5 e4 N) `

1 R) @5 b  T: _2 c5 J7 i) a; U
( s9 x0 w: v. G" b! {2 E. ?; S1. 前言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

% R3 ?8 Z3 D1 v) b用户应用程序部分除了用户自己的功能程序外,还包括固件版本云端推送,固件文件云端下载以及断点续传等功能,程序结构相对复杂。+ 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
用户应用程序软件包包括以下功能组件
9 s# C. z: h/ Y6 G* X3 R从云端更新固件的应用程序代码+ o& |% }1 k0 D. m+ V
- MbedTLS(用于建立和云端的安全连接)
4 J( ^- a& M! n' ?# C/ l- LwIP(使用有线连接时的 TCP/IP 协议栈)' u$ L5 h" J6 t5 E6 r
- FreeRTOS# r; F$ Y: W/ [, ]: W: C
- Paho Embedded MQTT(MQTT 客户端在 STM32 上的实现)
( f. q- J# h& b, n9 ?4 a- cJSON(封装和解析 MQTT 数据包负载)
8 I9 Q: k/ e5 D! h- STM32F769I-Disc 的板级驱动(包括 QSPI Flash,LCD,Wifi 模块等驱动)
$ N0 ^7 |' `3 E9 _( t$ s$ x- STM32F7 系列的 HAL库2 o6 c' o7 p: w+ f* ], h! {9 }# S

6 d- n/ J' W* g3 w
( ?; J) M+ z6 M' H6 B支持 IAR Embedded Workbench IDE,V7.80.4 及以上版本。
. r5 Z" A$ P; e. i5 i* n本例程仅作为 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. 软件架构
# O3 A* U+ m" ^2 u2 J/ R用户应用程序的软件分层如下图,应用层程序可以通过接口函数调用各层的服务。8 q# c" o; H# Z! S2 V
- STM32F7Cube HAL 库:HAL 驱动层向上层软件提供了使用各个外设的接口函数。包括通常的或扩展属性的 APIs。
  \1 p- `! G) j上层的中间件,应用程序等可以通过调用这些 API 函数来操作外设,这样便不会使得上层的软件依赖于某个特定的
+ C: I( E4 I- ^2 cMCU。使得程序更具有复用性,并且容易移植到其他的 MCU 系列上去。# H$ \' i' \. y+ c
- STM32F769DK BSP 板级驱动:针对 STM32F769DK 这块板子上使用到的外设和资源,提供了相应的 API 函数,比 如 LED 灯的控制,按键的操作等。
$ _, M" x/ ^- W$ K1 P! I4 q  Z$ q- LwIP 协议栈:TCP/IP 协议的实现。
  p  n+ o/ ^' }( J- mbedTLS: 支持设备与云端建立 TLS 连接。
2 D/ ^( H+ A4 d4 a- Paho:Paho Embedded MQTT 实现 MQTT 客户端部分的协议。支持与云端建立 MQTT 通信。
1 T8 m7 p  _; h6 n6 j; M8 X' w6 Y- cJSON:针对嵌入式系统,提供 JSON 格式数据的解析。
7 |2 @; x7 t0 }7 v+ y/ ?' Z7 s- 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 的方式从云端下载文件。
' g8 z$ j# D4 A6 ^# c- 远程固件更新的程序:实现云端推送,自动下载,以及断点续传的逻辑。9 ^  u# |: P  r7 B. a
' s0 s# j: ?. X( l" x
12.png
/ \5 r; ?' r8 D, a! [3 Q7 ~* w+ S- c5 S% ?0 n% Y

8 m/ T8 E' |8 @( S3 e
; m. {, \' q- k7 v! I+ q/ @3. 文件结构8 J) C5 c4 Y0 K# J. p& Q

6 `4 V5 Q7 w1 i8 I' A用户应用程序的文件结构如下:
" q0 a' h  V4 D# l% J% ?) e 13.png
( q+ H; _# A- X: z0 G
. W9 s  l; U- ^4 X8 N% V2 g- o; R/ f9 z6 o) ]3 [. s# i
. E  l- i) [) |$ v
4. 软件模块
" P# u* d% m8 c: M- a( X+ V8 ^4 {, H$ _& L* z
4.1  网络 抽象层
* c5 W$ T4 K9 {- S6 h在实际的应用中,设备端可能通过多种方式连接到云端。比如以太网,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
了解更多,请下载后阅读
- h) F0 L7 s. O
9 ~7 n9 k/ d) f! L' Z( d2 g$ \下载地址1>>           下载地址2>>           更多实战经验>>
3 `- g, D3 }' C$ L; V8 B0 A6 j1 l/ n0 B+ r& h! M/ w  Q2 l7 p

7 S5 H/ |+ Z" m$ z
收藏 评论3 发布时间:2018-10-17 16:05

举报

3个回答
beckybai 回答时间:2018-10-17 22:55:46
支持,谢谢分享
creep 回答时间:2018-10-18 08:31:33
好东西,,谢谢分享!
糯米团大哥 回答时间:2018-12-24 09:43:31
OTA好实例,谢谢分享
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版