keil相关之:hex --- bin --- hex --- Download

news/2025/12/1 10:22:29/文章来源:https://www.cnblogs.com/xyzjacky/p/19291761

1. 前言

前面说了
怎样只生成 hex
为什么只要 hex,现在说一下具体的 keil 工程设置来使用生成的 hex。主要分为以下几步:

  1. hex(axf) ---> bin;
  2. bin + bin;
  3. bin ---> hex。

我的试验环境:

操作系统:Win10 64bit

keil:uVision V5.40.0.0

ARM :Cortex-M0

ROM:128KB,0~0x1ffff

RAM:128KB,0x20000000 ~ 0x2001ffff

 

下面是具体的工程设置。

2. 工程设置

2.1 bootloader

bootloader 存储在 ROM,运行在 ROM。

ROM 和 RAM 空间如下:

ROM:0~0xffff,64KB;

RAM:0x20010000 ~ 0x2001ffff,64KB;

640

 

将编译时生成的中间文件存放在单独目录 Objects\ 和 Listings\ 。Objects\ 目录很重要,keil 烧写芯片时从该目录获取对应格式的文件。

640 (1)

 

640 (2)

 

存储中间文件的目录:

640 (3)

 

2.1.1 axf(hex)--->bin

语法:

1
fromelf.exe #L --bin  --output bootloader.bin

640 (4)

 

生成的 bootloader.bin:

640 (5)

 


2.2 application

application 存储在 ROM,上电后由 bootloader 拷贝到 RAM,然后再运行。所以,需要将部分 RAM 当作 ROM。而且,和 bootloader 工程不同的是,application 需要两种模式:Debug 和 Release,这两个模式都很重要。Debug 不仅用于调试,还需要生成最终可用的程序文件——application.bin,Release 只生成 hex,用于烧写。

2.2.1 Debug

因为 application 最终要运行在 RAM,所以,设置部分的 RAM 为 ROM。Debug 配置下的 ROM 和 RAM 空间设置如下:

'ROM':0x20000000 ~ 0x2000ffff,64KB;

RAM:0x20010000 ~ 0x2001ffff,64KB;

640 (6)

 

2.2.1.1 axf(hex)--->bin

Debug 模式下生成最终执行的 application.bin。

640 (7)

 

Debug 模式下的 application.bin:

640 (8)

2.2.2 Release

Release 模式下的 ROM 和 RAM 空间设置如下:

ROM:0x0 ~ 0xffff,64KB;

RAM:0x20010000 ~ 0x2001ffff,64KB;

其实,这里的 ROM 和 RAM 配置不重要,因为烧写时不会使用该配置下生成的 hex 文件,而是使用后面合成的 hex,相当于骗了 keil。Release 模式存在的意义就是让 keil 烧写时选择 hex 文件。所以,需要配置 Release 
只生成 hex

640 (9)

 

Release 模式下的 application.hex,该文件位于 Objects\ 目录下,下面由 bin 转为 hex 时也要放在该目录下

640 (10)

3. bin + bin

现在,生成了两个 bin——bootloader.bin 和 application.bin,需要将两者合并为一个 bin。这两个文件在 ROM 中的地址分别为:

bootloader.bin:0~0xffff;

application.bin:0x10000~0x1ffff;

两个 bin 文件的合并需要借助第三方工具 srecord 中的 srec_cat。srecord 安装完成后需要在系统环境变量 path 中添加 srec_cat 的位置,目的是让 keil 能调用 srec_cat。

640 (11)

 

 

3.1 srec_cat 合并 bin

语法:

1
srec_cat -output m0.bin -binary path\bootloader.bin -binary -fill 0xff 0x0 0x10000 path\application.bin -binary -offset 0x10000

-output target.bin -binary:生成的文件的名称和类型;

path\bootloader.bin -binary:第一个输入文件的名称和类型;

-fill 0xff 0x0 0x10000:将 0x0~0x10000 之间的空白地址填充为 0xff。本例中,0x0 指的是 bootloader.bin 在 ROM 中的起始地址,0x10000 为 application.bin 在 ROM 中的起始地址;

path\application.bin -binary -offset 0x10000 :第二个输入文件的名称、类型及其在生成文件中的偏移。

3.2 application Release

配置 application 的 Release 模式,生成整体的 bin 文件—— m0.bin = bootloader.bin + application.bin。

1
srec_cat -output m0.bin -binary ..\..\bootloader\project\bootloader.bin -binary -fill 0xff 0x0 0x10000 application.bin -binary -offset 0x10000

640 (12)

 

生成的 m0.bin:

640 (13)

 

 

3.2.1 文件内容对比

 

640 (14)

 

640 (17)

 

上图可以看到,m0.bin 的地址 0 处为 bootloader.bin,地址 0x10000 处为 application.bin,合并成功

4. bin ---> hex

由于 keil 无法烧写 bin 文件,因此需要将 bin 转回 hex。

语法 :

1
srec_cat m0.bin -binary -output Objects\application.hex -Intel

m0.bin -binary:输入的文件名称和格式;

-output Objects\application.hex -Intel 输出的文件名称和格式;

输出的 hex 名称必须和 application 工程中 Release 配置下设置的 hex 名称相同,而且必须放在 Objects\ 目录下。

4.1 application Release

640 (15)

 

640 (16)

 

 

 

至此,hex(axf) ---> bin ---> hex 的转换就全部完成了,keil 可以在 application 工程的 Release 模式下直接 Download hex 到芯片中。

 

另外,因为 keil 最多支持两条自定义指令——Run #1 和 Run #2,所以,如果需要更复杂的实现,比如删除、拷贝某些文件,可以在 windows 脚本 dat 文件中包含上述指令,然后在 keil 中的 Run #1 或 Run #2 中执行 windows 脚本。

5. 总结

由于 application 存储和运行的地址不同,给工程设置带来了很大的麻烦,好在可以借助其他工具实现。主要包含以下几步:

  1. hex(axf)--->bin。简单设置 keil 即可;
  2. bin + bin。需要借助 srecord 中的 srec_cat  实现;
  3. bin--->hex。需要借助 srecord 中的 srec_cat 实现;
  4. application 需要两种工程配置,分别实现不同的目的。

注意:

  1. application 工程中,必须先编译 Debug 配置生成 application.bin 再编译 Release 配置;
  2. 由 Debug 切换到 Release 后,最好执行一次 project--->clean targets,目的将 Debug 模式下生成的 axf 文件删除。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

看完《疯狂动物城》心痒痒?试试ComfyUI,让朱迪和尼克走进你的画布

看完《疯狂动物城》心痒痒?试试ComfyUI,让朱迪和尼克走进你的画布 最近,《疯狂动物城》再度以超高热度回归大众视野。 大银幕上朱迪的勇敢坚定、尼克的幽默机敏,还有那座让人无限着迷的动物乌托邦,当片尾曲响起,…

2025年靠谱的工业除尘布袋/玄武岩除尘布袋热门厂家推荐榜单

2025年靠谱的工业除尘布袋/玄武岩除尘布袋热门厂家推荐榜单工业除尘布袋市场现状与趋势随着全球环保法规日益严格和工业企业对清洁生产要求的不断提高,工业除尘布袋作为大气污染治理的核心部件,市场需求持续增长。据…

2025年知名的楼梯栏杆/阳台栏杆用户好评厂家排行

2025年知名的楼梯栏杆/阳台栏杆用户好评厂家排行行业背景与市场趋势随着城市化进程的加快和人们对居住环境安全性与美观性要求的提升,楼梯栏杆和阳台栏杆作为建筑安全防护的重要组成部分,市场需求持续增长。据行业报…

2025年比较好的防腐耐磨涂层/渣浆泵耐磨涂层厂家最新热销排行

2025年比较好的防腐耐磨涂层/渣浆泵耐磨涂层厂家热销排行 行业背景与市场趋势 随着工业设备向高效化、长寿命方向发展,防腐耐磨涂层的市场需求持续增长。在矿山、冶金、电力、化工等领域,渣浆泵、管道、反应釜等设…

Java 的文件编程和网络编程

目录Java 的文件编程和网络编程相同点1. 统一的I/O抽象模型2. 相似的基础API使用3. 相同的数据处理方式4. 相同的资源管理原则不同点1. 操作对象不同2. 核心类不同3. 连接建立方式不同4. 编程复杂度和关注点不同5. 异常…

2025成都小程序开发企业推荐排行榜:实力与口碑兼具

在2025年,小程序开发市场竞争日趋激烈,选择一家技术实力与口碑兼具的开发企业至关重要。推来客网络作为一家综合实力领先的开发服务商,凭借 优秀的技术能力、完善的服务保障和广泛的行业适配能力,在排行榜中名列前…

深入解析:Go语言设计模式:解释器模式详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

小程序开发公司推荐专业诚信企业推来客网络

推来客网络致力于帮助企业实现数字化转型,提升业务效率与用户体验。如果您正在寻找一家兼具专业与诚信的小程序开发公司,推来客网络是值得信赖的选择。在2025年,数字化竞争日益激烈,小程序已经成为企业业务拓展与服…

【2025-11-29】连续摘抄

23:59无论你的家庭有多么糟糕,请记住它最多限制你的起点,而不是你的终点。——戴尔卡耐基我认为一些传统媒体能凤凰涅槃。你就要退休了,媒体能有复兴,你也是事外人。收入的下降,要实实在在承受。没办法,时代的变…

2025年铝合金车棚厂家权威推荐榜单:家用铝合金遮阳棚/阳台铝合金雨棚/别墅铝合金遮阳棚源头厂家精选

在当代建筑与家居环境优化领域,铝合金车棚以其卓越的耐久性、美观性与功能性,正成为户外空间建设的重要选择。本文将基于企业资质、材料工艺、服务体系与市场口碑等多维度数据,为您呈现2025年铝合金车棚行业的权威推…

2025年靠谱的科技馆展厅设计/数字展厅体验口碑榜

2025年靠谱的科技馆展厅设计/数字展厅体验口碑榜行业背景与市场趋势随着数字技术的迅猛发展和公众对互动体验需求的不断提升,科技馆展厅设计和数字体验领域正经历着前所未有的变革。2025年,这一行业已从传统的静态展…

诚信的小程序开发企业推荐:推来客网络的技术实力与交付保障

推来客网络在小程序开发领域凭借其出色的技术实力与交付保障赢得了行业和客户的认可。其客户中,中大型企业占比达 45%,中小微企业占比 55%,证明了其服务能力覆盖不同规模企业的需求。根据中国信通院发布的《2025企业…

体操竞技展风采 球类赛事竞风流

2025-11-30 14:00:00 体操竞技展风采 球类赛事竞风流|@wWw.KepRiNtInG.cOm@||@m.KepRiNtInG.cOm@||@wWw.ImEiLaObAn.cOm@||@m.ImEiLaObAn.cOm@||@m.GaNsHiChUcHeNqi.cOm@||@m.YaNhUiYuAn.cOm@||@wWw.CyJyJt.cN@||@m.Cy…

2025年度全国FSD热泵品牌制造商排行榜,先进生产企业及值

为帮助工业企业高效锁定适配自身余热回收与节能需求的FSD热泵合作伙伴,避免选型时因技术参数模糊、场景适配性不足踩坑,我们从核心技术专利储备(如热能回收工艺、低温运行稳定性)、生产制造标准(含核心部件供应链…

2025年10kv绝缘胶板生产厂家权威推荐榜单:防静电地胶板‌/防静电绝缘胶垫‌/防静电胶板‌源头厂家精选

在电力行业,安全是永恒的生命线。10kv绝缘胶板作为保障配电室、变电站等场所作业人员安全的重要防线,其品质直接关系到重大人身设备事故的发生与否。 随着电网升级改造的持续推进,2024年中国电网工程完成投资已超过…

2025年靠谱的中控脚轮/冰箱脚轮厂家推荐及选择指南

2025年靠谱的中控脚轮/冰箱脚轮厂家推荐及选择指南行业背景与市场趋势随着全球制造业的持续发展和物流行业的不断升级,脚轮作为各类设备移动的基础部件,其市场需求呈现稳定增长态势。根据市场研究数据显示,2023年全…

2025年知名的泥浆压滤机/压滤机厂家实力及用户口碑排行榜

2025年知名的泥浆压滤机/压滤机厂家实力及用户口碑排行榜行业背景与市场趋势随着环保政策的日益严格和工业生产的持续发展,泥浆压滤机作为固液分离的关键设备,在各行各业的应用越来越广泛。2025年,全球压滤机市场规…

2025年热门的家具脚轮优质厂家推荐榜单

2025年热门的家具脚轮优质厂家推荐榜单行业背景与市场趋势随着全球家具行业的持续发展,家具脚轮作为功能性配件的重要性日益凸显。2025年,家具脚轮市场预计将达到85亿美元规模,年增长率稳定在5.3%左右。这一增长主要…

ftp服务器软件是什么?主要有哪些特点和优势?

FTP服务器软件不仅是文件传输的重要工具,也是各行业实现数据共享和安全管理的绝佳选择。通过灵活的应用场景,企业可以高效地上传和下载所需文件,确保业务流程的顺畅。在特点方面,这类软件通常支持多种传输协议,并…

2025年AI Wiki软件深度横评:谁是企业知识管理的最佳选择?

2025年AI Wiki软件深度横评:谁是企业知识管理的最佳选择?“我们公司该选哪款AI Wiki?”这是最近我被问得最多的问题。 随着AI技术的爆发式发展,传统Wiki软件已经无法满足企业的知识管理需求。市面上的AI Wiki产品如…