请选择 进入手机版 | 继续访问电脑版

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

【中文文档】AN3968_STM32F407和STM32F417上通过以太网使用IAP

[复制链接]
STMCU-管管 发布时间:2019-3-29 10:37
STM32F407/STM32F417通过以太网实现在应用中编程 (IAP)8 @* Z4 {- l7 [  H+ X7 |, a3 T

; `( s: U) [% G( ]. }1 简介
* m& D% ^  N+ b. s, P$ }( X. h* C8 ?/ f
本应用笔记专为使用 STM32F407/STM32F417 微控制器的开发人员编写。它提供了如何使用 STM32F407/STM32F417 以太网通信接口实现在应用中编程 (IAP) 的解决方案。 : K4 [% Q  m* ^8 ^9 e2 z8 w( ?8 Z
. N8 g) c# }9 i! m4 [* k; S5 _
有两种基于 LwIP TCP/IP 协议栈的解决方案: # B0 k) A# H3 T, }( E% t

7 b# M$ L9 J, C  ?● 使用 TFTP (简单文件传输协议)的 IAP
$ a  ~. H0 v! k7 K( X, R; m● 使用 HTTP (超文本传输协议)的 IAP
# ]8 v+ M  @2 n9 b
5 b- {/ K( @* L* N- w2 IAP 概述
- |$ j: R  s7 S- G

- C) M; F) |0 U2 \2.1 工作原理
9 B" W" ]3 \2 f* x" e$ ]7 k  |: c' j. R2 W
在应用中编程 (IAP) 是一种在现场通过 MCU 通信接口(例如 UART、USB、CAN 和以太网)进行固件升级的方式。 0 a; A% e; q3 X1 Y( H' J
7 R* t+ ?+ a5 b0 C
启动微控制器时,可以选择让其在以下任一模式运行:
! W/ R; U! O, ~# z/ |+ y: x- X0 P' I" j, x- p8 p
● IAP 模式,用于执行 IAP 代码, : N" G! _& j4 e2 Q+ Q
● 正常模式,用于执行应用程序代码。 5 j2 F8 V; t3 J* n8 O
. [5 ?5 Z& l' t5 T8 k2 y+ z4 Z
无论是 IAP 代码还是应用程序代码都位于微控制器的内置 Flash 中。IAP 代码通常存储在 MCUFlash 的第一页,而用户应用程序代码则占据剩余的 Flash 区域。
% `$ ^$ D* a- a4 x5 r7 x; O+ s2 [* I2 ]- r3 y7 ]
图 1 介绍了 IAP 操作流程:
4 S+ U* b4 ]# Q0 x# U1 @7 D
3 B$ c7 p' P6 G  N
# ^1 P% |2 o8 W
微信截图_20190329103124.png
3 K2 f$ t) E5 @1 `/ v  H! r
2.2 使用 MCU 以太网接口实现 IAP
6 }; u- X& ~- h
如果有以太网可用,则它通常是在嵌入式系统中实现 IAP 功能的首选接口。其优势包括:
) R5 Y1 S) r: {! s/ A
● 高速通信接口 (10/100 Mb/s)
% {, M$ X5 W. t6 L
● 通过网络 (LAN 或 WAN) 进行远程编程

3 y* S. j6 e3 _% w, l
● 可以使用 FTP、TFTP、HTTP 等基于 TCP/IP 栈的标准应用协议实现 IAP

  \2 [! R/ f. J* W. P6 M1 w# O
2.3 通过以太网在 STM32F407/STM32F417 上实现 IAP
' P& {9 w: B2 L- V. E. |
本应用笔记将介绍两种使用以太网通信外设在 STM32F407/STM32F417 上实现 IAP 的解决方案:

2 ?* X* w" u$ _+ v9 k% l
● 使用 TFTP(简单文件传输协议)的 IAP
1 J' ^8 j$ J( M" n/ v
● 使用 HTTP(超文本传输协议)的 IAP

7 |5 L( E7 h8 S
这两种解决方案均基于 LwIP 栈 (v1.3.2),它是轻量级的 TCP/IP 协议栈。
5 o# }2 z. j4 U2 F
2.3.1 使用 TFTP 实现 IAP 方法
$ d2 f( |& H0 c- L7 a
使用 TFTP 实现 IAP 的方法广泛应用于需要具有固件升级功能的嵌入式应用中(例如,嵌入式 Linux bootloader 中)。

* S* k4 Z& O" U- r& r1 J
TFTP 是一种在 UDP 传输层上执行的简单文件传输协议。此协议非常适合在局域网环境中使用。它基于客户端/服务器架构,在这种架构中,客户端会向服务器发出文件传输请求(读取或写入操作)。

: e3 z& B- a) D$ ?: ]
为实现 IAP,需要在 LwIP 协议栈上实现一个简单的 TFTP 服务器,服务器只需处理来自 PC的 TFTP 客户端的写入请求即可。

7 ]3 b$ |* m& m3 \1 `4 y4 Q
2.3.2 使用 HTTP 实现 IAP 方法

1 u6 O9 U; Q6 V9 i7 O3 V/ u! }- _9 J
使用 HTTP 协议进行固件升级没有使用 TFTP 常见,但是在需要通过 Internet 进行远程编程时,这种解决方案就显得极为有用。这时,需要使用 TCP 传输协议来实现 http 服务。

' @0 h( s7 K7 I( G
HTTP 基于 TCP 协议运行,它提供了一种以 HTML 表单形式从 Web 客户端(Mozilla Firefox或 Microsoft Internet Explorer)发送二进制文件的方式。这称为 HTTP 文件上传 (RFC 1867)。

: S9 _. n0 v" h3 T* ?# [
本文档中的后续章节将详细介绍这两种 IAP 方法的实现,并会对如何使用软件进行说明。

/ T" b- n8 h0 h+ s  f6 j+ t9 b
3 使用 TFTP 实现 IAP

. m& `& s7 l, F1 S6 Q, B
3.1 TFTP 概述
4 f1 y; k% S8 J6 _8 F$ Q9 M% m
TFTP 是一种基于 UDP 的简单文件传输协议。文件传输由 TFTP 客户端发起,会向 TFTP 服务器发送读取或写入请求。服务器确认请求后,即开始进行文件数据传输。数据将以固定大小的块进行发送(例如每块含 512 个字节)。
% j" Q/ r# @  a( x3 E$ g: M- x" P
必须在每个发出的数据块都得到接收方确认后,才可以发送下一个数据块。这种确认机制通过随各个数据块一同发送的块编号来实现。数据块小于固定块大小表示文件传输的结束。

( h1 N: `9 N6 I2 Y) \/ ^) d, ^
图 2 描述了各种 TFTP 数据包的格式:

: `) N4 b' |) ?4 C4 `- W
1.png

% _3 M% l2 A2 W# h/ X" G/ t) I& a. j
1.png
8 L0 Q7 K- t  c
..............

+ l7 Z9 O  |8 t, z! u8 u
想了解更多,请下载原文阅读

3 C+ [  E$ S: X2 `" h  T
收藏 1 评论2 发布时间:2019-3-29 10:37

举报

2个回答
Kevin_G 回答时间:2019-3-29 12:43:16
点赞
kk1979 回答时间:2019-9-17 22:31:31
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版