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

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

[复制链接]
zero99 发布时间:2018-10-17 16:05
STM32F769DK 云端固件升级例程软件开发文档
, h& f& q) B& j* H! D; 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 和用户应用程序。
- `. N; p: w2 p2 p* J7 q该软件基于 STM32F7Cube 库运行在 STM32F769I-DISCO 探索板上,利用百度的 IoT 平台实现了从云端更新固件的功能。 Bootloader 部分主要负责将新版本用户应用程序从 QSPI Flash 烧到 MCU 内部 Flash 中,并跳转到应用程序运行,功能相对简单。' u2 S/ F2 h6 p: Q! W8 f
' _6 }5 Y& v# A3 `
用户应用程序部分除了用户自己的功能程序外,还包括固件版本云端推送,固件文件云端下载以及断点续传等功能,程序结构相对复杂。
. f& r) Z$ Q/ \
( q! F2 Y3 a( z$ o9 H7 L& U+ E1 Z本文档主要介绍用户应用程序这部分。也会对 Bootloader 做简单介绍。
" ~5 W% s$ g9 n: ]; f$ y* X7 V) @' r+ _: p
用户应用程序软件包包括以下功能组件: C& z6 B% B6 N# s! L+ |( ?
从云端更新固件的应用程序代码
( l4 [' M  w! u1 f& k- MbedTLS(用于建立和云端的安全连接)
; {' j  ~+ [( e9 T. y* ?4 d- LwIP(使用有线连接时的 TCP/IP 协议栈)
1 x  a' s8 j' |' R- FreeRTOS" e: l& c4 d1 |
- Paho Embedded MQTT(MQTT 客户端在 STM32 上的实现)! N: M8 C  x1 z& j
- cJSON(封装和解析 MQTT 数据包负载)
! N, {4 Y8 ?9 V8 Z7 E5 I- STM32F769I-Disc 的板级驱动(包括 QSPI Flash,LCD,Wifi 模块等驱动)6 ?7 _0 s8 p0 l7 q
- STM32F7 系列的 HAL库
' a4 f" ?6 h# b8 f' o3 x" g' 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

) ~1 ?2 k" K5 V6 y4 H: v
# |9 U1 S# {  B- {3 x
8 N* P8 K, M' f+ \5 x; x2. 软件架构
! V( N% {: K3 P% N0 Q& M用户应用程序的软件分层如下图,应用层程序可以通过接口函数调用各层的服务。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 协议的实现。
. {2 |" {; L2 X, f- 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 格式数据的解析。
& a. ?# f' \! b) G- FreeRTOS: 轻量级的实时操作系统。  a$ ?7 W& P/ o7 O) H
$ `! v2 }2 h" t" ]$ r$ p3 D
除此以外,应用层还实现了:
2 _2 H5 A! I$ v  A3 u6 Z- 连接百度 IoT 平台的 MQTT 客户端: 基于 Paho,根据百度 IoT 平台的连接逻辑进行封装实现。
/ M9 O0 ?8 X/ B: G- HTTP 客户端:在 MCU 端实现了 HTTP 客户端,支持通过 TCP 或者 TLS 的方式从云端下载文件。
* f7 d9 }9 J7 n- 远程固件更新的程序:实现云端推送,自动下载,以及断点续传的逻辑。
' s% F3 ?6 {5 l6 A5 P% X2 a! Y$ b/ e7 W( t7 w
12.png ( M, d& G# }# C  g" X
/ \* B& j9 q; A8 a
) Y0 k5 W- M1 e. M- g

) `- J: e7 M1 q: p2 W) |5 |3. 文件结构
: f5 Y& `' a3 F% i, v
/ }" ^* Z3 y  L4 ]& t用户应用程序的文件结构如下:
7 G, l0 a. q. a' N) K* j2 ?/ }, b 13.png
" i9 k- \2 P$ P% ~0 ^  L
  ^6 m% x5 x1 b. p0 w  M5 T% n7 ^1 P( v5 `! j6 Z6 B- @7 e+ |1 R

2 x, J4 t8 m; c: M4. 软件模块
' H( U6 a' L5 ~- R8 ]$ V7 X2 f! g! s! {, 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: ]( @

1 V9 k0 D7 n/ N; K) ?( i...% z+ @; g, L% q* G1 z* b' ]
/ ^: n6 I% i. I7 P1 ]
5 s4 @8 w# ^( ?9 S8 t3 U
了解更多,请下载后阅读
7 S7 {' k: h& k
. Z: `8 ?1 @! w8 E; j  \% m& j下载地址1>>           下载地址2>>           更多实战经验>>
4 Y5 C* F$ x; W: w$ E" ^% d+ x  b, o5 }, u7 ]

" Q/ N! {" Q8 \4 k6 X% c
收藏 评论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 手机版