This wraps the probe-rs CLI for flashing and debugging embedded targets over SWD, JTAG, and CMSIS-DAP probes. You get commands for firmware flashing (elf, hex, bin), memory read/write, chip erase, RTT log streaming, and one-shot GDB sessions for backtraces without keeping a debug server running. It handles multi-probe setups with explicit selectors and pulls chip config from a project-level JSON so you're not typing STM32F407VGTx every time. The workflow is tuned for quick diagnostics rather than long interactive debug sessions. Windows users should note that switching J-Link to WinUSB for probe-rs will break SEGGER's own tooling, so stick with the dedicated jlink skill if you need both.
npx -y skills add zhinkgit/embeddedskills --skill probe-rs --agent claude-codeInstalls into .claude/skills of the current project.
本 skill 提供 probe-rs CLI 的结构化包装,覆盖探针发现、目标信息、烧录、复位、内存读写、one-shot GDB 调试和 RTT 日志读取。
Windows 下优先使用 py -3 调用脚本;若 arm-none-eabi-gdb 已在 PATH 中,gdb 子命令可自动发现,不强依赖 skill config.json。
首次使用前建议在 skill 目录下创建 config.json:
{
"exe": "probe-rs",
"gdb_exe": "C:\\Program Files\\Arm\\GNU Toolchain mingw-w64-x86_64-arm-none-eabi\\bin\\arm-none-eabi-gdb.exe",
"gdb_port": 3333,
"dap_port": 50000,
"operation_mode": 1
}
exe:probe-rs 可执行文件路径或命令名gdb_exe:arm-none-eabi-gdb 路径,gdb 子命令需要gdb_port:默认 GDB 端口dap_port:预留给交互式 DAP 会话operation_mode:1 直接执行 / 2 输出风险摘要但不阻塞 / 3 执行前确认{
"probe-rs": {
"chip": "STM32F407VGTx",
"protocol": "swd",
"probe": "",
"speed": 4000,
"connect_under_reset": false
}
}
chip:芯片型号,probe-rs 主后端必填protocol:swd 或 jtagprobe:探针选择器,格式 VID:PID[:Serial]speed:调试速率 kHzconnect_under_reset:连接时是否保持 reset参数优先级:CLI 参数 > 工程配置(.embeddedskills/config.json)> state.json > skill 配置(config.json)> 默认值
各层职责:skill config.json 提供工具路径与端口等环境级常量;.embeddedskills/config.json 提供芯片、协议等工程级参数;CLI 参数在单次调用中覆盖一切。
| 子命令 | 用途 | 风险 |
|---|---|---|
list | 枚举可用探针 | 低 |
info | 查看探针与目标信息 | 低 |
flash | 烧录固件(elf/hex/bin/uf2) | 高 |
erase | 擦除芯片非易失存储 | 高 |
reset | 复位目标芯片 | 高 |
read-mem | 读取内存 | 低 |
write-mem | 写内存 | 高 |
attach / run | 包装 probe-rs attach/run | 低 |
gdb | 启动 GDB Server 并执行 one-shot 调试 | 低 |
rtt | 读取 RTT 日志 | 低 |
# 列出探针
py -3 <skill-dir>/scripts/probe_rs_exec.py list --json
# 烧录 ELF
py -3 <skill-dir>/scripts/probe_rs_exec.py flash --chip STM32F407VGTx --file build/app.elf --json
# 烧录 BIN(必须提供地址)
py -3 <skill-dir>/scripts/probe_rs_exec.py flash --chip STM32F407VGTx --file build/app.bin --address 0x08000000 --json
# 读取内存
py -3 <skill-dir>/scripts/probe_rs_exec.py read-mem --chip STM32F407VGTx --address 0x20000000 --length 16 --width b32 --json
# one-shot backtrace
py -3 <skill-dir>/scripts/probe_rs_gdb.py backtrace --chip STM32F407VGTx --elf build/app.elf --json
# RTT
py -3 <skill-dir>/scripts/probe_rs_rtt.py --chip STM32F407VGTx --json
chip,缺失时直接报错--probe;若未检测到任何探针,应提示用户检查 USB 连接并重试;若探针配置错误(如 VID:PID 不匹配),应报告具体错误信息并建议运行 list 子命令确认可用探针.bin 烧录必须显式提供地址workflow build-debug 只走 one-shot 诊断包装,不启动需要人工接管的长期 DAP 会话probe-rs 驱动 J-Link,通常需要切换到 WinUSB,这会影响 SEGGER 官方工具继续使用;若仍依赖 J-Link 官方工具链,优先继续用现有 jlink skilljuliusbrussee/caveman
mattpocock/skills
shadcn/improve
obra/superpowers
forrestchang/andrej-karpathy-skills
vercel-labs/skills