0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

痞子衡嵌入式 来源:痞子衡嵌入式 作者:痞子衡嵌入式 2022-10-24 14:08 次阅读

大家好,我是痞子衡,是正经搞威廉希尔官方网站 的痞子。今天痞子衡给大家分享的是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-EVKoardsevkmimxrt1170demo_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)。

a708817a-5123-11ed-a3b6-dac502259ad0.png

如果你仔细看 Build 窗口的 log 信息,会发现 IDE 其实是在可执行文件生成之后,再借助 IAR SystemsEmbedded Workbench 9.10.2arminielftool.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$inielftool.exe" --bin "$PROJ_DIR$/debug/hello_world_demo_cm7.out" "$PROJ_DIR$/debug/hello_world_demo_cm7.bin""
a72e4266-5123-11ed-a3b6-dac502259ad0.png

1.2 Keil MDK下

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

a74d5bd8-5123-11ed-a3b6-dac502259ad0.png

MDK 下其实也有类似 IAR 下的镜像文件转换小工具,即 Keil_v5ARMARMCCinfromelf.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 做转换的命令就可以得到指定格式的镜像文件了。

$KARMARMCCinfromelf.exe --bin --output=debug@L.bin !L
a75bd1ea-5123-11ed-a3b6-dac502259ad0.png

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

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

a780e69c-5123-11ed-a3b6-dac502259ad0.png

我们知道 MCUXpresso IDE 是基于标准 ARMGCC 的二次封装,所以其生成镜像文件的能力其实是靠得 MCUXpressoIDE_11.6.0_8187ide oolsinarm-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"
a79a8d86-5123-11ed-a3b6-dac502259ad0.png

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

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IDE
    IDE
    +关注

    关注

    0

    文章

    338

    浏览量

    46745
  • Cortex-M
    +关注

    关注

    2

    文章

    229

    浏览量

    29755
  • 镜像
    +关注

    关注

    0

    文章

    164

    浏览量

    10707
  • mcuxpresso
    +关注

    关注

    1

    文章

    40

    浏览量

    4174

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

文章出处:【微信号:pzh_mcu,微信公众号:痞子衡嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何制作ISO光盘镜像文件

    如何制作光盘镜像文件NERO软件不管是刻录还是做镜像文件,都是很好用的。下面介绍一如何制作:有的时候我们不喜欢Nero直接刻盘,呵呵,比方说刻录盘用完了,而要保存一张光盘的内容留待以后再刻,或是刻
    发表于 09-11 16:10

    Linux镜像文件

    RedHat9 镜像文件下载
    发表于 01-21 10:45

    如何制作光盘镜像文件

    如何制作光盘镜像文件 NERO软件不管是刻录还是做镜像文件,都是很好用的。下面介绍一如何制作:有的时候我们不喜欢Nero
    发表于 09-11 16:03 3.1w次阅读
    如何制作光盘<b class='flag-5'>镜像文件</b>

    centos5.5镜像文件

    centos5.5镜像文件下载文档后可以看到百度网盘链接及密码。
    发表于 03-11 14:26 15次下载

    ZYNQ-7000如何生成从Flash和SD卡启动的镜像文件

    ZYNQ-7000如何生成从Flash和SD卡启动的镜像文件 将PL与PS部分一起使用,并且通过JTAG下载到板子运行。对于ZYNQ,有多种启动方式,比如从JTAG启动、从QSPI(即Flash
    的头像 发表于 05-28 11:42 6424次阅读
    ZYNQ-7000如何<b class='flag-5'>生成</b>从Flash和SD卡启动的<b class='flag-5'>镜像文件</b>

    ZYNQ-7000如何生成从Flash和SD卡启动的镜像文件

    ZYNQ-7000如何生成从Flash和SD卡启动的镜像文件 将PL与PS部分一起使用,并且通过JTAG下载到板子运行。对于ZYNQ,有多种启动方式
    的头像 发表于 12-01 08:38 7616次阅读
    ZYNQ-7000如何<b class='flag-5'>生成</b>从Flash和SD卡启动的<b class='flag-5'>镜像文件</b>

    光盘镜像文件测试工具应用程序免费下载

    本文档的主要内容详细介绍的是光盘镜像文件测试工具应用程序免费下载。
    发表于 08-31 08:00 0次下载

    镜像文件下载到SD卡中的方法

    本文介绍如何将事先制作好的镜像文件下载到SD卡中,然后做一些基本配置,让树莓派(Raspberry pi 4B)能够连上wifi,并且通过wifi登录控制台。
    的头像 发表于 10-23 10:38 1.1w次阅读
    <b class='flag-5'>镜像文件</b>下载到SD卡中的<b class='flag-5'>方法</b>

    一文教大家如何制作镜像文件

    调试。但是这样只要一断电,程序就会丢失,掉电不保存。 本文详细介绍如何制作镜像文件。将镜像文件拷贝到 SD 卡,设置拨码开关,使系统从 SD 启动。那么每次断电重启后,系统都会从 SD 启动。这样将程序做固化,掉电重启后就不会丢失。 1.固化的流程 2. 固化准备 首先,
    的头像 发表于 08-09 16:52 9131次阅读
    一文教大家如何制作<b class='flag-5'>镜像文件</b>

    如何下载一个Rocky镜像文件

    创建虚拟机之后,便可安装Linux操作系统,其安装过程与Windows系统极为相似。如果你之前安装过Windows系统,那接下来的操作就不难了。在安装Rocky Linux之前,我们还需要做一件事情 —— 下载一个Rocky镜像文件
    的头像 发表于 10-14 09:13 2699次阅读

    MCUXpresso IDE生成镜像文件方法

    我们先来看看MCUXpress以外的其它IDE是如何生成各种格式镜像文件的。我们以 SDK_2.11.1_MIMXRT1170-EVKoardsevkmimxrt1170demo_
    的头像 发表于 10-20 09:16 1482次阅读

    Linux内核常用的几种镜像文件

    简述几种常用的内核镜像文件:vmlinux、Image、zImage、bzImage、uImage、bootpImage、XIPImage等等。
    发表于 06-23 11:49 1.2w次阅读
    Linux内核<b class='flag-5'>常用</b>的几种<b class='flag-5'>镜像文件</b>

    学威廉希尔官方网站 | 带您认识Microchip MPU之第六篇镜像文件下载及测试

    制作SD卡Linux镜像(如果VM购买并安装了扩展包,可直接在VM制作)•使用软件工具---Etcher将Buildroot生成镜像文件
    的头像 发表于 02-08 15:03 735次阅读
    学威廉希尔官方网站
 | 带您认识Microchip MPU之第六篇<b class='flag-5'>镜像文件</b>下载及测试

    MCUXpresso IDE生成镜像文件方法及其与IAR,MDK差异

    MCUXpresso IDE生成镜像文件方法及其与IAR,MDK差异
    的头像 发表于 09-28 17:05 855次阅读
    MCUXpresso <b class='flag-5'>IDE</b>下<b class='flag-5'>生成</b><b class='flag-5'>镜像文件</b>的<b class='flag-5'>方法</b>及其与IAR,MDK差异

    怎么下载centos镜像文件

    CentOS 6 或 CentOS 8。其次,你需要选择合适的镜像文件类型。CentOS 发行版提供了三种主要类型的镜
    的头像 发表于 11-23 10:48 1208次阅读