STMCU小助手
发布时间:2022-7-17 18:19
|
前言 本应用笔记的目标读者为使用 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% w V' E2 d. M( L 1 IAP 概述& t& K" l* s) l- l7 q( G/ ~6 ` 1.1 工作原理 在应用中编程(IAP)是一种在现场通过 MCU 的通信接口(例如 UART,USB,CAN 和以太网等)进行固件升级的方式。 当启动微控制器时,您可以选择让它进入 IAP 模式以执行 IAP 代码,或者进入正常模式来开始执行应用代码。IAP 代码和应用程序代码都存在于微控制器的嵌入式 Flash 中。通常 IAP 代码被存储在 MCU Flash 的前几页,用户应用代码占据剩余的 Flash 区域。 下图说明了 IAP 操作流程:- q; [5 g0 g% H7 q3 K 6 }1 A* r2 G+ R! Y, I
6 [! F' t3 b2 A% [; Z) t8 w 1.2 使用 MCU 以太网接口实现 IAP 当以太网可用时,它通常是在嵌入式应用中实现 IAP 功能的更好的接口。其优点是:1 Z% i+ c1 D4 B, I2 ~) _. Y ● 高速通信接口 (10/100Mbit/s) 2 g+ P4 i# ]* s8 N) s ● 通过网络 (LAN 或者 WAN)进行远程编程 ● TCP/IP 协议栈上的标准应用协议可用于实现 IAP,比如:FTP、 TFTP、 HTTP……7 h3 r( r6 t3 W7 w( b1 U4 a6 W 1.3 在 STM32F107 上通过以太网实现 IAP2 `) H. N, _1 N* |( w- P/ @9 u 本应用笔记说明了两种使用以太网通信外设在 STM32F107 上实现 IAP 的解决方案:; W3 k- T! G) t9 Y7 o ● 使用 TFTP (简单文件传输协议)的 IAP ● 使用 HTTP (超文本传输协议)的 IAP / H! q! Y% b* P 两种解决方案都运行在 LwIP 协议栈 (v1.3.1) 上,它是 TCP/IP 协议套件的一种轻量级实现。 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 环境中。它基于客户端 / 服务器体系结构,其中客户端向文件服务器请求文件传输 (读或写操作)。 在我们的例子中,在 LwIP 栈上实现了一个简单的 TFTP 服务器,该服务器只处理来自 PCTFTP 客户端的写请求。 & Y2 Q5 @0 I& l. N% w% m 1.3.2 使用 HTTP 实现 IAP 的方法 通过 HTTP 协议进行固件更新没有使用 TFTP 常见,但是当需要通过互联网进行远程编程时,它是一种有用的解决方案。在这种情况下,需要 TCP 传输协议来确保最优操作。 工作在 TCP 上的 HTTP,提供了一种用 HTML 形式从 web 客户端(例如:Mozilla Firefox 或Microsoft Internet Explorer)发送二进制文件的方法,称作 HTTP 文件上传 (RFC 1867)。 本文档的下一部分给出了关于这两种IAP方法实现的更详细信息并解释了如何使用这个软件。 6 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 包的格式: 6 w1 x: a, J. x/ [, H: e2 M
) 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 请求被忽略。 服务器将接收到的数据块写入 MCU Flash (在用户 Flash 区域),而不是将接收的文件写入文件系统。 注: 在本实现中,数据块大小固定为 512 字节。 下面的流程图给出了使用 TFTP 实现 IAP 操作的过程。
& 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 地址分配的成功或失败。 7. 分配完 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 上。 12. 在 IAP 操作结束时,可以复位评估板来运行您刚才在 STM32 Flash 中编写的程序。
( s4 a" w, o" k 完整版请查看:附件 |
CD00275365_ZHV1.2.pdf
下载436.62 KB, 下载次数: 5
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:雨露均沾·逢7狂欢】之五:STM32系统时钟PLL故障排除1例
【福利三:雨露均沾·逢7狂欢】之三:AI帮我查BUG
福利三:雨露均沾·逢7狂欢】之二:STM32F407VG串口通信乱码故障的排除
基于STM32F103的I2C主从机通信
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
TFT LCD 与 FSMC 的硬件连接大容量 STM32F10xxx FSMC 接口
单片机:初学者该了解的STM32F103基础知识
2025软件工具兔哥知道
STM32之继电器模块
微信公众号
手机版