Skip to content

野火 GD32H759 + fireDAP:macOS 上的编译烧录调试闭环

一块野火 GD32H759 开发板(Cortex-M7 600MHz)+ 一只野火 fireDAP 烧录器,在 Apple Silicon Mac 上 从「接线」到「源码级断点调试」全打通。没装官方 IDE;编译用 arm-none-eabi-gcc(云端预置秒级拉取), 烧录调试用 pyOCD + 兆易官方 DFP pack,调试用 arm-none-eabi-gdb。本文全程 2026-09-11 实测。

成果速览

环节工具实测结果
SWD 连通OpenOCD / pyOCDDPIDR 0x0bd12477,认出 Cortex-M7 r1p2
编译arm-none-eabi-gcc 15.2.1 + CMake9s 出 ELF/hex/bin(Flash 2772B/3840K)
烧录pyOCD + GD32H7 DFP 1.5.025~37 kB/s,向量表读回校验一致
运行pyOCD 采样 GPIOCOCTL 四次采样 0x800→0x200→0x1000→0x400 轮转
调试pyOCD gdbserver + gdbextended-remote 连上,reset 后命中 main 断点

工具链为什么从云端拉

ARM GCC 原始下载源实测都极慢;把包预置到自己的云服务器(阿里云 nginx)后,任何设备秒级拉取

bash
curl -O http://120.24.236.163/downloads/xpack-arm-none-eabi-gcc-15.2.1-1.1-darwin-arm64.tar.gz
tar -xzf xpack-*.tar.gz      # SHA256 与官方发布一致,sidecar .sha256 同目录

同理,兆易 GD32H7 的 DFP pack(官网藏在许可协议页后面)也放了云端:/downloads/GigaDevice.GD32H7xx_DFP.1.5.0.pack

协议栈与工具链全景

兆易不在 pyOCD 公共 pack 索引里——DFP pack 官网藏在许可协议页后,现已放云端直拉。

烧录 + 运行验证(实测)

调试验证(gdb 源码级)

踩坑档案

现象根因解决
pyOCD 找不到 GD32H7 pack兆易不进公共 pack 索引,官网藏在协议页后云端预置直拉;或挖 agree 页直链下 AddOn 7z 解包
pack 目标报 DebugPortSetup No ACK时序问题(OpenOCD 同链路直连正常,排除接线)SWD 降 1MHz:-O frequency=1000000
Unable to open devicegdbserver 还占着探针(独占资源)先停占用进程再烧录
gcc 工具链下载两次超时developer.arm.com / GitHub 到本机带宽极差云端预置 xpack gcc,45MB/s 秒拉
模板链接参数编不过/链错库模板笔误:编译 -mcpu=cortex-m7 但链接写 -mcpu=cortex-m3CMakeLists 链接参数统一改 cortex-m7
gdb continue 像卡死目标已在 while(1),main 断点不再命中monitor reset halt 再 continue
用 zig cc 顶替编译(已弃用)应急方案:要裁源文件、改链接脚本、关 UBSan,无 libc 无 gdb工具链上云后直接弃用,全量回归 gcc

复现与出处

  • 一键脚本(build_gcc / flash / verify_run / debug_gdb / debug)与全部细节见 skill gd32h7-firedap-debug
  • 官方源码:固件库 GD32H73x_75x_Firmware_Library、例程 GD32H7xx_Demo_Suites、GCC 模板 GD32H7xx_CLion_GCC_Template
  • 预置工具:http://120.24.236.163/downloads/(xpack arm gcc + GD32H7 DFP pack,SHA256 附同名 sidecar)
  • 烧录/调试:pyOCD 0.45.1 + DFP pack;备用连通验证 OpenOCD 0.12(借 stm32h7x.cfg)