ESP32-S3 CMSIS-DAP与 IAR 调试记录,解决问题 :The IP address is not valid or unknown hostname
GD32F527VS:ESP32-S3 CMSIS-DAP、pyOCD、GDB Server 与 IAR 调试记录
本文记录一个已经验证可用的 GD32F527VS SWD 调试方案:使用 ESP32-S3 运行本项目的 CMSIS-DAP 固件,通过 pyOCD 提供 GDB Server,并可供 GNU GDB 或 IAR C-SPY 的 GDB Server driver 连接。
解决报错:
Mon Jul 13, 2026 09:10:23: Fatal error: The IP address is not valid or unknown hostname: localhost:3333 Session
aborted!
已验证的调试链路
IAR 或 arm-none-eabi-gdb
|
| TCP / GDB Remote Protocol
v
pyOCD GDB Server(127.0.0.1:3333)
|
| USB CMSIS-DAP v2 Bulk
v
ESP32-S3 CMSIS-DAP Probe
|
| SWD
v
GD32F527VS
已验证的硬件接线
ESP32-S3 GPIO17 -> GD32 SWCLK
ESP32-S3 GPIO18 -> GD32 SWDIO
ESP32-S3 GND -> GD32 GND
GD32 VDD -> 3.3V
当前已验证的 pyOCD 工作流不依赖 NRST。
前置条件
- ESP32-S3 已烧录使用普通 GPIO SWD bitbang 的稳定 CMSIS-DAP 固件。
- 已安装 pyOCD。
- 已安装 GD32F527 Device Family Pack。
- 目标工程已构建,且存在带调试符号的 ELF 文件。
先确认 pyOCD 能识别 ESP32-S3 probe:
pyocd list
示例输出:
Espressif Systems Co. Ltd. CMSIS-DAP 30EDA033A060
CMSIS-DAP 的 UID 来自 ESP32-S3 MAC 地址,因此不同开发板的 UID 会不同。后续命令中的 30EDA033A060 应替换为 pyocd list 显示的实际 UID。
启动 pyOCD GDB Server
在独立 PowerShell 窗口中运行以下命令,并在整个调试期间保持该窗口运行:
pyocd gdbserver `
-t GD32F527VS `
--pack "C:\Users\11349\Downloads\GD32F527_AddOn_V1.3.0\GD32F527_AddOn_V1.3.0\GD32F527_AddOn_V1.3.0\GD32F527_AddOn_V1.3.0\GigaDevice.GD32F527_DFP.1.3.0.pack" `
-u 30EDA033A060 `
--frequency 1000000 `
--port 3333
GDB Server 默认监听本机 TCP 3333 端口。
GNU GDB 调试流程
当前 RT-Thread 工程中,已验证可用于调试的 ELF 文件为:
D:\code\pi_gd32\rt-thread\bsp\gd32\arm\gd32527v-start\build\Exe\rtthread.out
该文件是带 DWARF 调试信息的 ARM ELF:
ELF 32-bit ARM
with debug_info
not stripped
不要使用下列路径,因为当前构建目录中不存在该文件:
...\build\Exe\project.elf
启动 GDB:
cd "D:\backup\GD32EmbeddedBuilder_v1.5.6_Rel\GD32EmbeddedBuilder_v1.5.6_Rel\Tools\GNU Tools ARM Embedded\xpack-arm-none-eabi-gcc\9.2.1-1.1\bin"
.\arm-none-eabi-gdb.exe "D:\code\pi_gd32\rt-thread\bsp\gd32\arm\gd32527v-start\build\Exe\rtthread.out"
进入 GDB 后执行:
target extended-remote localhost:3333
monitor reset halt
break main
continue
已验证可以命中:
Breakpoint 1, main () at ...\applications\main.c:22
常用 GDB 命令:
next
step
continue
backtrace
info registers
info threads
thread apply all backtrace
print variable_name
monitor reset halt
如果目标程序已经由 pyOCD 烧录,不需要在 GDB 中执行 load。正常流程为:复位、停住、设断点、继续运行。
monitor reset halt
break main
continue
使用 pyOCD 烧录 GD32F527VS
当前可靠的烧录路径是 pyOCD:
pyocd flash `
-t GD32F527VS `
--pack "C:\Users\11349\Downloads\GD32F527_AddOn_V1.3.0\GD32F527_AddOn_V1.3.0\GD32F527_AddOn_V1.3.0\GD32F527_AddOn_V1.3.0\GigaDevice.GD32F527_DFP.1.3.0.pack" `
"D:\code\pi_gd32\rt-thread\bsp\gd32\arm\gd32527v-start\build\Exe\project.hex" `
-u 30EDA033A060 `
--frequency 1000000
IAR C-SPY 通过 pyOCD GDB Server 调试
IAR Embedded Workbench 可以通过 GDB Server C-SPY driver 连接 pyOCD。
- 先按前文启动 pyOCD GDB Server。
- 在 IAR 中打开:
Project -> Options -> Debugger -> Setup。 - 在
Driver下拉框选择:GDB Server。 - 在 GDB Server 通信设置中填写:
127.0.0.1,3333
这里必须使用英文逗号分隔 IP 地址和端口:
<IP 地址>,<端口>
已验证可用:
127.0.0.1,3333
以下格式在 IAR GDB Server driver 中无效:
localhost:3333
127.0.0.1:3333
它们会导致类似错误:
Fatal error: The IP address is not valid or unknown hostname
IAR 与 pyOCD 的职责划分
通过 GDB Server 使用 IAR 时,建议按以下方式分工:
pyOCD:CMSIS-DAP、SWD、复位/暂停、Flash 烧录、GDB Server
IAR:源码显示、符号、断点、单步、变量、调用栈、寄存器
优先使用 pyOCD 进行烧录,再在 IAR 中 attach/debug。
IAR 的原生 Flash Loader 与 pyOCD GDB Server 并不保证完全兼容。如果出现:
Failed to load flash loader: ...\FlashGD32F527xS.flash
这属于 IAR Flash Loader 工作流的兼容性问题,不代表 ESP32-S3 CMSIS-DAP、SWD 或 GDB Server 连接失败。
建议先使用 pyOCD 完成下载,再使用 IAR 的 attach/debug 调试方式,避免依赖 IAR Flash Loader。
常见问题
GDB 报 Connection refused
pyOCD GDB Server 未启动、已退出,或者使用了不同端口。应先启动 pyOCD GDB Server,并保持其窗口运行。
GDB 报 No executable file specified 或 No symbol table is loaded
通常是 GDB 使用了不存在的 ELF 路径。对于当前 RT-Thread 工程,应使用:
...\build\Exe\rtthread.out
而不是不存在的 project.elf。
ESP32-S3 串口显示 DOWNLOAD(USB/UART0)
示例:
boot:0x0 (DOWNLOAD(USB/UART0))
waiting for download
ESP32-S3 已进入 ROM 下载模式。常见原因是 USB-to-UART 的 DTR/RTS 控制线被终端工具拉动。重新使用 esptool 烧录桥接固件,并正常复位即可恢复。
IAR 直接选择 CMSIS-DAP 后显示 Probe not found
当前稳定固件暴露的是 CMSIS-DAP v2 Bulk transport,pyOCD 可以直接使用。IAR 的直接 CMSIS-DAP driver 更依赖 HID transport,尚未作为正式功能完成验证。
当前推荐的 IAR 接入方式是:
IAR GDB Server driver -> pyOCD GDB Server -> ESP32-S3 CMSIS-DAP
浙公网安备 33010602011771号