大家好,我是痞子衡,是正經搞技術的痞子,今天痞子衡給大家分享的是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-EVK\boards\evkmimxrt1170\demo_apps\hello_world\cm7 目錄下的工程檔案為例,
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 Systems\Embedded Workbench 9.10.2\arm\bin\ielftool.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$\bin\ielftool.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 HEX file,則可以生成 hex 格式鏡像檔案,不過要想生成其他 bin/srec 格式鏡像檔案需要想其他辦法,

MDK 下其實也有類似 IAR 下的鏡像檔案轉換小工具,即 \Keil_v5\ARM\ARMCC\bin\fromelf.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 做轉換的命令就可以得到指定格式的鏡像檔案了,
$K\ARM\ARMCC\bin\fromelf.exe --bin --output=debug\@L.bin !L

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

我們知道 MCUXpresso IDE 是基于標準 ARMGCC 的二次封裝,所以其生成鏡像檔案的能力其實是靠得 \MCUXpressoIDE_11.6.0_8187\ide\tools\bin\arm-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"

至此,MCUXpresso IDE下生成鏡像檔案的方法及其與IAR,MDK差異痞子衡便介紹完畢了,掌聲在哪里~~~
歡迎訂閱
文章會同時發布到我的 博客園主頁、CSDN主頁、知乎主頁、微信公眾號 平臺上,
微信搜索"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機上第一時間看了哦,

最后歡迎關注痞子衡個人微信公眾號【痞子衡嵌入式】,一個專注嵌入式技術的公眾號,跟著痞子衡一起玩轉嵌入式,
衡杰(痞子衡),目前就職于恩智浦MCU系統部門,擔任嵌入式系統應用工程師,
專欄內所有文章的轉載請注明出處:http://www.cnblogs.com/henjay724/
與痞子衡進一步交流或咨詢業務合作請發郵件至 [email protected]
可以關注痞子衡的Github主頁 https://github.com/JayHeng,有很多好玩的嵌入式專案,
關于專欄文章有任何疑問請直接在博客下面留言,痞子衡會及時回復免費(劃重點)答疑,
痞子衡郵箱已被私信擠爆,技術問題不推薦私信,堅持私信請先掃碼付款(5元起步)再發,
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/509459.html
標籤:其他
下一篇:用戶相關命令
