
前言 本应用笔记的目标读者为使用 STM32F2x7 微控制器的开发者。它提供了如何使用STM32F2x7 以太网接口实现在应用中编程 (IAP)的解决方案。 在 LwIP TCP/IP 协议栈上提供了两种可行的解决方案: ● 使用 TFTP (简单文件传输协议)的 IAP ● 使用 HTTP (超文本传输协议)的 IAP 1 IAP 概述 1.1 工作原理 在应用中编程(IAP)是一种在现场通过 MCU 的通信接口(例如 UART,USB,CAN 和以太网等)进行固件升级的方式。 当启动微控制器时,您可以选择让它进入 IAP 模式以执行 IAP 代码,或者进入正常模式来开始执行应用代码。 IAP 代码和应用程序代码都在微控制器的嵌入式 Flash 中。通常 IAP 代码被存储在 MCU Flash 的前几页,用户应用代码占据剩余的 Flash 区域。 图 1 显示了 IAP 操作流程: ![]() 1.2 使用 MCU 以太网接口实现 IAP 当以太网可用时,它通常是在嵌入式应用中实现 IAP 功能的更好的接口。其优点是: ● 高速通信接口 (10/100 Mbit/s) ● 通过网络 (LAN 或者 WAN)进行远程编程 ● TCP/IP 协议栈上的标准应用协议 (例如 FTP、 TFTP、 HTTP)可用于实现 IAP 1.3 在 STM32F2x7 上通过以太网实现 IAP 本应用笔记说明了两种使用以太网通信外设在 STM32F2x7 上实现 IAP 的解决方案: ● 使用 TFTP (简单文件传输协议)的 IAP ● 使用 HTTP (超文本传输协议)的 IAP 两种解决方案都运行在 LwIP 协议栈 (v1.3.2) 上,它是 TCP/IP 协议套件的一种轻量级实现。 1.3.1 使用 TFTP 实现 IAP 的方法 使用 TFTP 实现 IAP 的方法广泛应用于需要固件升级能力的嵌入式应用(比如在嵌入式 Linuxbootloader 中)。 TFTP 是工作在 UDP 传输层上的简单文件传输协议。它主要应用在 LAN 环境中。它基于客户端 / 服务器体系结构,其中客户端向文件服务器请求文件传输 (读或写操作)。 在这个例子中,服务器只处理来自 PC TFTP 客户端的写请求,所以在 LwIP 栈上实现了一个简单的 TFTP 服务器。 1.3.2 使用 HTTP 实现 IAP 的方法 使用 HTTP 协议进行固件升级没有使用 TFTP 常见,但是当需要通过互联网进行远程编程时,它是一种有用的解决方案。在这种情况下,需要 TCP 传输协议来确保最优操作。 工作在TCP上的HTTP,提供了一种用HTML形式从web客户端(Mozilla Firefox或MicrosoftInternet Explorer)发送二进制文件的方法,称作 HTTP 文件上传 (RFC 1867)。 本文档的下一部分给出了关于这两种 IAP 方法实现的详细信息并解释了如何使用这个软件。 2 使用 TFTP 实现 IAP 2.1 TFTP 概述 TFTP 是工作在 UDP 传输层上的简单文件传输协议。文件传输是从 TFTP 客户端发起的,TFTP 客户端向 TFTP 服务器发送读或写请求。当服务器响应该请求后,文件数据传输开始。数据按固定大小的数据块发送 (如 512 字节的数据块)。 必须在每个传输的数据块被接收端响应后,才能发送下一个数据块。回应机制通过随每个数据块同时发送的数据块编号来实现。数据块小于固定块大小表示文件传输结束。 图 2 说明了各类 TFTP 包的格式: ![]() ![]() 2.2 在 STM32F2x7 上使用 TFTP 实现 IAP 该 IAP 实现包括一个 LwIP TCP/IP 栈上的 TFTP 服务器。该服务器响应从远程 TFTP 客户端(PC)接收的 WRITE 请求。 TFTP READ 请求被忽略。 服务器将接收到的数据块写入 MCU Flash (在用户 Flash 区域),而不是将接收的文件写入文件系统。 注: 在本实现中,数据块大小固定为 512 字节。 图 3 给出了使用 TFTP 实现 IAP 操作的过程。 ![]() 2.3 使用软件 为了通过 TFTP 对 IAP 进行测试,遵循如下步骤: 1. 在 STM322xG-EVAL 板上确保正确的跳线设置 (参见表 2)。 2. 在 main.h 文件中,取消注释选项 “USE_IAP_TFTP”。根据需求,您还可以取消注释 / 注释其它选项,比如 “USE_DHCP” 或 “USE_LCD”。 3. 重新编译软件。使用生成的 map 文件,确保 IAP 代码区域 (从地址 0x0 开始)和开始于 USER_FLASH_FIRST_PAGE_ADDRESS ( 在 main.h 中定义 ) 的用户 Flash 区域之间没有重叠。 4. 将程序下载到 STM32 Flash 中运行它。 5. 按住 Key 按钮的同时,按下并释放 Reset 键,进入 IAP 模式。 6. 若在 main.h 文件中定义了 “USE_LCD”,LCD 屏幕上会显示消息,指示已经进入 IAP 模式。如果采用了 DHCP( main.h 文件中定义了 USE_DHCP),LCD 屏幕上也会显示一条消息,指示 DHCP IP 地址分配的成功或失败。 7. 分配完 IP 地址后 (动态或静态地址),用户可启动 IAP 进程。 8. 在 PC 上,打开 TFTP 客户端(例如,TFTPD32)并配置 TFTP 服务器地址(TFTPD32中的主机地址)。 9. 选择一个二进制映像下载到 STM32 Flash 中 (/project/binary 文件夹中提供了两个二进制映像作为例子)。 10. 在 TFTPD32 应用程序上点击 “Put” 按钮,启动一个文件写请求。 11. 如果定义了 USE_LCD, IAP 操作的进度会显示在 LCD 上。 12. 在 IAP 操作结束时,可以复位评估板来运行您刚才在 STM32 Flash 中编写的程序。 注: 在 USE_LCD 使能的情况下,如果出现连接问题,则 LCD 屏幕上会显示错误消息,指示连 接失败。 ![]() |
DM00025236_ZHV2.1.pdf
下载536.63 KB, 下载次数: 5
STM32硬件结构学习
stm32f207/stm32f407擦除内部flash讲解
【经验分享】STM32F2 中 DMA 的 FIFO 模式
STM32F2x7 通过以太网实现在应用中编程 (IAP)
在 STM32 F0、 F2、 F3、 F4 和 L1 系列MCU 中使用硬件实时时钟 (RTC)
STM32F1xx、STM32F2xx、STM32F4xx、STM32L1xx、STM32F30/31/37/38x 定时器概览
使用 STM32F2xx 和 STM32F4xx 微控制器时如何提高 ADC 测量精度
使用 STM32F2 和 STM32F4 DMA 控制器
STM32F72xxx和STM32F73xxx微控制器上的专有代码读取保护
【学习必备】每天学习STM32小技巧-6