12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- 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%
|