#!/bin/bash # LSPi Project 烧录脚本 (Linux/macOS Shell 版本) # 使用方式: ./flash.sh [tool] # tool 可选: openocd, jlink, pyocd, auto PROJECT_NAME="LSPi_Project" ELF_FILE="build/${PROJECT_NAME}.elf" HEX_FILE="build/${PROJECT_NAME}.hex" BIN_FILE="build/${PROJECT_NAME}.bin" # 检查是否安装了 Python3 if command -v python3 &> /dev/null; then echo "使用 Python 烧录脚本..." python3 flash.py "$@" exit $? fi # 如果没有 Python,尝试直接使用 OpenOCD echo "未检测到 Python,尝试使用 OpenOCD..." if command -v openocd &> /dev/null; then echo "找到 OpenOCD,开始烧录..." if [ ! -f "$ELF_FILE" ]; then echo "错误: ELF 文件未找到: $ELF_FILE" echo "请先运行构建命令: cmake -B build && cmake --build build" exit 1 fi # 创建临时 OpenOCD 配置文件 cat > openocd_temp.cfg << EOF # OpenOCD 配置脚本 source [find interface/cmsis-dap.cfg] source [find target/stm32f4x.cfg] reset_config srst_only program $ELF_FILE verify reset exit EOF openocd -f openocd_temp.cfg rm -f openocd_temp.cfg exit $? fi # 如果没有 OpenOCD,尝试使用 J-Link if command -v JLink &> /dev/null || command -v JLinkExe &> /dev/null; then echo "找到 J-Link,开始烧录..." if [ ! -f "$HEX_FILE" ]; then echo "错误: HEX 文件未找到: $HEX_FILE" echo "请先生成 HEX 文件: arm-none-eabi-objcopy -O ihex $ELF_FILE $HEX_FILE" exit 1 fi # 创建临时 J-Link 脚本 cat > jlink_temp.jlink << EOF device gd32f470zg speed 4000 erase loadfile $HEX_FILE r g exit EOF JLinkExe -CommanderScript jlink_temp.jlink rm -f jlink_temp.jlink exit $? fi echo "错误: 未找到任何烧录工具" echo "" echo "请安装以下工具之一:" echo " 1. Python 3 (推荐) - 然后使用 flash.py 脚本" echo " 2. OpenOCD - 开源调试编程工具" echo " 3. SEGGER J-Link - 商业调试编程工具" echo "" echo "或者运行以下命令安装 Python:" echo " sudo apt install python3 python3-pip # Debian/Ubuntu" echo " brew install python3 # macOS" echo "" exit 1