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

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

3天内不再提示

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

恩智浦MCU加油站 来源:恩智浦MCU加油站 作者:恩智浦MCU加油站 2022-10-20 09:16 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

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

注:本文测试的MCUXpresso IDE版本是v11.6.0_8187。

一、各种IDE下生成镜像文件的方法

我们先来看看MCUXpress以外的其它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)。

63a85118-5014-11ed-a3b6-dac502259ad0.png

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

ielftool.exe --bin app.out app.binielftool.exe --ihex app.out app.hexielftool.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""

63bc9baa-5014-11ed-a3b6-dac502259ad0.png

1.2 Keil MDK下

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

63c51794-5014-11ed-a3b6-dac502259ad0.png

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

fromelf.exe --bin app.out --output app.binfromelf.exe --i32 app.out --output app.hexfromelf.exe --m32 app.out --output app.srec

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

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

63d909b6-5014-11ed-a3b6-dac502259ad0.png

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

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

63e335a8-5014-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"

63f1a688-5014-11ed-a3b6-dac502259ad0.png


审核编辑 :李倩


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

    关注

    147

    文章

    18618

    浏览量

    387341
  • IDE
    IDE
    +关注

    关注

    0

    文章

    363

    浏览量

    48745
  • 镜像
    +关注

    关注

    0

    文章

    178

    浏览量

    11549

原文标题:MCUXpresso IDE下生成镜像文件的方法及其与IAR,MDK差异

文章出处:【微信号:NXP_SMART_HARDWARE,微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    别再装系统了!Linux 镜像到底是什么?一篇讲到你怀疑人生

    多小、环境多复杂,如何快速安装、部署和维护 Linux 系统,都是开发者和运维人员必须掌握的核心技能。 这时,“Linux 镜像文件”就显得尤为重要。它就像一份完整的系统快照,让你可以在不同设备之间快速迁移、复制,甚至批量部署。理解镜像文件,是从零开
    的头像 发表于 12-03 16:12 428次阅读
    别再装系统了!Linux <b class='flag-5'>镜像</b>到底是什么?一篇讲到你怀疑人生

    恩智浦MCU教程 基于MCUXpresso和FRDM-MCXA346的RT-Thread Nano移植

    本篇还是以移植RT-Thread Nano到MCUXpresso IDE为主,移植的代码可以在nxpic.org.cn论坛搜索到。
    的头像 发表于 08-21 09:49 6241次阅读
    恩智浦MCU教程 基于<b class='flag-5'>MCUXpresso</b>和FRDM-MCXA346的RT-Thread Nano移植

    ElfBoard技术贴|如何在ELF 2开发板中适配 AX200NGW WiFi模块

    ,指导屏幕前的小伙伴完成这一适配过程。方法一:重新制作镜像文件方法是在SDK源码中,将内核编译生成的模块文件部署到
    的头像 发表于 06-24 09:09 1980次阅读
    ElfBoard技术贴|如何在ELF 2开发板中适配 AX200NGW WiFi模块

    Linux文件系统打包及镜像制作,触觉智能RK3562开发板演示

    本文介绍Linux开发板文件系统打包及镜像制作的方法,演示Linux文件系统打包及镜像制作,适用于想将配置好的系统环境打包成
    的头像 发表于 04-28 16:45 774次阅读
    Linux<b class='flag-5'>文件</b>系统打包及<b class='flag-5'>镜像</b>制作,触觉智能RK3562开发板演示

    全志T113-i一键升级攻略:轻松搞定镜像更新!

    前言:本篇将详细介绍如何对Talowe-EVM-T113-i开发板的系统镜像进行升级,以确保用户在需要时能够快速高效地完成升级目标。文章内容涵盖镜像文件的获取、升级工具的使用步骤、以及常见问题
    的头像 发表于 04-18 08:33 1450次阅读
    全志T113-i一键升级攻略:轻松搞定<b class='flag-5'>镜像</b>更新!

    rootfs镜像制作其实没那么难

    在嵌入式Linux开发中,文件系统的打包和镜像制作是关键步骤。本文介绍了Linux核心板文件系统的打包与镜像制作方法,适合嵌入式开发人员快速
    的头像 发表于 04-03 11:37 903次阅读
    rootfs<b class='flag-5'>镜像</b>制作其实没那么难

    MCUxpresso IDE中收到错误:检测到0个可用的SWD设备,怎么解决?

    的擦除整个设备选项,不小心擦除了整个芯片。在此之后,设备将无法进入 Flash magic 或 MCUxpresso IDE。看起来擦除整个芯片也擦除了引导加载程序。 我在 MCUxpresso
    发表于 03-21 07:22

    如何使用MCUXpresso IDE中内置的SWO Trace功能?

    如何使用MCUXpresso IDE中内置的SWO Trace功能?
    发表于 03-17 08:08

    基于Docker镜像逆向生成Dockerfile

    在本文中, 我们将通过理解Docker镜像如何存储数据, 以及如何使用工具查看镜像方方面面的信息来逆向工程一个Docker镜像; 以及如何使用Python的Docker API来构建一个类似Dedockify的工具来创建Dock
    的头像 发表于 03-10 09:45 1217次阅读
    基于Docker<b class='flag-5'>镜像</b>逆向<b class='flag-5'>生成</b>Dockerfile

    DLP LightCrafter 3010 EVM-G2 Firmware中的img镜像文件无法解压怎么解决?

    请教TI工程师,我在TI官网上下载了TI提供的固件DLP LightCrafter 3010 EVM-G2 Firmware,在解压镜像文件dpp343x_7.3.3.img出现了无法解压的问题,尝试重新下载了多次,依然无法解压,具体如下图所示:
    发表于 02-26 08:00

    Milk-V Duo 开发板免费体验 官方镜像烧录

    /getting-started 需要到官网查看教程可跳转到此链接。 首先 进入到官网 选择启动duo,便能得到要求: 第一、需要自己准备的器材 第二、需要下载的镜像文件和烧录软件。 那么,需要准备的当然是一张tf卡和一天tepyc的数据线,还需要一个读卡器(烧录镜像文件
    的头像 发表于 01-20 17:50 829次阅读
    Milk-V Duo 开发板免费体验 官方<b class='flag-5'>镜像</b>烧录

    迅为RK3568开发板EMMC镜像导出打包update.img

    在上一个小节中已经将 EMMC 中的全部分区镜像进行了导出,而为了方便期间和统一烧写,我们一般都需要将这些镜像文件打包成一个整体的镜像 update.img,在本小节中将对镜像打包的过
    发表于 12-25 14:57

    飞凌嵌入式ElfBoard ELF 1板卡-内核移植之编译后生成文件说明

    二进制文件,它是由设备树编译工具DTC (Device tree compiler)编译dts文件生成的。关于设备树的知识,我们在之后章节有详细介绍。 zImage是经过压缩之后的镜像文件
    发表于 12-19 09:11

    飞凌嵌入式ElfBoard ELF 1板卡-内核移植之编译后生成文件说明

    文件,它是由设备树编译工具DTC (Device tree compiler)编译dts文件生成的。关于设备树的知识,我们在之后章节有详细介绍。zImage是经过压缩之后的镜像文件
    发表于 12-18 08:52

    如何选择 MCU IDE:概述比较 NXP MCUXpresso、VS Code、IAR、Keil

    的固件,后者则兼容多种平台,但通常需要付费。例如,专属型IDE包括NXP的MCUXpresso和ST的STM32CubeIDE;通用型IDE则有VSCode、Keil
    的头像 发表于 12-13 18:22 2628次阅读
    如何选择 MCU <b class='flag-5'>IDE</b>:概述比较 NXP <b class='flag-5'>MCUXpresso</b>、VS Code、IAR、Keil