|
STM32F407/STM32F417通过以太网实现在应用中编程 (IAP)) o4 F. C$ o" x1 M7 _. t! N % H" u7 A% o" N 1 简介 1 f7 Z4 B1 X& S+ w4 S 本应用笔记专为使用 STM32F407/STM32F417 微控制器的开发人员编写。它提供了如何使用 STM32F407/STM32F417 以太网通信接口实现在应用中编程 (IAP) 的解决方案。 m+ I1 T9 V9 h' C 有两种基于 LwIP TCP/IP 协议栈的解决方案: 1 k: Z3 }- W) N* @ ● 使用 TFTP (简单文件传输协议)的 IAP 4 L! s" ^0 M# j C4 x3 W- L ● 使用 HTTP (超文本传输协议)的 IAP 2 IAP 概述 6 S: a, C5 W) S 2.1 工作原理 6 L2 Z7 p5 o+ E# H: D* {3 B3 b 5 i' E# ?5 V. i9 | 在应用中编程 (IAP) 是一种在现场通过 MCU 通信接口(例如 UART、USB、CAN 和以太网)进行固件升级的方式。 ; c, I/ S, l$ V$ ]* X) r 启动微控制器时,可以选择让其在以下任一模式运行: ● IAP 模式,用于执行 IAP 代码, ● 正常模式,用于执行应用程序代码。 ; 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
2.2 使用 MCU 以太网接口实现 IAP + Q9 K" A% C( W/ W( K如果有以太网可用,则它通常是在嵌入式系统中实现 IAP 功能的首选接口。其优势包括: 5 q9 i; |6 d5 O1 r● 高速通信接口 (10/100 Mb/s) ● 通过网络 (LAN 或 WAN) 进行远程编程 ● 可以使用 FTP、TFTP、HTTP 等基于 TCP/IP 栈的标准应用协议实现 IAP 2.3 通过以太网在 STM32F407/STM32F417 上实现 IAP 本应用笔记将介绍两种使用以太网通信外设在 STM32F407/STM32F417 上实现 IAP 的解决方案: 9 Y9 O; M, \$ @- |$ S: P● 使用 TFTP(简单文件传输协议)的 IAP ● 使用 HTTP(超文本传输协议)的 IAP 这两种解决方案均基于 LwIP 栈 (v1.3.2),它是轻量级的 TCP/IP 协议栈。 ; V( T2 F/ t, U! \7 ^* [: {( Z6 G2.3.1 使用 TFTP 实现 IAP 方法 * ^3 H/ ^3 Z! S$ Y6 N& R8 D. r使用 TFTP 实现 IAP 的方法广泛应用于需要具有固件升级功能的嵌入式应用中(例如,嵌入式 Linux bootloader 中)。 + |$ l2 }) O& g8 Z6 [+ b; R7 tTFTP 是一种在 UDP 传输层上执行的简单文件传输协议。此协议非常适合在局域网环境中使用。它基于客户端/服务器架构,在这种架构中,客户端会向服务器发出文件传输请求(读取或写入操作)。 f7 a% X0 \; C. J4 ]2 l为实现 IAP,需要在 LwIP 协议栈上实现一个简单的 TFTP 服务器,服务器只需处理来自 PC的 TFTP 客户端的写入请求即可。 . S- k5 Y- n9 e4 p* N! K$ j2.3.2 使用 HTTP 实现 IAP 方法 使用 HTTP 协议进行固件升级没有使用 TFTP 常见,但是在需要通过 Internet 进行远程编程时,这种解决方案就显得极为有用。这时,需要使用 TCP 传输协议来实现 http 服务。 ) h W4 V) \. I( V' n6 S- k: J+ pHTTP 基于 TCP 协议运行,它提供了一种以 HTML 表单形式从 Web 客户端(Mozilla Firefox或 Microsoft Internet Explorer)发送二进制文件的方式。这称为 HTTP 文件上传 (RFC 1867)。 $ q! e/ c* r; M' H* f本文档中的后续章节将详细介绍这两种 IAP 方法的实现,并会对如何使用软件进行说明。 3 使用 TFTP 实现 IAP 3.1 TFTP 概述 ' c7 I4 [/ @& [+ u; BTFTP 是一种基于 UDP 的简单文件传输协议。文件传输由 TFTP 客户端发起,会向 TFTP 服务器发送读取或写入请求。服务器确认请求后,即开始进行文件数据传输。数据将以固定大小的块进行发送(例如每块含 512 个字节)。 " ]3 [9 N# t. t+ B6 Q必须在每个发出的数据块都得到接收方确认后,才可以发送下一个数据块。这种确认机制通过随各个数据块一同发送的块编号来实现。数据块小于固定块大小表示文件传输的结束。 图 2 描述了各种 TFTP 数据包的格式:
|
| 点赞 |
|
【福利三:雨露均沾·逢7狂欢】之四:用一个定时器同步另外两个定时器输出PWM
【逢7发帖赢大礼】STM32开发之WIFI实时时钟
【逢7发帖赢大礼】STM32开发之指纹识别!
【逢7发帖赢大礼】STM32开发之环境空气质量监测
【逢7发帖赢大礼】STM32开发之人体实时运动信息监测!
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
【逢7发帖赢大礼】全网最简单的Arduino_STM32开发环境搭建教程!
STM32F4中文用户手册
STM32F400、STM32F402 Cortex-M4超值单片机
SPI 高温读错最后一位?STM32F42xx 官方根治方案
微信公众号
手机版