You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.0 KiB
71 lines
2.0 KiB
5 months ago
|
md build\keil\Execute
|
||
|
|
||
|
@echo off
|
||
|
:: enter .bat folder
|
||
|
cd %~dp0
|
||
|
:: 批处理所在路径
|
||
|
set bat_path=%0
|
||
|
:: MDK $J 这里传入的是KEIL 编译器头文件路径,利用这个路径找到编译器相关工具链地址
|
||
|
set tool_chain_inc=%1
|
||
|
:: MDK #L 这里传入的是KEIL生成的axf文件的完整路径
|
||
|
set axf_full_path=%2
|
||
|
:: 获取axf文件的名字,不含后缀
|
||
|
set axf_name=%~n2
|
||
|
|
||
|
if %tool_chain_inc:~-1,1% == \ (
|
||
|
:: 删除路径最后的\
|
||
|
set tool_chain_inc=%tool_chain_inc:~,-1%
|
||
|
)
|
||
|
|
||
|
:: call .bin generate function
|
||
|
call :binGenerate %tool_chain_inc% %axf_full_path%
|
||
|
if %errorlevel% == 1 (
|
||
|
echo Failed 1: fromelf generate .bin failed!
|
||
|
goto :EOF
|
||
|
)
|
||
|
|
||
|
:: call 文件复制
|
||
|
call :doFileCopy %axf_full_path%
|
||
|
|
||
|
:: 对hex文件进行Patch并生成patch后的.bin和.hex
|
||
|
call :doFilePatch %axf_name%
|
||
|
if %errorlevel% == 1 (
|
||
|
echo Failed 2: Patch failed!
|
||
|
goto :EOF
|
||
|
)
|
||
|
|
||
|
exit /b %errorlevel%
|
||
|
|
||
|
:: Function Definiations ------------------------------------------------
|
||
|
|
||
|
:: .bin generate function
|
||
|
:binGenerate
|
||
|
:: 通过头文件路径,获取工具链的根目录
|
||
|
set tool_chain_root=%~dp1
|
||
|
:: 获取axf的路径
|
||
|
set axf_path=%~dp2
|
||
|
:: 获取axf的名字
|
||
|
set axf_name=%~n2
|
||
|
:: echo %axf_path%
|
||
|
:: echo %axf_name%
|
||
|
:: echo %tool_chain_root%
|
||
|
:: 执行fromelf 生成bin文件
|
||
|
%tool_chain_root%bin\fromelf --bin %2 --output %axf_path%\%axf_name%.bin
|
||
|
exit /b %errorlevel%
|
||
|
|
||
|
:: 将axf/hex/bin文件复制到Execute文件夹下
|
||
|
:doFileCopy
|
||
|
:: 获取axf的名字
|
||
|
set axf_name=%~n1
|
||
|
copy /Y .\build\keil\Obj\%axf_name%.axf .\build\keil\Execute\%axf_name%.axf
|
||
|
copy /Y .\build\keil\Obj\%axf_name%.hex .\build\keil\Execute\%axf_name%.hex
|
||
|
copy /Y .\build\keil\Obj\%axf_name%.bin .\build\keil\Execute\%axf_name%.bin
|
||
|
:: 根据用户的配置,可能hex不生成,不管这个,直接返回成功
|
||
|
exit /b 0
|
||
|
|
||
|
:: 对文件进行Patch
|
||
|
:doFilePatch
|
||
|
set target_name=%1
|
||
|
Patcher.exe .\build\keil\Execute\%target_name%.hex
|
||
|
exit /b %errorlevel%
|