You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找MPLAB生成的boot.bin与program.bin偏移地址

ATSAMD20E15 MPLAB环境下boot.bin与program.bin偏移地址查找方法

纯二进制格式(.bin)本身不存储链接地址信息,两个镜像的烧录偏移都是项目编译链接阶段就确定的,不需要解析bin文件内容,直接通过以下三种方式就能查到准确值,ATSAMD20E15的Flash物理基址固定为0x00000000,以下提到的偏移均为相对于该基址的绝对偏移值:

  • 从链接脚本(.ld文件)查询(最准确)
    打开对应MPLAB项目的根目录,找到链接阶段使用的.ld后缀文件:

    • boot项目的ld文件中,找到MEMORY块下FLASH区域定义的ORIGIN字段值,就是boot.bin的烧录偏移,绝大多数bootloader的偏移都是0x00000000;同区域的LENGTH字段是boot占用的Flash大小,boot的结束地址为ORIGIN + LENGTH,这个地址就是program.bin的起始偏移边界。
    • program项目的ld文件中,同样找MEMORY块下FLASH区域的ORIGIN字段值,就是program.bin的烧录偏移,正常情况下这个值和前面算出来的boot结束地址是按Flash页(SAMD20E15页大小为64字节)对齐的,不会出现地址重叠。
  • 从编译输出的map文件查询(最直观)
    项目全量编译完成后,在MPLAB项目的输出目录(默认是dist/[配置名]/production/下)找到和项目同名的.map后缀文件,用任意文本编辑器打开:

    • boot项目的map文件中搜索Memory Configuration段落,该段落下flash行标注的起始地址就是boot.bin的偏移;再搜索_etext符号,该符号对应的地址就是boot代码段的结束地址,也就是program.bin的偏移起始边界。
    • program项目的map文件中,同样在Memory Configuration段落找flash行的起始地址,就是program.bin的烧录偏移。
  • 从MPLAB X IDE项目属性快速查询
    不想翻本地文件的话可以直接在IDE里看:
    右键点击对应项目,选择「属性」,在配置列表中找到链接器分类(如果你用的是XC32编译器,对应分类名是xc32-ld),查看内存配置相关的选项页,里面会直接展示当前配置下Flash区域的起始地址,也就是对应bin文件的烧录偏移。如果你在项目配置里开启了bootloader关联选项,还会直接显示program相对于boot的偏移量。

初学者注意:不要把RAM地址和Flash地址搞混,ATSAMD20E15的RAM基址是0x20000000,和Flash地址段完全独立,地址最高位不同可以直接区分;用烧录工具填偏移时注意单位是字节,不要误填为半字/字单位导致烧录地址错位。

内容的提问来源于stack exchange,提问作者SSR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 12:42:17