当前位置:网站首页>把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
总结
方便生产效率的提升
边栏推荐
猜你喜欢

成功 解决 @keyup.enter=“search()“ 在el-input 组件中不生效的问题
![吴恩达机器学习[9]-神经网络学习](/img/07/0eeb3cd5f3ea7c2baeec1732ea8d9a.png)
吴恩达机器学习[9]-神经网络学习

Flutter 运动鞋商铺小demo

"Research Report on the Development of Global Unicorn Enterprises in the First Half of 2022" released - DEMO WORLD World Innovation Summit ended successfully

The electromagnetic compatibility EMC protection study notes

remote: Check Access Error, please check your access right or username and password!fatal: Authenti

RepVGG学习笔记

攻防视角下,初创企业安全实战经验分享

如何优雅的消除系统重复代码?

重构指标之如何监控代码圈复杂度
随机推荐
【Gopher 学个函数】边学边练,简单为 Go 上个分
5 基本引用类型
PHP 图片转PDF
Manacher(求解最长回文子串)
What is the difference between member variable and local variable
初学爬虫笔记(收集数据)
【伸手党福利】投影仪初学者入门——投影亮度及幕布选择——从入门到精通
小程序|炎炎夏日、清爽一夏、头像大换装
邮差"头":{“retCode”:“999999”
我说MySQL联合索引遵循最左前缀匹配原则,面试官让我回去等通知
GPS卫星同步时钟,NTP网络同步时钟,北斗时钟服务器(京准)
视频字幕API接口文档
Byte、Short、Integer、Long内部缓存类的对比与源码分析
实战:10 种实现延迟任务的方法,附代码!
解决dataset.mnist无法加载进去的情况
软件性能测试包括哪些内容?国内权威软件检测机构排名
Flutter 运动鞋商铺小demo
##ansible自动化运维架构与简介
74行代码实现浪漫的红心下落的动画效果
dotnet core 添加 SublimeText 编译插件