layout: "post"
title: "MDK編譯生成.bin文件"
date: "2017-04-20 13:08"
使用 MDK 時(shí),我們實(shí)際燒錄的文件其實(shí)是 .axf 文件庸队,所以一般情況下我們不需要編譯出 .bin 或 .hex 文件卿叽。
生成 .hex 文件時(shí)浓恶,需要在工程打開狀態(tài) MDK 的 Options for Target 選項(xiàng)中固以,點(diǎn)擊 Output 選項(xiàng)掂僵,在中間的 Create HEX File 的空白矩形框上打上勾即可稿辙。 .hex 文件可以使用第三方燒寫工具燒錄到 MCU 中昆码,但是一些燒錄工具或者芯片只支持 .bin 文件的燒錄,這時(shí)候我們需要 MDK 能夠輸出 .bin 文件邻储,并且 .bin 文件遠(yuǎn)要比 .hex 來的通用些赋咽。
下面說下如何生成 .bin 文件:
- 打開 Options for Target 'xxx' 對(duì)話框,選擇 User 標(biāo)簽頁(yè)吨娜。
- 構(gòu)選 Run User Programs After Build/Rebuild 框中的 Run#1 多選框脓匿,在后邊的文本框中輸入
C:/Keil_v5/ARM/ARMCC/bin/fromelf.exe --bin -o ../OBJ/consumer.bin ../OBJ/consumer.axf
,這條命令類似于 gcc 宦赠,對(duì)于不同的版本 fromelf.exe 軟件位置不同陪毡,如果找不到可以嘗試手動(dòng)搜索,如果設(shè)置完編譯不成功則代表你的路徑有問題需要仔細(xì)檢查路徑位置袱瓮,目錄的當(dāng)前路徑為 uvproj 工程文件所在位置缤骨,我的輸出路徑為工程目錄上一級(jí)的下的 OBJ 文件夾。 - 重新編譯文件尺借,在 ./OBJ/ 文件夾下生成了 consumer.bin 文件绊起。
直接在 CMD.exe 下運(yùn)行 fromelf 工具則可以看到所有的選項(xiàng)和基本命令,這邊僅列出最常用的一些內(nèi)容:
- --bin:輸出二進(jìn)制文件
- --i32:Intel 32位Hex
- --m32:Motorola 32位Hex
- --output <file>:file為輸出文件名
- -o<file>:這個(gè)是armcc編譯器命令,也可用于這里,指定輸出文件的名字
轉(zhuǎn)換過程實(shí)際是:通過fromelf.exe工具進(jìn)行轉(zhuǎn)換燎斩,將 .axf 格式的文件轉(zhuǎn)換成 .bin 格式的文件虱歪。你也可以不通過 MDK ,而是直接在 CMD.exe 窗口下運(yùn)行 C:/Keil_v5/ARM/ARMCC/bin/fromelf.exe --bin -o ../OBJ/consumer.bin ../OBJ/consumer.axf
手動(dòng)將 .axf 文件 轉(zhuǎn)換成 .bin 文件栅表。