1. 程式人生 > >keil4mdk編譯生成.bin檔案

keil4mdk編譯生成.bin檔案

我的實測生成.bin為"D:\english router soft\keil4\ARM\ARMCC\bin\fromelf.exe" --bin --output ../upload.bin ../obj/Target.axf

前面為keil的安裝路徑,後面為生成的.bin和.axf的檔名字。

FromELF: creating hex file...
User command #1: D:\Keil\ARM\BIN40\fromelf.exe  --bin  ..\Obj\Bootloader.axf   -o  ..\Obj\Bootloader.bin
--- Error: User Command terminated, Exit-Code = 1

原因及解決辦法:

在OPTIONS FOR TARGET ->User分頁有個RUN#1,功能是編譯完成後執行該指令操作,應該是該指令有問題,一般情況下該錯誤是RUN#1設定的執行的程式位置不對;比如你的keil是裝在c盤的,自然fromelf.exe檔案也在C盤,你要使用fromelf將編譯後生成的afx檔案再轉成bin檔案(理論hex檔案再轉成bin檔案也可以,但實測會報錯,錯誤資訊為:

C:\Keil\ARM\BIN40\fromelf.exe  --bin  ..\Obj\Bootloader.hex   -o  ..\Obj\Bootloader.bin
FromELF: creating hex file...

User command #1: C:\Keil\ARM\BIN40\fromelf.exe  --bin  ..\Obj\Bootloader.hex   -o  ..\Obj\Bootloader.bin

"..\Obj\Bootloader.hex": Error: Q0454E: In ELF file: File is not an ELF file (wrong magic number)
Finished: 0 information, 0 warning and 1 error messages.

"..\Obj\Bootloader.axf" - 0 Error(s), 0 Warning(s).

),那麼你的執行程式的位置改為“C:\Keil\ARM\BIN40\fromelf.exe”,再如果你的keil裝在D盤,那麼執行程式的路徑為D:\Keil\ARM\BIN40\fromelf.exe ;否則會提示該錯誤,如果不需要把生成的hex檔案轉bin檔案,將Run User Programs AfterBuild/Rebuild的Run #1前的勾去掉或選擇fromelf.exe就可以了.