87 lines
2.5 KiB
Batchfile
87 lines
2.5 KiB
Batchfile
|
|
@echo off
|
||
|
|
REM LSPi Project 烧录脚本 (Windows 批处理版本)
|
||
|
|
REM 使用方式: flash.bat [tool]
|
||
|
|
REM tool 可选: openocd, jlink, pyocd, auto
|
||
|
|
|
||
|
|
setlocal enabledelayedexpansion
|
||
|
|
|
||
|
|
set PROJECT_NAME=LSPi_Project
|
||
|
|
set ELF_FILE=build\%PROJECT_NAME%.elf
|
||
|
|
set HEX_FILE=build\%PROJECT_NAME%.hex
|
||
|
|
set BIN_FILE=build\%PROJECT_NAME%.bin
|
||
|
|
|
||
|
|
REM 检查是否安装了 Python
|
||
|
|
python --version >nul 2>&1
|
||
|
|
if %errorlevel% equ 0 (
|
||
|
|
echo 使用 Python 烧录脚本...
|
||
|
|
python flash.py %*
|
||
|
|
exit /b %errorlevel%
|
||
|
|
)
|
||
|
|
|
||
|
|
REM 如果没有 Python,尝试直接使用 OpenOCD
|
||
|
|
echo 未检测到 Python,尝试使用 OpenOCD...
|
||
|
|
where openocd >nul 2>&1
|
||
|
|
if %errorlevel% equ 0 (
|
||
|
|
echo 找到 OpenOCD,开始烧录...
|
||
|
|
|
||
|
|
if not exist "%ELF_FILE%" (
|
||
|
|
echo 错误: ELF 文件未找到: %ELF_FILE%
|
||
|
|
echo 请先运行构建命令: cmake -B build && cmake --build build
|
||
|
|
exit /b 1
|
||
|
|
)
|
||
|
|
|
||
|
|
REM 使用专用 OpenOCD 配置文件
|
||
|
|
set OPENOCD_CFG=%~dp0openocd_gd32f470.cfg
|
||
|
|
if exist "!OPENOCD_CFG!" (
|
||
|
|
openocd -f "!OPENOCD_CFG!" -c "program_elf %ELF_FILE%" -c "shutdown"
|
||
|
|
) else (
|
||
|
|
REM 回退:创建临时 OpenOCD 配置文件
|
||
|
|
echo # OpenOCD 配置脚本 > openocd_temp.cfg
|
||
|
|
echo source [find interface/cmsis-dap.cfg] >> openocd_temp.cfg
|
||
|
|
echo source [find target/stm32f4x.cfg] >> openocd_temp.cfg
|
||
|
|
echo reset_config srst_only >> openocd_temp.cfg
|
||
|
|
echo program %ELF_FILE% verify reset exit >> openocd_temp.cfg
|
||
|
|
openocd -f openocd_temp.cfg
|
||
|
|
del openocd_temp.cfg 2>nul
|
||
|
|
)
|
||
|
|
exit /b %errorlevel%
|
||
|
|
)
|
||
|
|
|
||
|
|
REM 如果没有 OpenOCD,尝试使用 J-Link
|
||
|
|
where JLink.exe >nul 2>&1
|
||
|
|
if %errorlevel% equ 0 (
|
||
|
|
echo 找到 J-Link,开始烧录...
|
||
|
|
|
||
|
|
if not exist "%HEX_FILE%" (
|
||
|
|
echo 错误: HEX 文件未找到: %HEX_FILE%
|
||
|
|
echo 请先生成 HEX 文件: arm-none-eabi-objcopy -O ihex %ELF_FILE% %HEX_FILE%
|
||
|
|
exit /b 1
|
||
|
|
)
|
||
|
|
|
||
|
|
REM 创建临时 J-Link 脚本
|
||
|
|
echo device gd32f470zg > jlink_temp.jlink
|
||
|
|
echo speed 4000 >> jlink_temp.jlink
|
||
|
|
echo erase >> jlink_temp.jlink
|
||
|
|
echo loadfile %HEX_FILE% >> jlink_temp.jlink
|
||
|
|
echo r >> jlink_temp.jlink
|
||
|
|
echo g >> jlink_temp.jlink
|
||
|
|
echo exit >> jlink_temp.jlink
|
||
|
|
|
||
|
|
JLink.exe -CommanderScript jlink_temp.jlink
|
||
|
|
|
||
|
|
REM 清理临时文件
|
||
|
|
del jlink_temp.jlink 2>nul
|
||
|
|
exit /b %errorlevel%
|
||
|
|
)
|
||
|
|
|
||
|
|
echo 错误: 未找到任何烧录工具
|
||
|
|
echo.
|
||
|
|
echo 请安装以下工具之一:
|
||
|
|
echo 1. Python 3 (推荐) - 然后使用 flash.py 脚本
|
||
|
|
echo 2. OpenOCD - 开源调试编程工具
|
||
|
|
echo 3. SEGGER J-Link - 商业调试编程工具
|
||
|
|
echo.
|
||
|
|
echo 或者运行以下命令安装 Python:
|
||
|
|
echo 从 https://www.python.org/downloads/ 下载并安装 Python 3
|
||
|
|
echo.
|
||
|
|
exit /b 1
|