WEO啦

通过以太网实现STM32F107在线升级
收录时间:2022-11-25 21:37:23  浏览:0
2010 年 7 月Doc ID 17570 Rev 11 17 AN3226 应用笔记应用笔记 STM32F107 通过以太网实现在应用中编程 IAP 前言前言 本应用笔记的目标读者为使用 STM32F107 微***的开发者 提供了如何使用 STM32F107 以太网接口实现在应用中编程 IAP 的解决方案 在 LwIP TCP IP 协议栈上提供了两种可行的解决方案 使用 TFTP 简单文件传输协议 的 IAP 使用 HTTP 超文本传输协议 的 IAP 目录目录AN3226 2 17Doc ID 17570 Rev 1 目录目录 1IAP 概述概述 3 1 1工作原理 3 1 2使用 MCU 以太网接口实现 IAP 3 1 3在 STM32F107 上通过以太网实现 IAP 4 1 3 1使用 TFTP 实现 IAP 的方法 4 1 3 2使用 HTTP 实现 IAP 的方法 4 2使用使用 TFTP 实现实现 IAP 5 2 1TFTP 概述 5 2 2在 STM32F107 上使用 TFTP 实现 IAP 6 2 3使用软件 8 3使用使用 HTTP 实现实现 IAP 9 3 1HTTP 文件上传概述 9 3 2在 STM32F107 上使用 HTTP 实现 IAP 11 3 3使用软件 13 3 4已知*** 13 3 4 1添加到二进制文件的额外字节 13 4环境环境 14 4 1MAC 和 IP 地址设置 14 4 2STM3210C EVAL 板上的跳线设置 14 4 3软件文件结构 15 4 4代码量测量 15 4 5构建 IAP 映像 15 5版本历史版本历史 17 AN3226IAP 概述概述 Doc ID 17570 Rev 13 17 1 IAP 概述概述 1 1 工作原理工作原理 在应用中编程 IAP 是一种在现场通过 MCU 的通信接口 例如 UART USB CAN 和以太网 等 进行固件升级的方式 当启动微***时 您可以选择让它进入 IAP 模式以执行 IAP 代码 或者进入正常模式来开 始执行应用代码 IAP 代码和应用程序代码都存在于微***的嵌入式 Flash 中 通常 IAP 代 码被存储在 MCU Flash 的前几页 用户应用代码占据剩余的 Flash 区域 下图说明了 IAP 操作流程 图图 1 IAP 操作流程操作流程 1 2 使用使用 MCU 以太网接口实现以太网接口实现 IAP 当以太网可用时 它通常是在嵌入式应用中实现 IAP 功能的更好的接口 其优点是 高速通信接口 10 100Mbit s 通过网络 LAN 或者 WAN 进行远程编程 TCP IP 协议栈上的标准应用协议可用于实现 IAP 比如 FTP TFTP HTTP MCU 复位 是否进入 IAP 模式 IAP 初始化 无 有 是否有 IAP 请求 接收二进制映像并将其编程进 用户 Flash 区域 无 有 执行应用代码 IAP 概述概述AN3226 4 17Doc ID 17570 Rev 1 1 3 在在 STM32F107 上通过以太网实现上通过以太网实现 IAP 本应用笔记说明了两种使用以太网通信外设在 STM32F107 上实现 IAP 的解决方案 使用 TFTP 简单文件传输协议 的 IAP 使用 HTTP 超文本传输协议 的 IAP 两种解决方案都运行在 LwIP 协议栈 v1 3 1 上 它是 TCP IP 协议套件的一种轻量级实现 1 3 1 使用使用 TFTP 实现实现 IAP 的方法的方法 使用 TFTP 实现 IAP 的方法广泛应用于需要固件升级能力的嵌入式应用 比如在嵌入式 Linux bootloader 中 TFTP 是工作在 UDP 传输层上的简单文件传输协议 它主要应用在 LAN 环境中 它基于客户 端 服务器体系结构 其中客户端向文件服务器请求文件传输 读或写操作 在我们的例子中 在 LwIP 栈上实现了一个简单的 TFTP 服务器 该服务器只处理来自 PC TFTP 客户端的写请求 1 3 2 使用使用 HTTP 实现实现 IAP 的方法的方法 通过 HTTP协议进行固件更新没有使用 TFTP常见 但是当需要通过互联网进行远程编程时 它是一种有用的解决方案 在这种情况下 需要 TCP 传输协议来确保最优操作 工作在 TCP 上的 HTTP 提供了一种用 HTML 形式从 web 客户端 例如 Mozilla Firefox 或 Microsoft Internet Explorer 发送二进制文件的方法 称作 HTTP 文件上传 RFC 1867 本文档的下一部分给出了关于这两种IAP方法实现的更详细信息并解释了如何使用这个软件 AN3226使用使用 TFTP 实现实现 IAP Doc ID 17570 Rev 15 17 2 使用使用 TFTP 实现实现 IAP 2 1 TFTP 概述概述 简单文件传输协议 TFTP 是工作在 UDP 上的一种简单的文件传输协议 文件传输是从 TFTP 客户端发起的 TFTP 客户端向 TFTP 服务器发送读或写请求 当服务器确认请求后 文件数据传输开始 数据按固定大小的数据块发送 如 512 字节的数 据块 必须在每个传输的数据块被接收端响应后 才能发送下一个数据块 这种回应机制通过随每 个数据块同时发送的数据块编号来实现 数据块小于固定块大小表示文件传输结束 图 2 说明了各类 TFTP 包的格式 图图 2 TFTP 包包 TFTP 操作码在表1 中列出 表表 1 TFTP 操作码操作码 操作码操作操作码操作 0 x1 读请求 RRQ 0 x2 写请求 WRQ 0 x3 数据 0 x4 响应 ACK 0 x5 错误 2 字节字符串1 字节字符串1 字节 操作码文件名 0 模式 0 操作码数据块 数据 2 字节2 字节n 字节 2 字节2 字节 操作码数据块 2 字节2 字节字符串1 字节 操作码 错误 代码 错误消息 0 RRQ WRQ 包 数据包 包 数据包 ACK 包 错误包 包 错误包 使用使用 TFTP 实现实现 IAPAN3226 6 17Doc ID 17570 Rev 1 2 2 在在 STM32F107 上使用上使用 TFTP 实现实现 IAP 该 IAP 实现包括一个基本的 LwIP TCP IP 栈上的 TFTP 服务器 该服务器响应从远程 TFTP 客户端 PC 接收的 WRITE 请求 TFTP READ 请求被忽略 服务器将接收到的数据块写入 MCU Flash 在用户 Flash 区域 而不是将接收的文件写入 文件系统 注 在本实现中 数据块大小固定为512字节 下面的流程图给出了使用 TFTP 实现 IAP 操作的过程 AN3226使用使用 TFTP 实现实现 IAP Doc ID 17570 Rev 17 17 图图 3 使用使用 TFTP 实现实现 IAP 的流程图的流程图 TFTP 服务器初始化 TFTP 写请 求 无 擦除全部用户 Flash 区域 发送响应 数据包接收 向 Flash 写数据块 是否为最后一个数据包 大小 512 字节 发送响应 文件传输结束 无 无 进入 IAP 模式 使用使用 TFTP 实现实现 IAPAN3226 8 17Doc ID 17570 Rev 1 2 3 使用软件使用软件 为了通过 TFTP 对 IAP 进行测试 请确保遵循如下步骤 1 在 STM3210C EVAL 板上确保正确的跳线设置 参见 表 2 2 在 main h 文件中 取消选项 USE IAP TFTP 的注释 根据需求 您还可以取消注释 注释其它选项 比如 USE DHCP 或 USE LCD 3 重新编译软件 使用生成的 map 文件 确保 IAP 代码区域 从地址 0 x0 开始 和开始 于 USER FLASH FIRST PAGE ADDRESS 在 main h 中定义 的用户 Flash 区域之 间没有重叠 4 将程序下载到 STM32Flash 中并运行它 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 中编写的程序 图图 4 TFTPD32 对话框对话框 AN3226使用使用 HTTP 实现实现 IAP Doc ID 17570 Rev 19 17 3 使用使用 HTTP 实现实现 IAP 3 1 HTTP 文件上传概述文件上传概述 RFC1867中定义了使用HTTP进行文件上传 该上传文件方法基于HTML表单 通常用HTML POST 方法代替 GET 来发送原始二进制数据 下面是一个实现基于表单的文件上传的 HTML 代码示例 Please specify a binary file to upload into STM32F107 flash 图图 5 文件上传文件上传 HTML 表单的浏览器视图表单的浏览器视图 用户可以浏览选择一个二进制文件上传 然后按下上传按钮发送它 根据文件大小 数据以连续的 TCP 段形式发送给 web 服务器 注 发送文件数据前 web客户端发送包括文件名 内容长度等信息的HTTP头数据 其中一些 信息必须由web服务器进行解析 不同的web客户端并不总是拥有相同的HTTP头格式 图 6显示了POST请求的Internet Explorer HTTP头格式 图 7显示了Mozilla Firefox HTTP头格式 http web服务器必须能够处理这些不同格式 使用使用 HTTP 实现实现 IAPAN3226 10 17Doc ID 17570 Rev 1 图图 6 IE6 HTTP 头格式 图 头格式 图 7 Mozilla Firefox HTTP 头格式头格式 AN3226使用使用 HTTP 实现实现 IAP Doc ID 17570 Rev 111 17 3 2 在在 STM32F107 上使用上使用 HTTP 实现实现 IAP 该 IAP 实现包括一个基于 LwIP 栈的简单 HTTP web 服务器 当在浏览器上输入 STM32 IP 地址时 将显示登录网页如图 8 所示 此登录网页的目的是限 制只有授权用户可以进行 IAP 文件上传 图图 8 登录网页登录网页 用户必须输入正确的用户 ID 和密码 在 main h 文件中预定义的 并点击登录按钮 然后载 入一个文件上传页面 参见图 5 注 1默认用户ID为 user 密码为 stm32 2如果用户ID或密码不正确 登录网页将会重新加载 成功登录后 您可以浏览选择要加载进 STM32 Flash 的二进制文件 注 1用户需要确保该二进制文件的大小不超出STM32用户Flash区域的总大小 点击上传按钮 参见图 5 时 就向服务器发送了一个 POST 请求 此时服务器开始擦除所 有的用户 Flash 区域并等待二进制文件的原始数据 然后接收到的数据将会被写入用户 Flash 区域 请注意 要接收的数据总长度是从传输开始时发送的 HTTP 头数据中提取出来的 在 IAP 操作结束时 会加载一个网页指示 IAP 操作成功 网页上显示了一个可以复位 MCU 的 按钮 图图 9 文件上传完成网页文件上传完成网页 下面的流程图总结了使用 HTTP 实现 IAP 的方法 使用使用 HTTP 实现实现 IAPAN3226 12 17Doc ID 17570 Rev 1 图图 10 使用使用 HTTP 实现实现 IAP 的流程图的流程图 HTTP 服务器初始化 请求索引页 无 接收到文件上传的 HTML POST 请求 擦除全部用户 Flash 区域 接收到原始数 将数据写入 Flash 无 进入 IAP 模式 输入正确的用户 ID 密码 索引页发送到 web 客户端 无 文件上传页面发送到 web 客户 无 无 接收到所有数 据 上传完成页面发送到 web 客户端 AN3226使用使用 HTTP 实现实现 IAP Doc ID 17570 Rev 113 17 3 3 使用软件使用软件 为了通过 HTTP 对 IAP 进行测试 请遵循如下步骤 1 在 STM3210C EVAL 板上确保正确的跳线设置 参见 表2 2 在 main h 文件中 取消选项 USE IAP HTTP 的注释 并且根据需求您还可以取消注 释 注释其它选项 比如 USE DHCP 或 USE LCD 3 重新编译软件 使用生成的 map 文件 确保 IAP 代码区域 从地址 0 x0 开始 和开始 于 USER FLASH FIRST PAGE ADDRESS 在 main h 中定义 的用户 Flash 区域之间 没有重叠 4 将程序下载到 STM32Flash 中并运行它 5 按住 Key 按钮的同时 按下并释放 Reset 键 进入 IAP 模式 6 若在 main h 文件中定义了 USE LCD LCD 屏幕上会显示消息 指示已经进入 IAP 模 式 同样在使用 DHCP main h 文件中定义了 USE DHCP 的情况下 LCD 屏幕上也 会显示一条消息 指示 DHCP IP 地址分配的成功或失败 7 分配完 IP 地址后 动态或静态地址 用户可启动 IAP 进程 8 打开一个 web 客户端 Mozilla Firefox 或 Microsoft Internet Explorer 并输入 STM32 IP 地址 9 将会显示一个登录网页 在UserID字段中输入 user 并在Password字段中输入 stm32 然后按 Login 按钮 10 然后会加载 fileupload html 网页 选择一个要加载进 STM32 Flash 的二进制映像 然后 按 Upload 按钮开始 IAP 进程 11 如果定义了 USE LCD IAP 操作的进度会显示在 LCD 上 12 在 IAP 操作结束时 会加载一个新的网页 指示文件上传操作成功 13 可以按 RESET MCU 按钮复位 MCU 来运行您刚才在 STM32 Flash 中编写的程序 注 请注意 该软件已用下列web客户端测试 MSIE6 MSIE8和Mozilla Firefox 3 6 3 4 已知***已知*** 3 4 1 添加到二进制文件的额外字节添加到二进制文件的额外字节 网络浏览器 MSIE 或 Mozilla Firefox 会将一个随机边界标签 根据 RFC 1521 不长于 72 字节 添加到上传的二进制文件末尾 在当前的 IAP 软件版本中 如果有足够的空间 该边 界标签不会被移除而是存储在 Flash 中 如果空间不足 仅是额外的字节不写入 Flash 中 并 不返回错误 环境环境AN3226 14 17Doc ID 17570 Rev 1 4 环境环境 4 1 MAC 和和 IP 地址设置地址设置 MAC 和 IP 地址设置在 main h 文件中完成 默认 MAC 地址固定为 00 00 00 00 00 02 IP 可以被设置为静态地址 也可以设置为由 DHCP 服务器分配的动态地址 默认静态 IP 地 址设为 192 168 0 10 您可以通过在 main h 文件中使能 USE DHCP 来选择 DHCP 模式 请注意 如果选择通过 DHCP 配置 IP 地址 但应用程序无法在它已经连接到的网络上发现 DHCP 服务器 则 IP 地址会自动设为静态地址 192 168 0 10 4 2 STM3210C EVAL 板上的跳线设置板上的跳线设置 为了运行该软件 您需要遵照下表配置 STM3210C EVAL 板 需要在 stm32f107 c 文件中选择 MII 或 RMII 配置 例如 选择 RMII 模式 define MII MODE define RMII MODE 对于MII模式 PHY时钟取自外部晶体 而对于RMII模式 时钟由STM32经由MCO管脚提供 表表 2 跳线配置跳线配置 跳线跳线MII 模式配置模式配置RMII 模式配置模式配置 JP2 未连接连接 JP32 31 2 JP41 22 3 JP112 3 JP122 3 JP132 3 JP141 2 AN3226环境环境 Doc ID 17570 Rev 115 17 4 3 软件文件结构软件文件结构 下表介绍了项目源文件 注 表中未列出所用的标准固件库和LwIP栈的文件 4 4 代码量测量代码量测量 下表给出了根据 main h 文件中不同的配置选项进行的代码量测量 注 该软件使用IAR EWARM v5 41编译 对代码量进行了高度优化 4 5 构建构建 IAP 映像映像 为了构建 IAP 映像 将用 IAP 软件进行加载 请确保 1 向量表起始地址配置为用户 Flash 区域的起始地址 可以通过使用 std 库函数 NVIC SetVectorTable 实现 2 被编译 链接的软件必须从用户 Flash 区域起始地址开始运行 3 编译后的软件大小不超出总的用户 Flash 区域 AN2557 使用 STM32F10 xxx 的 UASRT 实现在应用中编程 中包括了一个软件示例 以供 参考 表表 3 文件结构文件结构 文
温馨提示:
1. WEO啦仅展示《通过以太网实现STM32F107在线升级》的部分公开内容,版权归原著者或相关公司所有。
2. 文档内容来源于互联网免费公开的渠道,若文档所含内容侵犯了您的版权或隐私,请通知我们立即删除。
3. 当前页面地址:https://www.weo.la/doc/a850c7726bd71cfd.html 复制内容请保留相关链接。