@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