STM32合并烧录IAP+APP

STM32合并烧录IAP+APP 通过查找相关资料 

有以下几种合并方法

第一种直接将二进制文件用记事本合并

而要合并的就是就将IAP最后的一行删除,然后将APP程序追加在后面。

(修改前)

把APP的.hex 全部内容拷贝复制到 刚才删掉结束语句的 IAP的.hex后面

(修改后)

第二种使用二进制合并工具 

二、合并.bin文件
  1.将IAP和APP程序分别找出。打开 二进制文件合并工具。
  2.先将IAP产生的.bin文件拖入界面中,此时源文件后面应显示此.bin文件的路径,然后点击添加,该文件被添加到上面的列表中。
  3.再将APP产生的.bin文件拖入界面中,看到路径正确之后,更改偏移量(视情况而定,一般为0x00004000),在“插入”前面打钩,然后点击确定,再点击添加。此时上方的列表中应有两个文件的索引,且偏移地址正确。
  4.选取一个目标文件生成的路径,并为目标文件设置名字。点击合并,即可将两个.bin文件合并。

三、烧录合并后的.bin文件(使用J-Link SWD模式,BOOT0 = BOOT1 = 0)
  1.无法使用FlyMcu.exe烧录.bin文件,可能因为Keil转换后的.bin文件格式与FlyMcu.exe所支持的不同。
  2.使用 SEGGER J-Flash.exe 下载。
  3.设置好串口,波特率设置为115200(不超出MCU规定的范围即可)
  4.点击 file—> Open data file,将合并后的.bin文件添加进来。此时会弹出设置开始地址的对话框,填入8000000。点击OK。
  5.点击Target—> Manual Programming—>Erase Chip 将芯片擦除。
  6.点击Target—> Production Programming 进行下载。
  7.完成。
附:二进制文件合并工具下载地址:链接: https://pan.baidu.com/s/1D7D-cZ2wj_MU4mJ2hL9PWQ 密码: qtx4

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/hb69222/article/details/80538749

第三种  使用 J-FLASH 进行合并

合并操作步骤

在这里插入图片描述

图2

在这里插入图片描述

图3

在这里插入图片描述

打开IAP程序BOOTLoader文件

在这里插入图片描述

添加BOOTLoader

在这里插入图片描述

下一步添加APP程序

在这里插入图片描述

图7

在这里插入图片描述

保存合并 工程文件

在这里插入图片描述

图10

在这里插入图片描述

 

IAP+APP拼接方法
用于产品量产,烧录的程序文件,一般是hex,或bin文件。不管是hex文件,还是bin文件,我们都需要通过烧录软件 + 烧录(编程)工具实现。烧录软件针对不同MCU,一般有不同的烧录软件。

针对STM32,一般建议使用官方提供的STVP、ST-LINK Utility和STM32CubeProg 这三种编程软件。

拼接说明
1、拼接IAP+APP两段程序,一般简单方法就是:将两个程序分别烧录进去,再统一读取出来,保存成一个量产文件。
2、IAP 和 APP程序的起始地址是不同的,因此烧录进芯片,是存储在两片区域的。烧录程序的时候,特别是烧录bin文件(没有地址)时,要注意设置好起始地址。hex文件有地址地址,不用自己设置地址。读取“合并”程序的时候,同样要注意起始地址,还有读取大小,保证读取全部程序。

比如通过ST-LINK Utility读取STM32程序:

通过STM32CubeProg读取STM32程序:

再次提示:
烧录bin文件时,设置好起始地址;
读取时,设置起始地址,读取大小;
保存可选择hex,还是bin文件;

bin、hex文件互相转换
在某些情况下需要使用特定格式的文件,比如我们远程升级,要求通过bin文件实现。通过上面的介绍,其实你会发现,使用编程软件ST-LINK Utility,或STM32CubeProg,就能直接另存为hex,或bin文件格式。

ST-LINK Utility另存为:

STM32CubeProg另存为:

参考MDK-ARM如何生产Bin文件
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/weixin_45905650/article/details/108010156

### STM32 IAPAPP的关系及区别 在嵌入式系统开发中,STM32IAP(In Application Programming)和应用程序(APP)之间存在显著的区别以及紧密的联系。 #### 定义与功能差异 IAP指的是允许程序在其运行过程中更新其自身的固件或部分代码的功能。这种特性对于现场升级非常重要,在不移除硬件的情况下完成软件更新[^1]。而APP通常是指设备上执行的主要应用代码,负责实现具体的应用需求和服务。 #### 存储位置不同 IAP一般位于微控制器内部Flash存储器的一个特定区域,该区域被设计成可以安全地写入新版本的应用程序而不影响当前正在运行的操作。相比之下,APP则占用剩余可用的空间来存放实际业务逻辑所需的数据结构和其他资源文件。 #### 运行机制对比 当启动时,MCU会先加载并执行IAP模块中的引导程序;如果检测到有效的用户代码,则跳转至对应的入口地址开始正常工作流程——即进入APP阶段。因此可以说,IAP充当了一个中介角色,它不仅能够管理自身还包括整个系统的初始化过程;一旦完成了必要的准备工作之后就会把控制权交给真正的目标—也就是我们所说的APP. ```c // 示例:简单的IAP框架伪码展示如何切换到APP void JumpToApplication(uint32_t applicationAddress){ typedef void (*pFunction)(void); pFunction jump_address; // 获取重定位向量表偏移后的函数指针 jump_address = (pFunction)((*(volatile uint32_t*)applicationAddress)+applicationAddress); /* 初始化堆栈指针 */ __set_MSP(*(__IO uint32_t*)applicationAddress); // 跳转到应用程序起点 jump_address(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值