当前位置:网站首页>把boot和APP一起烧录进MCU
把boot和APP一起烧录进MCU
2022-08-04 15:41:00 【路过的小熊~】
介绍
iap和APP程序烧录进单片机大致有两种方法:
1,第一种方法,先烧录IAP,再用IAP引导(比如通过串口)烧录APP程序,这样就需要两步,比较费时费力,对大批量生产不太合适;
2,第二种方法,把boot.HEX与APP.HEX文件合并,一次烧录进去,省事省力;
IAP.HEX与APP.HEX文件合并介绍
下面介绍一下,怎么样把boot.HEX与APP.HEX文件合并成一个文件
boot +APP 结合的方法
boot 和APP 的hex 文件合成1个hex 文件的方法有3种:
方法一 – 工具烧录
1、boot 先用工具烧写进flash 的 0x0800 0000 开始位置, 再把APP用工具烧写到 flash 的0x 0800 3000开始的地方;
方法二 – 手动合并为一个烧录
2、手动合并boot和app 的.hex 文件
(1)设置boot程序下载到flash 的开头地址为0x0800 0000,然后编译程序生成hex文件。
(2)设置APP程序下载到flash 的开头地址(地址依据芯片和程序大小而定),然后编译程序生成hex文件。
(3)用 notepad++ (或Uedit32) 打开 boot 的hex文件和APP的hex 文件
把boot的.hex 最后一句结束语句去掉(即:删除:00000001FF)
把APP的.hex 全部内容拷贝复制到 刚才删掉结束语句的boot的.hex后面
(4)把两个hex合成的hex文件重新命名为XXX.hex,然后通过烧写工具烧写到0x0800 0000 开始位置的地址即可。
方法三 – bin文件工具合并烧录
3、利用bin文件合并工具将两个bin文件合并为一个
下载地址https://download.csdn.net/download/qq_32348883/86321337
方法四 – hex文件脚本合并烧录
我们使用程序编译完成这个操作
1、我们知道IAP程序确定后,一般是不需要怎样改动的。那么我们将STM32_IAP.hex文件打开,将最后一行删掉之后,保存为一个新的文件 STM32_IAP_change.hex,存放在新建的文件夹中
2、将STM32_IAP_change.hex 的内容复制到一个新的文件中 STM32_App.hex
3、将keil5生成的stm32.hex 追加到 STM32_App.hex中。这样即可以得到我们想要的合并的文件。
(可以通过手动合并生成的文件与使用该程序生成文件进行对比是否有所差异)
4、根据以上步骤,新建 merge.cmd 文件,然后在该文件中添加一下代码。将该脚本放在与STM32_IAP_change.hex同样的文件中。其中 type %cmdDir%…\Uvproj\Output\stm32.hex >> %cmdDir%STM32_App.hex 这行脚本的 \Uvproj\Output\stm32.hex是工程文件生成hex文件路径。
set "cmdDir=%~dp0"
copy %cmdDir%Stm32_IAP_chang.hex %cmdDir%STM32_App.hex
type %cmdDir%..\Uvproj\Output\stm32.hex >> %cmdDir%STM32_App.hex
5、点击 keil5中的魔术棒,将该脚本文件添加到 Run 中
6、这样,每次编译后,就会执行该脚本,就可以自动生成期望的合并文件,不用每次手动合并那么繁琐,从而提高开发效率。
方法5 – 使用hex上位机合并工具
下载地址https://download.csdn.net/download/qq_32348883/86322334
总结
方便生产效率的提升
边栏推荐
猜你喜欢
第三章 Scala运算符
Semaphore 基本原理
我说MySQL联合索引遵循最左前缀匹配原则,面试官让我回去等通知
直播回放含 PPT 下载|基于 Flink & DeepRec 构建 Online Deep Learning
GPS卫星同步时钟,NTP网络同步时钟,北斗时钟服务器(京准)
李沐的深度学习笔记来了!
成功 解决 @keyup.enter=“search()“ 在el-input 组件中不生效的问题
Flutter 运动鞋商铺小demo
有哪些好用的IT资产管理平台?
Legal education combined with VR panorama, intuitively feel and learn the spirit of the rule of law
随机推荐
保证通信的机制有哪些
Summary of some pytorch knowledge points that have been updated for a long time
一文详解什么是软件部署
实战:10 种实现延迟任务的方法,附代码!
成功 解决 @keyup.enter=“search()“ 在el-input 组件中不生效的问题
GPS卫星同步时钟,NTP网络同步时钟,北斗时钟服务器(京准)
普法教育结合VR全景,直观感受和学习法治精神
C端折戟,转战B端,联想的元宇宙梦能成吗?
第三章 Scala运算符
云存储硬核技术内幕——(12) 皮洛士惨胜罗马军团
招募 | 香港理工大学Georg Kranz 博士诚招博士
邮差"头":{“retCode”:“999999”
tif转mat
RSA306B,500,600系列API接口代码
成员变量与局部变量的区别有哪些
For循环控制
SAP ABAP SteamPunk 蒸汽朋克的最新进展 - 嵌入式蒸汽朋克
张乐:研发效能的黄金三角及需求与敏捷协作领域的实践
Crawler Xiaobai Notes (yesterday's supplement to pay attention to parsing data)
【Go事】一眼看穿 Go 的集合和切片