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

STM32F107 通过以太网实现在应用中编程 (IAP)

[复制链接]
STMCU小助手 发布时间:2022-7-17 18:19
前言
; A9 ], w+ @, y1 M  g本应用笔记的目标读者为使用 STM32F107 微控制器的开发者。提供了如何使用 STM32F107以太网接口实现在应用中编程 (IAP)的解决方案。1 p! p- P/ `. p1 r& \. f9 h: x/ x
在 LwIP TCP/IP 协议栈上提供了两种可行的解决方案:- r: z6 P5 x3 I" w: Y4 z
● 使用 TFTP (简单文件传输协议)的 IAP & e; V7 c0 i3 s2 L& W  o
● 使用 HTTP (超文本传输协议)的 IAP
/ G  X. t; C0 ]% q
9 t% ?, f  |; \6 E1 q7 Y3 i
# g% w  V' E2 d. M( L
1 IAP 概述& t& K" l* s) l- l7 q( G/ ~6 `
1.1 工作原理
3 X8 W2 w! o( k. g7 c在应用中编程(IAP)是一种在现场通过 MCU 的通信接口(例如 UART,USB,CAN 和以太网等)进行固件升级的方式。
7 P* X- U3 l' o. _  X当启动微控制器时,您可以选择让它进入 IAP 模式以执行 IAP 代码,或者进入正常模式来开始执行应用代码。IAP 代码和应用程序代码都存在于微控制器的嵌入式 Flash 中。通常 IAP 代码被存储在 MCU Flash 的前几页,用户应用代码占据剩余的 Flash 区域。
; V$ t' w8 o4 |) M/ {下图说明了 IAP 操作流程:- q; [5 g0 g% H7 q3 K
6 }1 A* r2 G+ R! Y, I
WI)8S%]]FI@ESXW}5]1W~SG.png
3 l% ]& R2 |& m8 i* n6 [! F' t3 b2 A% [; Z) t8 w

4 O% L6 t3 K7 u" t5 j, `9 z1.2 使用 MCU 以太网接口实现 IAP
1 W# R" y, w; @9 d. N& Y1 P2 M当以太网可用时,它通常是在嵌入式应用中实现 IAP 功能的更好的接口。其优点是:1 Z% i+ c1 D4 B, I2 ~) _. Y
● 高速通信接口 (10/100Mbit/s) 2 g+ P4 i# ]* s8 N) s
● 通过网络 (LAN 或者 WAN)进行远程编程
7 ^- ]( ]3 E3 Z  Y9 h2 M( w● TCP/IP 协议栈上的标准应用协议可用于实现 IAP,比如:FTP、 TFTP、 HTTP……7 h3 r( r6 t3 W7 w( b1 U4 a6 W

# O# [+ K9 B: {+ ~) j' I4 R
2 _7 ?4 T- ?; l/ w- }# D( I1.3 在 STM32F107 上通过以太网实现 IAP2 `) H. N, _1 N* |( w- P/ @9 u
本应用笔记说明了两种使用以太网通信外设在 STM32F107 上实现 IAP 的解决方案:; W3 k- T! G) t9 Y7 o
● 使用 TFTP (简单文件传输协议)的 IAP
1 A$ ^' R. J1 ~& ^; Y, n6 g● 使用 HTTP (超文本传输协议)的 IAP / H! q! Y% b* P
两种解决方案都运行在 LwIP 协议栈 (v1.3.1) 上,它是 TCP/IP 协议套件的一种轻量级实现。
% q4 [6 f( L/ E  C
: M1 G$ |9 H2 {
1.3.1 使用 TFTP 实现 IAP 的方法& I! B! k9 P) a, C" F' E' Z
使用 TFTP 实现 IAP 的方法广泛应用于需要固件升级能力的嵌入式应用(比如在嵌入式 Linuxbootloader 中)。- I" c( V" W8 Z# D3 x# U- b5 p* l
TFTP 是工作在 UDP 传输层上的简单文件传输协议,它主要应用在 LAN 环境中。它基于客户端 / 服务器体系结构,其中客户端向文件服务器请求文件传输 (读或写操作)。
8 r& m0 X4 i9 D) `5 _% L  _# L  H在我们的例子中,在 LwIP 栈上实现了一个简单的 TFTP 服务器,该服务器只处理来自 PCTFTP 客户端的写请求。
! }) x; m" s( D, O& Y2 Q5 @0 I& l. N% w% m
1.3.2 使用 HTTP 实现 IAP 的方法
( u7 \( D4 V& ]8 n- P0 U通过 HTTP 协议进行固件更新没有使用 TFTP 常见,但是当需要通过互联网进行远程编程时,它是一种有用的解决方案。在这种情况下,需要 TCP 传输协议来确保最优操作。
6 a7 p3 q* e  r: g3 m  q工作在 TCP 上的 HTTP,提供了一种用 HTML 形式从 web 客户端(例如:Mozilla Firefox 或Microsoft Internet Explorer)发送二进制文件的方法,称作 HTTP 文件上传 (RFC 1867)。
0 p! G, L2 p3 Y. J" E3 ]本文档的下一部分给出了关于这两种IAP方法实现的更详细信息并解释了如何使用这个软件。
: U; n, g# r. R5 Y. U/ H; r& F; _
; p5 E9 R1 q, Z' F+ c6 n9 v4 J/ B% `$ k" U7 q" }
2 使用 TFTP 实现 IAP/ o) w" t# @' G7 c/ `# ~, D. W
2.1 TFTP 概述7 `: {, T, f) N+ v" i) C7 r4 @; Y
简单文件传输协议 (TFTP)是工作在 UDP 上的一种简单的文件传输协议。$ `7 O% T3 \6 p7 P% p
文件传输是从 TFTP 客户端发起的, TFTP 客户端向 TFTP 服务器发送读或写请求。# v, j( t/ O7 ]5 g
当服务器确认请求后,文件数据传输开始。数据按固定大小的数据块发送 (如 512 字节的数据块)。/ {# A$ N9 u4 [) @8 l
必须在每个传输的数据块被接收端响应后,才能发送下一个数据块。这种回应机制通过随每个数据块同时发送的数据块编号来实现。+ _3 |" ~- B* u# t: t, e3 Q2 U4 P7 p
数据块小于固定块大小表示文件传输结束。- J! T. Q% z" C' n( k1 h0 r
图 2 说明了各类 TFTP 包的格式:
) ?. z, j/ G! Q+ a& O! X6 w1 x: a, J. x/ [, H: e2 M

/ B/ Q) m3 ^3 @! j 8929]MPZEC(77LPY6S6H(O3.png
% Q- d* }8 z" x% T& Z4 Y
. Z6 a$ g9 d+ {# i9 ~
) u) P! Q7 e! M
2.2 在 STM32F107 上使用 TFTP 实现 IAP- H( j. }0 N5 A' C
该 IAP 实现包括一个基本的 LwIP TCP/IP 栈上的 TFTP 服务器。该服务器响应从远程 TFTP客户端 (PC)接收的 WRITE 请求。 TFTP READ 请求被忽略。
. e! `/ K% J2 ~8 f- H服务器将接收到的数据块写入 MCU Flash (在用户 Flash 区域),而不是将接收的文件写入文件系统。
1 G: q3 v+ s+ W* f2 \. t1 ^1 S! E0 M注: 在本实现中,数据块大小固定为 512 字节。
0 J$ J. t' L  K下面的流程图给出了使用 TFTP 实现 IAP 操作的过程。
. |' P+ p$ `- U
$ ^3 `+ X1 g  x  ? 1(~N{)(H22DGF9YMZ1XYRJK.png ( q: x$ A6 t" K9 o6 R7 G( Q

- u7 M/ m' p+ D/ M& g* h. F+ E" ?+ }3 e+ E
2.3 使用软件0 `7 o5 W- V) o1 O
为了通过 TFTP 对 IAP 进行测试,请确保遵循如下步骤:9 I; {, s8 f3 S7 m' e
1. 在 STM3210C_EVAL 板上确保正确的跳线设置 (参见 表 2)。9 h  ^# N0 H, _( E& M
2. 在 main.h 文件中,取消选项 “USE_IAP_TFTP” 的注释。根据需求,您还可以取消注释 /注释其它选项,比如 “USE_DHCP” 或 “USE_LCD”。) b5 ]0 s: Z3 w7 a1 d
3. 重新编译软件。使用生成的 map 文件,确保 IAP 代码区域 (从地址 0x0 开始)和开始于 USER_FLASH_FIRST_PAGE_ADDRESS ( 在 main.h 中定义 ) 的用户 Flash 区域之间没有重叠。" F# k' m0 W2 n# W" {0 D! b8 F
4. 将程序下载到 STM32Flash 中并运行它。& C, E$ z" I/ r- k; P
5. 按住 Key 按钮的同时,按下并释放 Reset 键,进入 IAP 模式。8 n& b* l5 ]( o8 G  l' _! o4 h
6. 若在 main.h 文件中定义了 “USE_LCD”,LCD 屏幕上会显示消息,指示已经进入 IAP 模式。如果采用了 DHCP( main.h 文件中定义了 USE_DHCP),LCD 屏幕上也会显示一条消息,指示 DHCP IP 地址分配的成功或失败。
4 _) ]1 i$ ^; R" D+ }* P& U7. 分配完 IP 地址后 (动态或静态地址),用户可启动 IAP 进程。2 \- u6 r8 f/ z" y: j; q! m
8. 在 PC 上,打开 TFTP 客户端(例如,TFTPD32)并配置 TFTP 服务器地址(TFTPD32中的主机地址)。& B% K  a; T! w7 l
9. 选择一个二进制映像下载到 STM32 Flash 中 (/project/binary 文件夹中提供了两个二进制映像作为例子)。6 v" @6 O9 ^. h0 `3 z1 q& @
10. 在 TFTPD32 应用程序上点击 “Put” 按钮,启动一个文件写请求。( B( L. K/ R0 B% p+ z
11. 如果定义了 USE_LCD, IAP 操作的进度会显示在 LCD 上。
8 G+ f( o# s2 A+ V  z5 m12. 在 IAP 操作结束时,可以复位评估板来运行您刚才在 STM32 Flash 中编写的程序。
" @' P( S1 b9 Q4 t) J& x( s( i
: X0 n* q  a9 T8 \ (H`(NIWSLQH){5A(RCG%9.png
3 o$ E' }/ Q% c# _* d* k  T( s4 a" w, o" k
完整版请查看:附件
3 d1 f- {7 |; @
  X4 Q) d8 _! J7 M6 E
( W* |! ]5 h; J

CD00275365_ZHV1.2.pdf

下载

436.62 KB, 下载次数: 5

赞 收藏 评论0 发布时间:2022-7-17 18:19

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版