arm-none-eabi+elf文件生成bin文件
当 keil
工程编译链为外接的 arm-none-eabi-gcc
时, keil
无法生成带偏移地址的 hex 文件, 并且你希望他们自动化. 因此, 可以利用交叉编译链工具 arm-none-eabi-objcopy
, 将 elf
文件生成可用的 bin
和 hex
文件
bat脚本
@REM keil工程生成hex文件
@REM 当工程编译链为外接的arm-none-eabi-时, keil无法生成带偏移地址的hex文件
@REM arm-none-eabi-objcopy.exe 注意工程对应版本
@echo off
set NAME=xxxxxxx
@REM 使用elf文件转bin文件
@REM 工程中没有.elf文件用.axf代替
cd /d %~dp0
..\..\tools\toolchain\bin\arm-none-eabi-objcopy.exe -O binary ..\Objects\project.elf ..\Objects\project.bin
@REM 创建目标所在文件夹 Firmware
@REM cd /d %~dp0
if exist ..\..\Firmware (
@REM 文件夹已存在
echo Folder already exists
) else (
md ..\..\Firmware
)
@REM cd /d %~dp0
copy ..\Objects\project.bin ..\..\Firmware\%NAME%.bin >nul
@REM cd /d %~dp0
.\srecord-1.63-win32\srec_cat.exe ..\Objects\project.bin -Binary -offset 0x08000000 -o ..\..\Firmware\%NAME%.hex -Intel
补充内容
-
工程中没有
.elf
文件用.axf
代替 -
cd /d %~dp0
表示跳转到该文件所在目录 -
>nul
省略成功信息 -
.\xxx.bat $K !L @L $L
-
$K
KEIL安装目录 -
!L
.axf文件的位置 -
@L
.axf文件的文件名 -
$L
.axf文件的目录
-
-
ARMCC的elf->hex
-
set exe_location=%1ARM\ARMCC\bin\fromelf.exe
%exe_location% --i32combined --output="..\..\Firmware\project.hex" "..\Objects\project.elf"
-
-
arm-none-eabi-objcopy.exe 注意工程使用的 arm-gcc 版本