一般情況下,在 IDE 開發(fā)環(huán)境里編譯鏈接生成的是可執(zhí)行文件,然后可以在工程選項(xiàng)做一些設(shè)置能進(jìn)一步生成鏡像文件。不同 IDE 下生成鏡像文件的方法不同,今天主要介紹來(lái)MCUXpresso IDE下生成鏡像文件的方法以及與 IAR/MDK 的對(duì)比。
注:本文測(cè)試的MCUXpresso IDE版本是v11.6.0_8187。
一、各種IDE下生成鏡像文件的方法
我們先來(lái)看看MCUXpress以外的其它IDE下是如何生成各種格式鏡像文件的。我們以 SDK_2.11.1_MIMXRT1170-EVKoardsevkmimxrt1170demo_appshello_worldcm7 目錄下的工程文件為例。1.1 IAR EWARM下編譯hello_world_demo_cm7.eww工程(隨便選擇 debug build),會(huì)在工程目錄 debug文件夾下生成可執(zhí)行文件hello_world_demo_cm7.out。如果在工程選項(xiàng)Output Converter里開啟Generate additional output,則可以指定生成想要的鏡像文件(bin/hex/srec)。

如果你仔細(xì)看Build窗口的log信息,會(huì)發(fā)現(xiàn)IDE其實(shí)是在可執(zhí)行文件生成之后,再借助 IAR SystemsEmbedded Workbench 9.10.2arminielftool.exe 小工具對(duì)可執(zhí)行文件做的二次轉(zhuǎn)換生成的鏡像文件。
ielftool.exe --bin app.out app.binielftool.exe --ihex app.out app.hexielftool.exe --srec app.out app.s19所以其實(shí)在工程選項(xiàng)Build Actions里的Post-build command line添加如下調(diào)用 ielftool.exe做轉(zhuǎn)換的命令(CMD /C 的意思是以 bat 文件內(nèi)容方式打開后面的命令;命令需要用雙引號(hào)括起來(lái);路徑也需要單獨(dú)用雙引號(hào)括起來(lái),防止路徑中存在空格,導(dǎo)致命令出錯(cuò)),也能達(dá)到一樣的效果。
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),會(huì)在工程目錄debug文件夾下生成可執(zhí)行文件hello_world_demo_cm7.out。如果在工程選項(xiàng)Output里開啟Create HEXfile,則可以生成hex格式鏡像文件,不過(guò)要想生成其他bin/srec格式鏡像文件需要想其他辦法。

MDK下其實(shí)也有類似IAR下的鏡像文件轉(zhuǎn)換小工具,即 Keil_v5ARMARMCCinfromelf.exe,這個(gè)小工具可以幫助生成其他格式的鏡像文件。
fromelf.exe --bin app.out --output app.binfromelf.exe --i32 app.out --output app.hexfromelf.exe --m32 app.out --output app.srec在工程選項(xiàng)User里的After build添加如下調(diào)用formelf.exe做轉(zhuǎn)換的命令就可以得到指定格式的鏡像文件了。
$KARMARMCCinfromelf.exe --bin --output=debug@L.bin !L

二、MCUXpresso下生成鏡像文件的方法
MCUXpresso IDE 下生成鏡像文件的方法與IAR/MDK稍有不同,其并不是在工程選項(xiàng)里去開啟,而是工程目錄里會(huì)有Binaies虛擬文件夾(如果看不到該文件夾,可以按 F5 刷新一下),編譯完成后在Binaies文件夾下會(huì)看到可執(zhí)行文件(evkmimxrt1170_hello_world_demo_cm7.axf),右擊可執(zhí)行文件在Binary Utilities里可以看到不同格式鏡像文件生成選項(xiàng)。

我們知道MCUXpresso IDE是基于標(biāo)準(zhǔn)ARMGCC的二次封裝,所以其生成鏡像文件的能力其實(shí)是依靠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命令來(lái)完成鏡像文件的生成。
arm-none-eabi-objcopy -O binary "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin"

審核編輯 :李倩
-
mcu
+關(guān)注
關(guān)注
147文章
19160瀏覽量
404830 -
IDE
+關(guān)注
關(guān)注
0文章
368瀏覽量
49229 -
鏡像
+關(guān)注
關(guān)注
0文章
181瀏覽量
11710
原文標(biāo)題:MCUXpresso IDE下生成鏡像文件的方法及其與IAR,MDK差異
文章出處:【微信號(hào):NXP_SMART_HARDWARE,微信公眾號(hào):恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
2026深入拆解:Gemini 3.0 鏡像官網(wǎng)如何理解 FPGA 時(shí)序約束并自動(dòng)生成 SDC 文件
FRDM-MCXN947板使用MCUXpresso IDE.二進(jìn)制無(wú)法連接到核心
LIN堆棧配置文件如何生成?
MCUXpresso SDK創(chuàng)建自定義清單
RT1176 定制板 – 重置后 LED 閃爍應(yīng)用程序不運(yùn)行怎么解決?
Keil MDK生成LIB庫(kù)及使用LIB庫(kù)
別再裝系統(tǒng)了!Linux 鏡像到底是什么?一篇講到你懷疑人生
使用NucleiStudio生成tb仿真需要的.verilog文件
使用qemu-vexpress-a9 運(yùn)行用戶程序跑不了怎么解決?
【嘉楠堪智K230開發(fā)板試用體驗(yàn)】 使用非 docker 環(huán)境構(gòu)建系統(tǒng)鏡像
恩智浦MCU教程 基于MCUXpresso和FRDM-MCXA346的RT-Thread Nano移植
AICube生成部署文件失敗的原因?怎么解決?
使用K230 BurningTool 燒錄 EMMC鏡像報(bào)錯(cuò)怎么解決?
ElfBoard技術(shù)貼|如何在ELF 2開發(fā)板中適配 AX200NGW WiFi模塊
MCUXpresso IDE下生成鏡像文件的方法
評(píng)論