加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • 一、其它IDE下生成镜像文件的方法
    • 二、MCUXpresso IDE下生成镜像文件的方法
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

三种常用IDE下花式生成镜像文件的方法

2022/10/23
2361
阅读需 9 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是MCUXpresso IDE下生成镜像文件的方法及其与IAR,MDK差异

痞子衡很久以前写过一篇文章 《ARM Cortex-M镜像文件(.bin/.hex/.s19)》,详细介绍了三种流行的镜像文件格式,这些镜像文件不同于可执行文件(.elf),它们主要保存的是芯片能够执行的二进制机器码数据,以及辅助的地址信息和校验和,其他像 .elf 文件里有的工程信息、代码信息、调试信息全部被去除了,说白了镜像文件主要是为最终量产过程而生的。

一般情况下,在 IDE 开发环境里编译链接生成的是可执行文件,然后可以在工程选项做一些设置能进一步生成镜像文件。不同 IDE 下生成镜像文件的方法不同,今天痞子衡主要介绍 MCUXpresso IDE 下生成镜像文件的方法以及与 IAR/MDK 的对比。

Note: 痞子衡测试的MCUXpresso IDE版本是v11.6.0_8187。

一、其它IDE下生成镜像文件的方法

我们先来看看其它 IDE 下是如何生成各种格式镜像文件的。我们以 SDK_2.11.1_MIMXRT1170-EVKboardsevkmimxrt1170demo_appshello_worldcm7 目录下的工程文件为例。

 
1.1 IAR EWARM下

编译 hello_world_demo_cm7.eww 工程(随便选择 debug build),会在工程目录 debug 文件夹下生成可执行文件 hello_world_demo_cm7.out。如果在工程选项 Output Converter 里开启 Generate additional output,则可以指定生成想要的镜像文件(bin/hex/srec)。

 

 

如果你仔细看 Build 窗口的 log 信息,会发现 IDE 其实是在可执行文件生成之后,再借助 IAR SystemsEmbedded Workbench 9.10.2armbinielftool.exe 小工具对可执行文件做的二次转换生成的镜像文件。

ielftool.exe --bin  app.out app.bin
ielftool.exe --ihex app.out app.hex
ielftool.exe --srec app.out app.s19

所以其实在工程选项 Build Actions 里的 Post-build command line 添加如下调用 ielftool.exe 做转换的命令(CMD /C 的意思是以 bat 文件内容方式打开后面的命令;命令需要用双引号括起来;路径也需要单独用双引号括起来,防止路径中存在空格,导致命令出错),也能达到一样的效果。


CMD /C ""$TOOLKIT_DIR$binielftool.exe" --bin "$PROJ_DIR$/debug/hello_world_demo_cm7.out" "$PROJ_DIR$/debug/hello_world_demo_cm7.bin""

 

 

1.2 Keil MDK下

编译 hello_world_demo_cm7.uvprojx 工程(也选择 debug build),会在工程目录 debug 文件夹下生成可执行文件 hello_world_demo_cm7.out。如果在工程选项 Output 里开启 Create HEX file,则可以生成 hex 格式镜像文件,不过要想生成其他 bin/srec 格式镜像文件需要想其他办法。

 

MDK 下其实也有类似 IAR 下的镜像文件转换小工具,即 Keil_v5ARMARMCCbinfromelf.exe,这个小工具可以帮助生成其他格式的镜像文件。

fromelf.exe --bin app.out --output app.bin
fromelf.exe --i32 app.out --output app.hex
fromelf.exe --m32 app.out --output app.srec

在工程选项 User 里的 After build 添加如下调用 formelf.exe 做转换的命令就可以得到指定格式的镜像文件了。

$KARMARMCCbinfromelf.exe --bin --output=debug@L.bin !L

 

 

二、MCUXpresso IDE下生成镜像文件的方法

MCUXpresso IDE 下生成镜像文件的方法与 IAR/MDK 稍有不同,其并不是在工程选项里去开启,而是工程目录里会有 Binaies 虚拟文件夹(如果看不到该文件夹,可以按 F5 刷新一下),编译完成后在 Binaies 文件夹下会看到可执行文件(evkmimxrt1170_hello_world_demo_cm7.axf),右击可执行文件在 Binary Utilities 里可以看到不同格式镜像文件生成选项。

 

我们知道 MCUXpresso IDE 是基于标准 ARMGCC 的二次封装,所以其生成镜像文件的能力其实是靠得 MCUXpressoIDE_11.6.0_8187idetoolsbinarm-none-eabi-objcopy.exe 小工具。

arm-none-eabi-objcopy.exe -O binary app.axf app.bin
arm-none-eabi-objcopy.exe -O ihex   app.axf app.hex
arm-none-eabi-objcopy.exe -O srec   app.axf app.srec

因此在 MCUXpresso IDE 下我们也可以像 IAR/MDK 那样添加 Post-build steps 命令来完成镜像文件的生成。

arm-none-eabi-objcopy -O binary "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin"

 

至此,MCUXpresso IDE下生成镜像文件的方法及其与IAR,MDK差异痞子衡便介绍完毕了,掌声在哪里~~~

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
AT24C256C-SSHL-B 1 Microchip Technology Inc IC EEPROM 256KBIT 1MHZ 8SOIC
$0.74 查看
ABM8-16.000MHZ-B2-T 1 Abracon Corporation CRYSTAL 16.0000MHZ 18PF SMD

ECAD模型

下载ECAD模型
$0.92 查看
KSZ8041FTLI-TR 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, PQFP48

ECAD模型

下载ECAD模型
$2.95 查看

相关推荐

电子产业图谱

硕士毕业于苏州大学电子信息学院,目前就职于恩智浦(NXP)半导体MCU系统部门,担任嵌入式系统应用工程师。痞子衡会定期分享嵌入式相关文章