Files
hm fc10ef2e10 Initial commit: LSPi (LiangShanPi) project
GD32F470ZGT6 based project with full peripheral support:
- SDRAM (W9825G6KH) via EXMC
- LCD NT35510 (480x800) via EXMC NOR/PSRAM
- Flash (W25Q64) via SPI
- UART (USART0) debug console
- LED indicators
- CMSIS-DAP debug interface
- CMake + ARM GCC toolchain build system
2026-04-26 16:24:42 +08:00

81 lines
2.0 KiB
Bash

#!/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