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

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

[复制链接]
STMCU-管管 发布时间:2019-3-29 10:37
STM32F407/STM32F417通过以太网实现在应用中编程 (IAP)) o4 F. C$ o" x1 M7 _. t! N
% H" u7 A% o" N
1 简介
# `0 j& c# e+ v: [; f: A1 f7 Z4 B1 X& S+ w4 S
本应用笔记专为使用 STM32F407/STM32F417 微控制器的开发人员编写。它提供了如何使用 STM32F407/STM32F417 以太网通信接口实现在应用中编程 (IAP) 的解决方案。
' y. A; ^7 z5 w
  m+ I1 T9 V9 h' C
有两种基于 LwIP TCP/IP 协议栈的解决方案: 1 k: Z3 }- W) N* @

; b$ A. l! }& n* |! j4 Z9 A● 使用 TFTP (简单文件传输协议)的 IAP 4 L! s" ^0 M# j  C4 x3 W- L
● 使用 HTTP (超文本传输协议)的 IAP
+ I6 G8 n- s$ p! A
0 E$ o" B# p2 c5 |3 O5 }: i  B2 IAP 概述 6 S: a, C5 W) S

5 }5 R8 `, p8 U! @0 ?6 |. T2.1 工作原理 6 L2 Z7 p5 o+ E# H: D* {3 B3 b
5 i' E# ?5 V. i9 |
在应用中编程 (IAP) 是一种在现场通过 MCU 通信接口(例如 UART、USB、CAN 和以太网)进行固件升级的方式。
1 R* u( G& M4 e" _; H* b; c, I/ S, l$ V$ ]* X) r
启动微控制器时,可以选择让其在以下任一模式运行:
' M# L) F" j& r) V  _0 |0 |
7 n0 n* c/ G- w8 F● IAP 模式,用于执行 IAP 代码,
& R9 E, g+ l8 C- v  i* s● 正常模式,用于执行应用程序代码。
, f) q5 b- J( x6 L( `; B% N- F( N0 i! i( P: g0 p! Y9 I
无论是 IAP 代码还是应用程序代码都位于微控制器的内置 Flash 中。IAP 代码通常存储在 MCUFlash 的第一页,而用户应用程序代码则占据剩余的 Flash 区域。 5 v/ R5 b8 F; D, e# q7 i* g" k
% p2 h2 i1 k7 \& S% q
图 1 介绍了 IAP 操作流程:8 Z! f8 s% W- \9 l1 g& ]3 }: G& t
( w9 L6 T6 v- M$ D' _, A8 {, Y
" z( n2 a2 i' N. h+ h
微信截图_20190329103124.png
2 z- j: g" w! @; j1 w
2.2 使用 MCU 以太网接口实现 IAP
+ Q9 K" A% C( W/ W( K
如果有以太网可用,则它通常是在嵌入式系统中实现 IAP 功能的首选接口。其优势包括:
5 q9 i; |6 d5 O1 r
● 高速通信接口 (10/100 Mb/s)

- {" A9 t; R& B- o2 l+ J4 J
● 通过网络 (LAN 或 WAN) 进行远程编程

2 R% p, i* n2 _3 a) p& U
● 可以使用 FTP、TFTP、HTTP 等基于 TCP/IP 栈的标准应用协议实现 IAP

, F% Q8 n9 V5 C# W! g
2.3 通过以太网在 STM32F407/STM32F417 上实现 IAP

! @7 v7 p& P$ K" C$ |' r
本应用笔记将介绍两种使用以太网通信外设在 STM32F407/STM32F417 上实现 IAP 的解决方案:
9 Y9 O; M, \$ @- |$ S: P
● 使用 TFTP(简单文件传输协议)的 IAP

' N6 {: J) b" f( n$ G0 L6 w" a
● 使用 HTTP(超文本传输协议)的 IAP

" j8 _  X6 {5 t
这两种解决方案均基于 LwIP 栈 (v1.3.2),它是轻量级的 TCP/IP 协议栈。
; V( T2 F/ t, U! \7 ^* [: {( Z6 G
2.3.1 使用 TFTP 实现 IAP 方法
* ^3 H/ ^3 Z! S$ Y6 N& R8 D. r
使用 TFTP 实现 IAP 的方法广泛应用于需要具有固件升级功能的嵌入式应用中(例如,嵌入式 Linux bootloader 中)。
+ |$ l2 }) O& g8 Z6 [+ b; R7 t
TFTP 是一种在 UDP 传输层上执行的简单文件传输协议。此协议非常适合在局域网环境中使用。它基于客户端/服务器架构,在这种架构中,客户端会向服务器发出文件传输请求(读取或写入操作)。
  f7 a% X0 \; C. J4 ]2 l
为实现 IAP,需要在 LwIP 协议栈上实现一个简单的 TFTP 服务器,服务器只需处理来自 PC的 TFTP 客户端的写入请求即可。
. S- k5 Y- n9 e4 p* N! K$ j
2.3.2 使用 HTTP 实现 IAP 方法

/ J$ I7 K) s7 }0 O4 V, v; d
使用 HTTP 协议进行固件升级没有使用 TFTP 常见,但是在需要通过 Internet 进行远程编程时,这种解决方案就显得极为有用。这时,需要使用 TCP 传输协议来实现 http 服务。
) h  W4 V) \. I( V' n6 S- k: J+ p
HTTP 基于 TCP 协议运行,它提供了一种以 HTML 表单形式从 Web 客户端(Mozilla Firefox或 Microsoft Internet Explorer)发送二进制文件的方式。这称为 HTTP 文件上传 (RFC 1867)。
$ q! e/ c* r; M' H* f
本文档中的后续章节将详细介绍这两种 IAP 方法的实现,并会对如何使用软件进行说明。

% s: j, T6 @! l4 V/ u8 t
3 使用 TFTP 实现 IAP

5 x' ]" @! N" P) {; d
3.1 TFTP 概述
' c7 I4 [/ @& [+ u; B
TFTP 是一种基于 UDP 的简单文件传输协议。文件传输由 TFTP 客户端发起,会向 TFTP 服务器发送读取或写入请求。服务器确认请求后,即开始进行文件数据传输。数据将以固定大小的块进行发送(例如每块含 512 个字节)。
" ]3 [9 N# t. t+ B6 Q
必须在每个发出的数据块都得到接收方确认后,才可以发送下一个数据块。这种确认机制通过随各个数据块一同发送的块编号来实现。数据块小于固定块大小表示文件传输的结束。

; j8 q' H. j7 N0 P6 W" G
图 2 描述了各种 TFTP 数据包的格式:

8 V+ R8 Q6 w- t8 Y
1.png
3 Q  f5 ~' J0 N- ~1 ]/ X! @
1.png

( u/ A& S" ?4 ]- S
..............
4 @6 S+ K+ P* o; w: _0 I- z2 u- i, H0 N
想了解更多,请下载原文阅读

5 j% |) m, O+ E  L  M0 J
赞 收藏 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管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版