HEX文件合并全攻略:从原理到实战

目录

一、合并前的核心原理(必懂)

二、分场景详细合并方法

场景 1:新手首选 ——GUI 可视化工具(无代码,易操作)

方法 1:HexMerge(Microchip 官方,跨平台,免费)

前置准备

操作步骤

方法 2:ST-Link Utility(针对 STM32 芯片,常用)

方法 3:J-Flash(Segger 工具,支持多品牌芯片)

场景 2:批量 / 自动化 —— 命令行工具(srec_cat)

前置准备

核心命令(可直接复制使用)

命令参数解释

场景 3:定制化 ——Python 脚本(可自定义逻辑)

完整可运行脚本

使用步骤

脚本优势

场景 4:开发阶段集成 ——IDE 直接生成(最便捷)

方法 1:Keil MDK(ARM 芯片)

方法 2:STM32CubeIDE(Eclipse)

三、合并后验证(关键步骤)

四、常见问题及解决方法

总结


系统、详尽且可落地的指南,完整掌握将 Boot 和 APP 的 Intel HEX 文件合并为单个可烧写 HEX 文件的方法,涵盖原理、不同场景的实操步骤、验证手段和问题排查,满足从新手可视化操作到批量自动化处理的全需求。

一、合并前的核心原理(必懂)

合并的本质是保留两个文件的有效数据行、扩展地址行,删除多余的结束行,仅保留一个最终结束行,且必须满足:

  1. 地址无重叠:Boot 的最高绝对地址 < APP 的最低绝对地址(如 Boot 占 0x08000000~0x08003FFF,APP 占 0x08004000~0x0801FFFF);
  2. 格式合规:仅删除01类型的结束行,其余行(00数据行、04扩展地址行)全部保留;
  3. 结束行唯一:合并后的文件仅能有一行:00000001FF01类型结束行),且必须在最后。

二、分场景详细合并方法

场景 1:新手首选 ——GUI 可视化工具(无代码,易操作)

方法 1:HexMerge(Microchip 官方,跨平台,免费)

HexMerge 是专门处理 Intel HEX 的工具,兼容所有品牌芯片(不限于 Microchip),能自动检测地址冲突,是新手最优解。

前置准备
  • 下载:安装 MPLAB X IDE(内置 HexMerge),或单独提取 HexMerge 工具(搜索 “HexMerge standalone”);
  • 确认文件:准备好boot.hexapp.hex,放在同一文件夹。
操作步骤
  1. 打开 HexMerge(MPLAB X 中路径:ToolsHex UtilitiesHexMerge);
  2. 「Input Files」区域:点击Add,依次添加boot.hexapp.hex(顺序不影响,工具会按地址排序);
  3. 「Output File」区域:设置输出路径(如merged.hex),格式选择Intel Hex
  4. 「Options」区域:勾选Check for address overlaps(检测地址重叠,关键!);
  5. 点击Merge,工具自动完成:
    • 删除两个文件的多余结束行;
    • 保留所有数据行、扩展地址行;
    • 添加唯一的最终结束行;
    • 若地址重叠,会弹出错误提示(需修改 Boot/APP 的地址分配)。
方法 2:ST-Link Utility(针对 STM32 芯片,常用)

若你使用 STM32 芯片,ST-Link Utility 是烧写 + 合并的一站式工具:

  1. 打开 ST-Link Utility,点击FileMerge Hex Files
  2. 在弹出窗口中点击Add,选择boot.hexapp.hex
  3. 点击OK,选择保存路径(如merged.hex),工具自动合并;
  4. 可直接点击TargetProgram & Verify,验证合并后的文件是否能正常烧写。
方法 3:J-Flash(Segger 工具,支持多品牌芯片)

适合使用 J-Link 调试器的场景:

  1. 打开 J-Flash,新建工程(选择对应芯片型号);
  2. 点击FileOpen Data File,先打开boot.hex
  3. 点击FileMerge Data File,选择app.hex(工具会提示地址范围,确认无重叠);
  4. 点击FileSave Data File As,保存为merged.hex(格式选Intel Hex)。

场景 2:批量 / 自动化 —— 命令行工具(srec_cat)

适合需要批量处理多个 HEX 文件、集成到脚本 / CI 流程的场景,跨平台(Windows/Linux/macOS)。

前置准备
  • Windows:下载 srecord 工具包(https://srecord.sourceforge.net/),解压后将srec_cat.exe路径添加到系统环境变量;
  • Linux/macOS:终端执行apt install srecord(Ubuntu)或brew install srecord(macOS)安装。
核心命令(可直接复制使用)
# 基础合并:合并boot.hex和app.hex,输出merged.hex srec_cat boot.hex -Intel app.hex -Intel -o merged.hex -Intel # 进阶合并:检测地址重叠(有冲突则报错)+ 保留注释 srec_cat boot.hex -Intel app.hex -Intel -verify -o merged.hex -Intel # 特殊场景:若APP需要地址偏移(如APP实际地址需+0x1000) srec_cat boot.hex -Intel app.hex -Intel -offset 0x1000 -verify -o merged.hex -Intel
命令参数解释
  • -Intel:指定输入 / 输出文件格式为 Intel HEX;
  • -o:指定输出文件路径;
  • -verify:检测地址重叠,重叠时终止并报错;
  • -offset:对指定文件的地址进行偏移(解决 APP 地址错位问题);
  • 工具自动处理:删除多余结束行、保留扩展地址行、添加最终结束行。

场景 3:定制化 ——Python 脚本(可自定义逻辑)

适合需要自定义合并规则(如过滤特定地址行、添加校验逻辑)的场景,新手也能快速上手。

完整可运行脚本
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Boot+APP HEX文件合并脚本(增强版): 1. 自动过滤多余结束行 2. 简易检测地址重叠(基于扩展地址+行地址) 3. 生成合并文件并输出日志 """ import os def parse_hex_line(hex_line): """解析单条HEX行,返回(绝对地址起始, 数据长度, 记录类型)""" if not hex_line.startswith(':') or len(hex_line) < 11: return (None, None, None) # 提取字段(16进制转10进制) data_len = int(hex_line[1:3], 16) # 数据长度 addr_16 = int(hex_line[3:7], 16) # 16位行地址 rec_type = int(hex_line[7:9], 16) # 记录类型 return (addr_16, data_len, rec_type) def read_hex(file_path): """读取HEX文件,返回:有效行列表、地址范围(min_addr, max_addr)、扩展地址""" valid_lines = [] ext_addr = 0 # 扩展线性地址(04类型行,高16位) min_addr = float('inf') max_addr = -float('inf') if not os.path.exists(file_path): print(f"❌ 错误:文件 {file_path} 不存在") return None, (None, None) with open(file_path, 'r', encoding='utf-8') as f: lines = [line.strip() for line in f.readlines() if line.strip()] for line in lines: addr_16, data_len, rec_type = parse_hex_line(line) # 过滤结束行(01类型) if rec_type == 1: continue # 处理扩展地址行(04类型) if rec_type == 4: ext_addr = int(line[9:13], 16) << 16 # 高16位地址 valid_lines.append(line) continue # 处理数据行(00类型) if rec_type == 0: valid_lines.append(line) # 计算绝对地址 abs_start = ext_addr + addr_16 abs_end = abs_start + data_len - 1 # 更新地址范围 min_addr = min(min_addr, abs_start) max_addr = max(max_addr, abs_end) # 若无数据行,返回空 if min_addr == float('inf'): print(f"⚠️ 警告:文件 {file_path} 无有效数据行") return valid_lines, (None, None) return valid_lines, (min_addr, max_addr) def merge_hex(boot_path, app_path, output_path): """合并HEX文件,检测地址重叠""" # 读取Boot和APP boot_lines, boot_addr = read_hex(boot_path) app_lines, app_addr = read_hex(app_path) if not boot_lines or not app_lines: print("❌ 错误:Boot/APP文件读取失败") return # 检测地址重叠 boot_min, boot_max = boot_addr app_min, app_max = app_addr if boot_max >= app_min: print(f"⚠️ 警告:地址重叠!Boot结束地址 {hex(boot_max)} ≥ APP起始地址 {hex(app_min)}") # 可选择终止或继续,这里继续合并(需用户确认地址正确性) confirm = input("是否继续合并?(y/n):") if confirm.lower() != 'y': print("✅ 合并终止") return # 合并并添加最终结束行 merged_lines = boot_lines + app_lines + [":00000001FF"] # 写入文件 with open(output_path, 'w', encoding='utf-8') as f: f.write('\n'.join(merged_lines)) print(f"✅ 合并成功!文件保存至:{output_path}") print(f"📌 Boot地址范围:{hex(boot_min)} ~ {hex(boot_max)}") print(f"📌 APP地址范围:{hex(app_min)} ~ {hex(app_max)}") # 主程序(修改此处路径) if __name__ == "__main__": BOOT_FILE = "boot.hex" # Boot文件路径 APP_FILE = "app.hex" # APP文件路径 OUTPUT_FILE = "merged.hex" # 输出文件路径 merge_hex(BOOT_FILE, APP_FILE, OUTPUT_FILE)
使用步骤
  1. 将脚本保存为merge_hex.py
  2. 修改脚本末尾的BOOT_FILEAPP_FILE为实际文件路径;
  3. 安装 Python 3.x(无需额外依赖);
  4. 终端运行:
    python merge_hex.py
脚本优势
  • 自动检测地址重叠并给出警告;
  • 解析扩展地址行,计算绝对地址范围;
  • 输出清晰的日志,便于排查问题。

场景 4:开发阶段集成 ——IDE 直接生成(最便捷)

若 Boot 和 APP 由你自己开发,可在编译阶段直接配置 IDE,生成合并后的 HEX 文件,无需后期处理。

方法 1:Keil MDK(ARM 芯片)
  1. 配置地址:在 Boot 和 APP 工程的scatter文件中,分别指定无重叠的地址段(如 Boot:0x08000000~0x08003FFF,APP:0x08004000~0x0801FFFF);
  2. 编译工程:分别编译 Boot 和 APP,生成各自的 HEX 文件;
  3. 添加批处理命令:
    • 打开 APP 工程,点击Magic WandUserAfter Build/Rebuild
    • 勾选Run #1,输入命令:
      fromelf --merge -i ../Boot/Objects/boot.hex -i ./Objects/app.hex -o ./merged.hex
    • 点击OK,后续编译 APP 时会自动合并 Boot 和 APP 的 HEX 文件。
方法 2:STM32CubeIDE(Eclipse)
  1. 配置地址:在linker script.ld文件)中,分别指定 Boot 和 APP 的地址段;
  2. 启用 HEX 输出:右键工程 →PropertiesC/C++ BuildSettingsMCU Post build outputs,勾选Convert to Intel Hex format
  3. 添加自定义脚本:在Post-build steps中输入:

    bash

    运行

    srec_cat "${BuildArtifactFileBaseName}.hex" -Intel "../Boot/${BootProjectName}.hex" -Intel -o "merged.hex" -Intel
  4. 编译工程,自动生成合并后的merged.hex

三、合并后验证(关键步骤)

无论用哪种方法,合并后必须验证文件有效性:

  1. 格式验证:使用在线 Intel HEX 校验工具(如 “Intel HEX Validator”),检查每行校验和、格式是否合法;
  2. 地址验证:用 ST-Link Utility/J-Flash 打开merged.hex,查看 “Memory View”,确认地址范围包含 Boot+APP,且无重叠;
  3. 烧写验证:将合并后的文件烧写到芯片,上电测试 Boot 能否正常跳转至 APP,功能是否正常。

四、常见问题及解决方法

问题现象原因解决方法
合并后烧写提示校验错误结束行重复 / 缺失确保仅最后一行有:00000001FF,删除多余结束行
地址重叠报错Boot 和 APP 地址范围冲突修改 Boot/APP 的地址分配(如调整 scatter/ld 文件)
烧写后 APP 无法运行扩展地址行丢失合并时保留所有04类型的扩展地址行
脚本运行提示编码错误HEX 文件有隐藏字符用 Notepad++ 打开 HEX 文件,转为 “UTF-8 无 BOM” 格式

总结

  1. 核心规则:合并的关键是保证地址无重叠、仅保留一个结束行,所有有效行(数据行、扩展地址行)全部保留;
  2. 方法选择:新手用 HexMerge/ST-Link Utility(可视化),批量处理用 srec_cat(命令行),定制化用 Python 脚本,开发阶段用 IDE 集成;
  3. 必做步骤:合并后必须验证格式、地址范围和实际烧写效果,避免地址重叠或格式错误导致程序异常。

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

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

相关文章

Kubernetes Dashboard部署与可视化管理实战

文章目录 1. 实战概述 2. 实战步骤 2.1 Kubernetes Dashboard配置文件 2.1.1 Kubernetes角色控制 2.1.2 kubernetes-dashboard.yaml 2.2 安装Kubernetes Dashboard 2.2.1 创建命名空间 2.2.2 应用配置文件部署Dashboard 2.2.3 验证部署状态 2.2.4 创建ServiceAccount 2.2.5 绑定…

还在为AI率头疼?学生党福音:降AI工具免费降重攻略,轻松通过学校AI检测

最近不少同学私信我&#xff0c;说论文的AI率高得离谱。 用AI写的文献综述&#xff0c;看起来逻辑完美&#xff0c;排版工整&#xff0c;可检测一跑——AI率80%。 其实问题不在AI&#xff0c;而在“太像AI”。 AI写的内容没有错&#xff0c;只是写得太“顺”&#xff0c;太“像…

LU,大小鼠脑损伤打击器 脑损伤打击器 自由落体打击器

仪器借助尖端带不锈钢的打击器快速打击暴露的颅脑或脊髓&#xff0c;随即上抬撞头避免二次撞击。微信斯达&#xff0c;露&#xff0c;适用于小鼠、大鼠、兔、犬、猴等动物&#xff0c; 1、定位仪行程&#xff1a;X轴80mm,Z轴&#xff1a;80mm,Y轴80mm。 2、电动Z轴行程&#x…

论文中的关键技术---机器学习与深度学习

AI-Python自然科学领域机器学习与深度学习技术 【高维数据预处理—可解释ML/DL—时空建模—不确定性量化-全程AIPython】 随着观测技术、数值模拟与计算基础设施的迅猛发展&#xff0c;地球系统科学、生态学、环境科学等自然科学领域正迈入“大数据智能模型”驱动的新阶段。传…

警告:论文的AI味太重了!不想延毕就看这篇:降AI工具辅助去AI化实战指南,从50%降到5%

最近不少同学私信我&#xff0c;说论文的AI率高得离谱。 用AI写的文献综述&#xff0c;看起来逻辑完美&#xff0c;排版工整&#xff0c;可检测一跑——AI率80%。 其实问题不在AI&#xff0c;而在“太像AI”。 AI写的内容没有错&#xff0c;只是写得太“顺”&#xff0c;太“像…

【毕业设计】基于springboot的走失儿童认领与登记系统(源码+文档+远程调试,全bao定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

论文救星:6款免费降AI率工具深度体验,大幅降低论文AI痕迹,快速降重80%以上

最近身边不少同学都在发愁——论文AI率太高。明明自己认真改过好几遍&#xff0c;系统一查还是提示AIGC爆表&#xff0c;导师看一眼就摇头。其实现在用AI辅助写论文确实方便&#xff0c;但怎么降低ai率、让内容更自然&#xff0c;才是真正过关的关键。 我这段时间亲测了十几款…

AspNetCore开发笔记:WebApi项目集成企业微信和公众号

前言 很久没写文章了,现在有了AI,其实已经不怎么需要写文章,反正不懂就问AI嘛。 不过AI总是有盲区的,就比如国内的微信开发。 微信的文档是公认的烂,而且经常悄咪咪改接口又不更新文档,所以AI对微信开发的API其实…

拯救毕业论文!5款降AI神器深度测评,有效降低AIGC率超80%,通过查重更轻松

上周答辩前夕&#xff0c;我室友差点崩溃——论文被导师退回来了&#xff0c;原因是"疑似大量使用AI生成内容"。她哭着说&#xff1a;"我明明自己改过好几遍啊&#xff0c;为什么还是被查出来了&#xff1f;" 这场景我太熟悉了。去年我自己也经历过&#…

毕业季求生指南:如何利用降AI工具对抗论文AI检测,实现低AI率【建议收藏】

最近不少同学私信我&#xff0c;说论文的AI率高得离谱。 用AI写的文献综述&#xff0c;看起来逻辑完美&#xff0c;排版工整&#xff0c;可检测一跑——AI率80%。 其实问题不在AI&#xff0c;而在“太像AI”。 AI写的内容没有错&#xff0c;只是写得太“顺”&#xff0c;太“像…

论文降AI率太高怎么办?收藏这5个实测好用的工具,帮你将AIGC率轻松降低80%

上周答辩前夕&#xff0c;我室友差点崩溃——论文被导师退回来了&#xff0c;原因是"疑似大量使用AI生成内容"。她哭着说&#xff1a;"我明明自己改过好几遍啊&#xff0c;为什么还是被查出来了&#xff1f;" 这场景我太熟悉了。去年我自己也经历过&#…

论文AI率飙升怎么办?实测6款免费工具,快速降低80%以上AI痕迹【建议收藏】

最近身边不少同学都在发愁——论文AI率太高。明明自己认真改过好几遍&#xff0c;系统一查还是提示AIGC爆表&#xff0c;导师看一眼就摇头。其实现在用AI辅助写论文确实方便&#xff0c;但怎么降低ai率、让内容更自然&#xff0c;才是真正过关的关键。 我这段时间亲测了十几款…

大数据领域的餐饮行业数据分析

大数据驱动的餐饮革命&#xff1a;从数据到决策的智能转型之路 [外链图片转存中…(img-R9Ni6lh1-1769008296023)] 关键词 餐饮大数据分析、顾客行为洞察、供应链优化、预测分析模型、餐厅收益管理、数据驱动决策、餐饮业数字化转型 摘要 在当今竞争激烈的餐饮市场中&#xff0c…

AI率80%也能救!学生党亲测6款免费降AI工具,告别论文高AI率焦虑

最近身边不少同学都在发愁——论文AI率太高。明明自己认真改过好几遍&#xff0c;系统一查还是提示AIGC爆表&#xff0c;导师看一眼就摇头。其实现在用AI辅助写论文确实方便&#xff0c;但怎么降低ai率、让内容更自然&#xff0c;才是真正过关的关键。 我这段时间亲测了十几款…

2026最新的小程序公司TOP5榜单!帮你避开选择困难

随着数字化转型深入,小程序已成为企业链接用户、拓展营收的核心载体。据艾瑞咨询《2026年第一季度中国小程序开发服务市场研究报告》显示,2026年国内小程序开发市场规模已达476亿元,同比增长37%,市场需求持续爆发的…

SOOP中文版 2.8.0 | 超人气韩国直播平台,看韩国小姐姐,国内网可用

SOOP&#xff08;原afreecatv&#xff09;是一款国际知名的直播平台&#xff0c;集娱乐、互动和社交于一体&#xff0c;提供丰富多样的直播内容&#xff0c;包括游戏直播、娱乐节目、音乐表演等&#xff0c;覆盖游戏、娱乐、体育、生活分享等多个领域。平台上汇聚了大量游戏主播…

2026年TikTok官方广告代理商选型指南

随着2026年TikTok广告生态引入GMV MAX自动化投放机制以及欧盟DSA法案的严格实施,企业在投放中面临着“算法黑盒”导致ROI波动大以及合规封户率激增的双重挑战。对于出海企业而言,选择一家具备合规风控技术与算法归因…

音理音理! 26011603| 聚合多平台音视频流 高颜值流畅 支持下载

音理音理! 是一款专注于聚合多平台音视频流的开源播放器&#xff0c;具备跨平台音频播放功能&#xff0c;能在同一界面内快速切换网易云、B站等多平台歌曲来源。它还拥有统一搜索与元数据补全功能&#xff0c;能够聚合多平台搜索接口并自动补齐封面、歌词与曲目信息。通过自研的…

数据可视化:大数据领域的战略武器

数据可视化&#xff1a;大数据领域的战略武器——让洞察力成为决策优势 大数据时代&#xff0c;拥有数据只是第一步&#xff0c;而让数据“说话”&#xff0c;驱动决策与行动&#xff0c;才是制胜关键。数据可视化&#xff0c;正日益成为企业在大数据洪流中乘风破浪的战略武器。…

这让家长们困惑:控制视频时间,为什么还是近视?

当下儿童青少年近视率居高不下&#xff0c;已经成为社会广泛关注的公共卫生话题。相关调研数据显示&#xff0c;学龄期儿童的近视检出率随年级升高呈现明显上升趋势&#xff0c;这样的趋势背后&#xff0c;是多种因素共同作用的结果。视频时间过长确实会让眼睛处于持续疲劳状态…