STM32远程更新

1 IAP 概述
1.1
工作原理
在应用中编程( IAP )是一种在现场通过 MCU 的通信接口(例如 UART,USB,CAN 和以太网
等)进行固件升级的方式。
当启动微控制器时,您可以选择让它进入 IAP 模式以执行 IAP 代码,或者进入正常模式来开
始执行应用代码。 IAP 代码和应用程序代码都存在于微控制器的嵌入式 Flash 中。通常 IAP 代
码被存储在 MCU Flash 的前几页,用户应用代码占据剩余的 Flash 区域。
下图说明了 IAP 操作流程:

1.2 可以通过tcp/ip,http,tftp等网络协议输出二进制固件

2 使用TFTP实现****IAP

2.1 TFTP 概述
简单文件传输协议 ( TFTP )是工作在 UDP 上的一种简单的文件传输协议。
文件传输是从 TFTP 客户端发起的, TFTP 客户端向 TFTP 服务器发送读或写请求。
当服务器确认请求后,文件数据传输开始。数据按固定大小的数据块发送 (如 512 字节的数
据块)。
必须在每个传输的数据块被接收端响应后,才能发送下一个数据块。这种回应机制通过随每
个数据块同时发送的数据块编号来实现。
数据块小于固定块大小表示文件传输结束。
2 说明了各类 TFTP 包的格式:


2.2 使用 TFTP 实现 IAP
该 IAP 实现包括一个基本的 LwIP TCP/IP 栈上的 TFTP 服务器。该服务器响应从远程 TFTP
客户端 ( PC )接收的 WRITE 请求。 TFTP READ 请求被忽略。
服务器将接收到的数据块写入 MCU Flash (在用户 Flash 区域),而不是将接收的文件写入
文件系统。
注: 在本实现中,数据块大小固定为 512 字节。
下面的流程图给出了使用 TFTP 实现 IAP 操作的过程。

2.3
使用软件
为了通过 TFTP 对 IAP 进行测试,请确保遵循如下步骤:

  1. 在 STM3210C_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. 将程序下载到 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 中编写的程序。

注意事项:
为了构建 IAP 映像 (将用 IAP 软件进行加载),请确保:
1.
向量表起始地址配置为用户 Flash 区域的起始地址。可以通过使用 std 库函数:
NVIC_SetVectorTable 实现。
2. 被编译 / 链接的软件必须从用户 Flash 区域起始地址开始运行。
3. 编译后的软件大小不超出总的用户 Flash 区域
AN2557 : " 使用 STM32F10xxx 的 UASRT 实现在应用中

相关推荐
cjy_Somnr25 分钟前
keil5报错显示stm32的SWDIO未连接不能烧录
stm32·单片机·嵌入式硬件
Lay_鑫辰1 小时前
西门子诊断-状态和错误位(“轴”工艺对象 V1...3)
服务器·网络·单片机·嵌入式硬件·自动化
无垠的广袤3 小时前
【工业树莓派 CM0 NANO 单板计算机】本地部署 EMQX
linux·python·嵌入式硬件·物联网·树莓派·emqx·工业物联网
雲烟5 小时前
嵌入式设备EMC安规检测参考
网络·单片机·嵌入式硬件
泽虞5 小时前
《STM32单片机开发》p7
笔记·stm32·单片机·嵌入式硬件
田甲6 小时前
【STM32】 数码管驱动
stm32·单片机·嵌入式硬件
up向上up6 小时前
基于51单片机垃圾箱自动分类加料机快递物流分拣器系统设计
单片机·嵌入式硬件·51单片机
纳祥科技15 小时前
Switch快充方案,内置GaN,集成了多个独立芯片
单片机
单片机日志17 小时前
【单片机毕业设计】【mcugc-mcu826】基于单片机的智能风扇系统设计
stm32·单片机·嵌入式硬件·毕业设计·智能家居·课程设计·电子信息
松涛和鸣17 小时前
从零开始理解 C 语言函数指针与回调机制
linux·c语言·开发语言·嵌入式硬件·排序算法