一般情况下,在 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)。
如果你仔细看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""
1.2 Keil MDK下
编译hello_world_demo_cm7.uvprojx工程(也选择debug build),会在工程目录debug文件夹下生成可执行文件hello_world_demo_cm7.out。如果在工程选项Output里开启Create HEXfile,则可以生成hex格式镜像文件,不过要想生成其他bin/srec格式镜像文件需要想其他办法。
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
二、MCUXpresso下生成镜像文件的方法
MCUXpresso IDE 下生成镜像文件的方法与IAR/MDK稍有不同,其并不是在工程选项里去开启,而是工程目录里会有Binaies虚拟文件夹(如果看不到该文件夹,可以按 F5 刷新一下),编译完成后在Binaies文件夹下会看到可执行文件(evkmimxrt1170_hello_world_demo_cm7.axf),右击可执行文件在Binary Utilities里可以看到不同格式镜像文件生成选项。
我们知道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"
审核编辑 :李倩
全部0条评论
快来发表一下你的评论吧 !