fc10ef2e10
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
81 lines
2.0 KiB
Bash
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 |