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等网络协议输出二进制固件

使用 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 实现在应用中

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/684116.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

企业级数据保护:华企盾DSC敏感内容识别与加密技术

在当今数字化时代,企业面临的数据安全挑战日益严峻。敏感数据的泄露不仅会导致经济损失,还可能损害企业的声誉和客户信任。因此,采用先进的敏感内容识别和加密技术,例如华企盾DSC敏感内容识别,对企业数据进行有效保护至…

PyCharm如何更换解析器为Anaconda,如何自己切换python环境

自己使用了Anaconda创建了一个环境: 如何在工具PyCharm中切换自定义的python环境呢? 1. 点击 设置 2. 项目:python - Python解析器 此时会发现,只有一个默认的版本。 3. 点击 添加解析器 - 添加本地解析器 4. 选择 conda 环境…

全球AI新闻速递6.6

1.伏羲升级!智能气象创新生态联盟成立。 2.微软:首个大规模大气基础模型Aurora。 3.鸿海集团:宣布在高雄建造先进算力中心,与NVIDIA在 AI 领域合作展开多方面合作。 4.全球首个全切片数字病理学模型GigaPath发布。 5.OpenAI与…

DDS自动化测试落地方案 | 怿星科技携最新技术亮相是德科技年度盛会

5月28日,怿星科技作为是德科技的重要合作伙伴亮相Keysight World Tech Day 2024。在此次科技盛会上,怿星科技不仅展示了领先的DDS自动化测试解决方案等前沿技术,还分享了在“周期短、任务重”的情况下,如何做好软件开发和测试验证…

指纹考勤机的运用办法,指纹考勤机一台多少钱

指纹考勤机的运用办法,指纹考勤机一台多少钱 通常普通的指纹考勤机仅需几十元到一百元上下,只具备单纯的打卡功能,使用体验较差;这种考勤机仅有基础的指纹打卡时间记录,拷贝需要 U 盘,整理则需人员进…

多曝光融合算法(三)cv2.createAlignMTB()多曝光图像融合的像素匹配问题

文章目录 1.cv2.createAlignMTB() 主要是计算2张图像的位移,假设位移移动不大2.多曝光图像的aline算法:median thresold bitmap原理讲解3.图像拼接算法stitch4.多曝光融合工具箱 1.cv2.createAlignMTB() 主要是计算2张图像的位移,假设位移移动…

EXCEL从图片链接获取图片

step1: 选中图片地址列 step2:开发工具→Visual Basic 文件→导入 导入我制作的脚本(代码见文章末尾) 点击excel的小图标回到表格界面。 点击【宏】 选中刚才导入的脚本,点执行,等待完成。 代码本体: Sub InsertPict…

数据结构与算法-12_二叉搜索树

文章目录 1.概述2.实现定义节点查询Comparable最小最大新增前驱后继删除找小的找大的找之间小结 3.习题E01. 删除节点-Leetcode 450E02. 新增节点-Leetcode 701E03. 查询节点-Leetcode 700E04. 验证二叉搜索树-Leetcode 98E05. 求范围和-Leetcode 938E06. 根据前序遍历结果构造…

VB.net实战(VSTO):Excel插件的安装与卸载

1. 安装 1.1编程环境:Visual Studio 2022 1.2创建新项目: 1.3 加入一行测试程序:MsgBox(“hello”),点击启动,确认可以弹窗 1.4 点击发布 1.5 找到安装程序,点击安装。打开Excel程…

XM平台的交易模式模式是什么?

外汇交易平台的盈利模式主要分为两种:有交易员平台和无交易员平台。 有交易员平台,也称为做市商平台,为客户提供交易市场,并在需要时与客户持相反方向的交易,从中赚取利润。交易者看到的买入卖出价可能与实际价格不同&…

Android完整备份:备份Android手机数据的4种最佳方法

如今,人们每天都依赖手机,丢失数据对我们所有人来说都是一个大麻烦。由于生活是不可预测的,没有人知道什么时候他的数据可能会被意外删除或丢失。因此,仔细备份手机数据非常重要。大多数主要智能手机平台都具有将数据备份到计算机…

在Win10安装MySQL环境以及更改相关配置---附带每一步截图

下载MySQL数据库 MySQL官网链接 选择合适自己的版本,这里我选择5.7.17,选择安装包大的那一个,这个是离线安装,下载到本地后进行安装。 选择“No thanks,just start my download.”即进入下载状态。 安装 运行安…

JavaSE——【方法的使用】(二)

文章目录 前言一、方法重载二、递归总结 前言 在无尽的宇宙深处,一艘造型奇特的飞船如流星般划过黑暗。飞船内部,各种高科技设备闪烁着冷峻的光芒。一位年轻的宇航员正专注地操作着控制面板,面板上突然弹出JavaSE—方法的使用的续篇更新了&am…

【Python Cookbook】S01E20 fnmatch 模块做字符串匹配

目录 问题解决方案讨论 问题 在不同的操作系统下,怎样做字符串匹配? 解决方案 fnmatch() 模块提供两个函数,fnmatch() 以及 fnmatchcase() 可以用来执行做这样的匹配。 from fnmatch import fnmatch, fnmatchcasematch_res fnmatch(foo.…

MBR10100FCT-ASEMI肖特基二极管MBR10100FCT

编辑:ll MBR10100FCT-ASEMI肖特基二极管MBR10100FCT 型号:MBR10100FCT 品牌:ASEMI 封装:TO-220F 最大平均正向电流(IF):10A 最大循环峰值反向电压(VRRM)&#xff1…

Python实现定时任务的三种方案——schedule、APScheduler、Celery

schedule schedule是一个轻量级的Python库,用于定期执行任务,即定时任务调度。它提供了一种简单直观的方式来自定义任务执行的时间规则,而无需复杂的线程或进程管理知识。schedule适用于那些需要在后台定期执行某些功能的Python应用程序&…

指令工程Prompt的演变:从必须技能到AI内置功能

前言 随着人工智能(AI)技术的飞速发展,我们见证了许多领域的变革。在AI的早期,指令工程(Prompt Engineering)是一项关键技能,它允许我们更有效地与AI进行交互,指导AI完成特定的任务…

C:pro_1

涉及知识点:C语言、数据结构、文件IO 1前言 ①linux挂载U盘 为解决多张图片传输到6813传输慢的不足,采用linux挂载U盘。步骤为: ①查看U盘名字 fdisk -l ②建USB文件夹 mkdir /mnt/usb ③挂载u盘 mount /dev/sda /mnt/usb 进入/mnt/usb可以查看u盘的内容 ④…

如何去掉IDEA中烦人的警告波浪线

有时候想去掉idea中那些黄色的红色的warning波浪线,这些不是错误,并不影响执行,一直显示显得让人很烦躁,去"Editor" -> "Inspections"中一个个设置很麻烦。 可以通过设置代码检测级别来降低代码检查的严格…

从零开始发布你的第一个npm插件包并在多项目中使用

引言 在开源的世界里,每个人都有机会成为贡献者,甚至是创新的引领者。您是否有过这样的想法:开发一个解决特定问题的小工具,让她成为其他开发者手中的利器?今天,我们就来一场实战训练,学习如何将…