三种常用IDE下花式生成镜像文件的方法
大家好,我是痞子衡,一个正经搞技术的痞子。今天我要和大家分享的是在MCUXpresso IDE下生成镜像文件的方法,以及与IAR和MDK的差异。
痞子衡很久以前写过一篇文章,详细介绍了三种流行的镜像文件格式。这些镜像文件与可执行文件(.elf)不同,它们主要保存芯片能够执行的二进制机器码数据,以及辅助的地址信息和校验和。与可执行文件相比,镜像文件去除了工程信息、代码信息和调试信息,主要用于最终量产过程。
通常情况下,在IDE开发环境中,我们会编译链接生成可执行文件,然后可以通过一些设置来进一步生成镜像文件。不同的IDE有不同的方法来生成镜像文件。今天我主要介绍在MCUXpresso IDE下生成镜像文件的方法,并与IAR和MDK进行对比。
一、其他IDE下生成镜像文件的方法
让我们先看看其他IDE是如何生成各种格式的镜像文件的。以\SDK2.11.1MIMXRT1170-EVK\boards\evkmimxrt1170\demoapps\helloworld\cm7目录下的工程文件为例。
1.1 IAR EWARM下
编译helloworlddemocm7.eww工程(随便选择debug build),会在工程目录的debug文件夹下生成可执行文件helloworlddemocm7.out。如果在工程选项的Output Converter中开启Generate additional output,就可以指定生成所需的镜像文件(bin/hex/srec)。
如果仔细观察Build窗口的日志信息,会发现IDE实际上是在生成可执行文件之后,借助\IAR Systems\Embedded Workbench 9.10.2\arm\bin\ielftool.exe工具对可执行文件进行二次转换生成镜像文件。
因此,在工程选项的Build Actions中添加以下命令行调用ielftool.exe进行转换的命令(CMD /C表示以bat文件内容方式打开后面的命令;命令需要用双引号括起来;路径也需要单独用双引号括起来,以防路径中存在空格导致命令出错),也可以达到相同的效果。
ielftool.exe --bin app.out app.bin
ielftool.exe --ihex app.out app.hex
ielftool.exe --srec app.out app.s19
1.2 Keil MDK下
编译helloworlddemocm7.uvprojx工程(同样选择debug build),会在工程目录的debug文件夹下生成可执行文件helloworlddemocm7.out。如果在工程选项的Output中开启Create HEX file,就可以生成hex格式的镜像文件。如果想生成其他格式的镜像文件,则需要采用其他方法。
MDK下实际上也有类似IAR下的镜像文件转换工具,即\Keil_v5\ARM\ARMCC\bin\fromelf.exe。这个工具可以帮助生成其他格式的镜像文件。只需在工程选项的User中的After build中添加以下调用formelf.exe进行转换的命令,就可以得到指定格式的镜像文件。
二、MCUXpresso IDE下生成镜像文件的方法
MCUXpresso IDE下生成镜像文件的方法与IAR和MDK稍有不同。它并不是在工程选项中进行设置,而是在工程目录中会有一个名为"Binaries"的虚拟文件夹(如果看不到该文件夹,可以按F5刷新一下)。编译完成后,在"Binaries"文件夹下可以看到可执行文件(evkmimxrt1170helloworlddemocm7.axf)。右击可执行文件,在Binary Utilities中可以选择生成不同格式的镜像文件。
我们知道,MCUXpresso IDE是基于标准ARMGCC进行二次封装的,因此它生成镜像文件的能力实际上是依靠\MCUXpressoIDE11.6.08187\ide\tools\bin\arm-none-eabi-objcopy.exe工具。
因此,在MCUXpresso IDE下,我们也可以像IAR和MDK一样,在Post-build steps中添加命令来生成镜像文件。
至此,MCUXpresso IDE下生成镜像文件的方法及其与IAR和MDK的差异介绍完毕。希望大家有所收获!掌声在哪里~~~