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)
這篇裡有不清楚的地方,或者想聊類似的東西?私訊我 →