下面是几个相关网站:
bat网站:bat 批处理:FOR命令_bat for-优快云博客
windows bat 批处理常用命令_windows bat命令大全-优快云博客
objectcopy网站:objcopy (GNU Binary Utilities) (sourceware.org)
hexview参考文档:网上可以查找相关资料,hexview是有手册的,参照手册即可
@echo off#从本行开始关闭回显。一般批处理第一行都是这个.
setlocal#setlocal和endlocal命令执行结果是让中间的程序对于系统变量的改变只在程序内起作用,不会影响整个系统级别。
set "CURRENT_DIR=%CD%"# 的意思是将当前工作目录的路径存储在一个名为 CURRENT_DIR 的环境变量中。set 是用于定义或修改环境变量的命令、CURRENT_DIR 是你要创建或修改的变量名、%CD% 是一个系统变量,表示当前工作目录的完整路径。使用引号(")的方式可以避免在路径中出现空格时出现问题。
set "APP_INFO_EXE=%CURRENT_DIR%\Tools\app_info.exe"#这句话的意思是将环境变量赋值为%CURRENT_DIR%\Tools\路径下的app_info.exe程序
timeout /t 3 /nobreak > nul #timeout:这是一个命令,用于暂停脚本的执行一段时间。/t 3:此选项指定要等待的时间,单位为秒。在这里,3表示暂停3秒。/nobreak:这个选项表示在等待期间如果按下任意键,将不会中断等待。也就是说,用户无法通过按键提前结束等待程序,必须等待指定的时间到期。> nul:这是一个输出重定向的操作,表示将命令的输出内容重定向到 nul 设备(这是 Windows 中的一个“黑洞”,即任何写入到它的信息都会被丢弃)。这样做的目的是使得在等待期间不会显示任何消息或倒计时,更加清晰地控制输出。
if not exist "%TEMP_FOLDER%" (
mkdir "%TEMP_FOLDER%"
) else (
del /q "%TEMP_FOLDER%\*.*"
for /d %%p in ("%TEMP_FOLDER%\*.*") do rmdir /s /q "%%p"
)
#if not exist "%TEMP_FOLDER%":这个条件判断语句用于检查名为 TEMP_FOLDER 的文件夹是否存在。%TEMP_FOLDER% 是一个环境变量,代表某个文件夹的路径。如果该文件夹不存在,则执行括号中的第一个命令,也就是创建一个%TEMP_FOLDER%路径的文件夹到当前路径下。
#del /q "%TEMP_FOLDER%\*.*":该命令会删除 TEMP_FOLDER 文件夹内的所有文件。/q 是“静默”模式,表示删除文件时不显示提示信息。
#for /d %%p in ("%TEMP_FOLDER%\*.*") do rmdir /s /q "%%p":这个循环遍历 TEMP_FOLDER 文件夹内的所有子目录。在这里,%%p 是循环变量。对于每个找到的子目录,使用 rmdir 命令删除它们。/s 选项表示递归删除该目录及其所有内容,/q 则是不显示删除提示。
if not exist "%CURRENT_DIR%\Tools" (
echo Dir not exist: %CURRENT_DIR%\Tools
pause
exit /b 1
)
#pause:这条命令会使批处理程序暂停,等待用户按下任意键。这样,用户可以看到前面输出的消息。
#exit /b 1:这条命令用于退出当前批处理脚本,并返回一个错误代码 1。/b 选项表示只退出当前的批处理脚本,而不是整个命令提示符窗口。返回值 1 通常表示发生了某种错误。
%OBJCOPY_EXE% -I binary -O srec --srec-forceS3 %APP_BIN_PATH% %TEMP_FOLDER%\app.s19 --change-addresses 0x20000#这句的的意思是调用%OBJCOPY_EXE%环境变量路径下的.exe程序,-I binary表示输入为二进制格式文件、-O srec表示输出为.S19文件、--srec-forceS3只对输出目标文件格式是SREC有意义。避免产生S1/S2记录,只产生S3格式的记录 --change-addresses 修改.s19文件起始地址为0x20000
%HEXVIEW_EXE% /S /MT:%TEMP_FOLDER%\boot.s19 %TEMP_FOLDER%\app_info.s19 /XS:32 -o %TEMP_FOLDER%\all_boot.s19
#%HEXVIEW_EXE%调用hexview软件 /S表示静默执行,也就是不打开hexview界面了;/MT表示合并文件,这是不透明模式一般都是用/MT合并文件;/XS:32表示以.s19文件形式输出;32表示四个字节一组;-o表示输出为哪个文件