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

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

[复制链接]
zero99 发布时间:2018-10-17 16:05
STM32F769DK 云端固件升级例程软件开发文档+ f! A" L" c1 s1 [) ?) q$ G

& q6 k& W+ |2 w; Y
, D1 H  ]4 n2 B, P: C; M1. 前言
/ O: C  a8 g( Q) Z% S) \5 nSTM32F769DK 云端固件升级例程分为两部分:Bootloader 和用户应用程序。
. [3 t8 Z9 f  @' o- {/ b该软件基于 STM32F7Cube 库运行在 STM32F769I-DISCO 探索板上,利用百度的 IoT 平台实现了从云端更新固件的功能。 Bootloader 部分主要负责将新版本用户应用程序从 QSPI Flash 烧到 MCU 内部 Flash 中,并跳转到应用程序运行,功能相对简单。
4 {+ W+ W) a& U2 q% b0 {) u* T6 I" u( b/ f. T' v' Z1 \% V
用户应用程序部分除了用户自己的功能程序外,还包括固件版本云端推送,固件文件云端下载以及断点续传等功能,程序结构相对复杂。
4 o6 J; @8 K6 d+ N6 u6 S% _
/ N& h" K, M( h( W, ]7 M* ^本文档主要介绍用户应用程序这部分。也会对 Bootloader 做简单介绍。
. |: ]+ o/ X( q( j* m' g% T6 ?1 |. M' o! N: D
用户应用程序软件包包括以下功能组件2 Q( y9 \- H  w& C. X. o2 D
从云端更新固件的应用程序代码% w+ r0 }+ q# Y( r! Y% ^
- MbedTLS(用于建立和云端的安全连接)' o5 R% `2 ~, d6 p) R
- LwIP(使用有线连接时的 TCP/IP 协议栈)4 J9 D5 f8 T' C# @; `! D" S; C% h* n
- FreeRTOS
, t6 k% q, D! `$ @- Paho Embedded MQTT(MQTT 客户端在 STM32 上的实现)) h! H' Y3 o/ b% _6 k! E; D
- cJSON(封装和解析 MQTT 数据包负载)
) \) O% i1 J" g# T- STM32F769I-Disc 的板级驱动(包括 QSPI Flash,LCD,Wifi 模块等驱动)& J/ s- f# F( m# N  o) s4 U) A
- STM32F7 系列的 HAL库
# T7 i! k+ @3 ?0 x6 Z4 u. v
& P# _4 g" n, K0 C7 Q
% X6 g3 s' H7 F7 a/ r支持 IAR Embedded Workbench IDE,V7.80.4 及以上版本。1 s' C) K% G' n; P; j- X! u+ r# F% [
本例程仅作为 STM32 无线远程升级功能的参考。
4 L( B+ i6 A! R8 T9 j
' b/ o! a* s/ _' ]% z+ v; T3 `* }8 \( V- l! g

6 {/ M! x2 p& n6 `2. 软件架构
% \% @* T9 E/ ?3 }$ i. r用户应用程序的软件分层如下图,应用层程序可以通过接口函数调用各层的服务。
' o8 d% Q2 Y; b9 k/ r, p4 a' ]- STM32F7Cube HAL 库:HAL 驱动层向上层软件提供了使用各个外设的接口函数。包括通常的或扩展属性的 APIs。, @, G$ @! m, B. g" U2 s  I# @5 D( p
上层的中间件,应用程序等可以通过调用这些 API 函数来操作外设,这样便不会使得上层的软件依赖于某个特定的; E& h1 G3 K9 c( L/ D
MCU。使得程序更具有复用性,并且容易移植到其他的 MCU 系列上去。  z! Q: A. M( P5 v8 d; b" \8 H
- STM32F769DK BSP 板级驱动:针对 STM32F769DK 这块板子上使用到的外设和资源,提供了相应的 API 函数,比 如 LED 灯的控制,按键的操作等。
8 _9 A# q' h! g) G: t- LwIP 协议栈:TCP/IP 协议的实现。
' c% |$ L1 m+ g$ D" y9 B- mbedTLS: 支持设备与云端建立 TLS 连接。
! h# o' [" E, M- Paho:Paho Embedded MQTT 实现 MQTT 客户端部分的协议。支持与云端建立 MQTT 通信。/ A5 e* K/ h# {' t2 Y
- cJSON:针对嵌入式系统,提供 JSON 格式数据的解析。8 `& e& d. [8 |+ y4 Q
- FreeRTOS: 轻量级的实时操作系统。: c" @7 {0 a1 K$ V- z
( H3 C8 e" B% I& W
除此以外,应用层还实现了:
$ t. B! `; w7 F- 连接百度 IoT 平台的 MQTT 客户端: 基于 Paho,根据百度 IoT 平台的连接逻辑进行封装实现。
7 Q# @! Z) C# y2 m/ G8 `- HTTP 客户端:在 MCU 端实现了 HTTP 客户端,支持通过 TCP 或者 TLS 的方式从云端下载文件。, @' |; T; F5 Q# f6 s2 ~
- 远程固件更新的程序:实现云端推送,自动下载,以及断点续传的逻辑。% C2 l# I$ {& x1 \
! E2 t5 i9 v7 K+ {' C
12.png
( Y0 s3 N9 S  Q  s4 X7 s3 t5 _* X  _) ?7 V9 |
- Z: m7 W. q9 e' S6 ~' O; O/ H
& |0 M/ `9 M2 u: H  l5 ?% V
3. 文件结构
5 Y4 u" N" L4 t6 o! c4 p) P# v7 r) E& C1 {% B, E
用户应用程序的文件结构如下:
! I" f* O) H% t5 W3 k$ }/ ~4 N, R 13.png
- p$ e! p3 \$ A
% i& ~+ I6 f7 b
, c! j4 b6 y+ E3 A$ f: r2 @6 X0 I1 N4 i) k+ z5 a/ m
4. 软件模块$ N* P: n* |  {8 }8 }) B

9 q- S5 B5 U) y+ _' z: ^; k4.1  网络 抽象层
2 `  d+ T- j9 ~0 p( N9 I1 w5 b在实际的应用中,设备端可能通过多种方式连接到云端。比如以太网,WIFI,2G/3G 等。所以程序中增加了网络抽象层,来
1 O$ ?2 D/ W1 f, ^支持在不同连接方式上的切换。
! c* z  ]; b2 I: a3 |- {9 h- l7 p& k3 n* t$ D& G- O' D
& w' h# Z6 D/ ]2 A6 ?) o
..." f& M% P. E% y' R' B# ?

9 X& Z- E$ e6 ~; J7 I: i+ P- e( o/ d" v4 T
了解更多,请下载后阅读
$ r4 U) V) r: N2 Y' _4 _: X4 r: `% V- W4 s( T- c0 q
下载地址1>>           下载地址2>>           更多实战经验>>
6 m$ q5 B5 n3 @6 \4 X7 Q5 v9 P; @8 G: N5 k  T. g
. y, f9 c; f- v, h5 n
赞 收藏 评论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管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版