后端与接口
使用 probe-rs 进行探针发现、固件烧录、复位…
当用户提到 probe-rs、cargo-embed、DAP、RTT、CMSIS-DAP、ST-Link、J-Link、烧录、芯片信息、连接 under reset、probe 选择器、probe-rs gdb、probe-rs attach,或要求烧录、查看 RTT、拉 backtrace、兼容 /probe-rs 显式调用时,用此经验完成结构化操作。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
使用 probe-rs 进行探针发现、固特定
解决思路
- 首次使用前在 skill 目录创建 config.json:设置 exe 为 probe-rs 可执行文件路径或命令名;gdb_exe 为 arm-none-eabi-gdb 路径(gdb 子命令需要,例如 C:\\Program Files\\Arm\\GNU Toolchain mingw-w64-x86_64-arm-none-eabi\\bin\\arm-none-eabi-gdb.exe);gdb_port 为默认 GDB 端口;dap_port 为交互式 DAP 会话预留端口;operation_mode 为 1 直接执行 / 2 输出风险摘要但不阻塞 / 3 执行前确认。
- 在工程级配置文件 .embeddedskills/config.json 中配置 probe-rs:chip 为芯片型号(probe-rs 主后端必填);protocol 为 swd 或 jtag;probe 为探针选择器,格式 VID:PID[:Serial];speed 为调试速率 kHz;connect_under_reset 为连接时是否保持 reset。
- 按参数优先级解析:CLI 参数 > 工程配置 .embeddedskills/config.json > state.json > skill 配置 config.json > 默认值。
- 明确各层职责:skill config.json 提供工具路径与端口等环境级常量;.embeddedskills/config.json 提供芯片、协议等工程级参数;CLI 参数在单次调用中覆盖一切。
- Windows 下优先使用 py -3 调用脚本;若 arm-none-eabi-gdb 已在 PATH 中,gdb 子命令可自动发现,不强依赖 skill config.json。
- 使用 list 子命令枚举可用探针,风险低,例如 py -3 <skill-dir>/scripts/probe_rs_exec.py list --json。
- 使用 info 子命令查看探针与目标信息,风险低。
- 使用 flash 子命令烧录固件,支持 elf/hex/bin/uf2,风险高;烧录 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。
- 使用 erase 子命令擦除芯片非易失存储,风险高。
- 使用 reset 子命令复位目标芯片,风险高。
- 使用 read-mem 子命令读取内存,风险低,示例:py -3 <skill-dir>/scripts/probe_rs_exec.py read-mem --chip STM32F407VGTx --address 0x20000000 --length 16 --width b32 --json。
- 使用 write-mem 子命令写内存,风险高。
- 使用 attach / run 子命令包装 probe-rs attach/run,风险低。
- 使用 gdb 子命令启动 GDB Server 并执行 one-shot 调试,风险低;one-shot backtrace 示例:py -3 <skill-dir>/scripts/probe_rs_gdb.py backtrace --chip STM32F407VGTx --elf build/app.elf --json。
- 使用 rtt 子命令读取 RTT 日志,风险低,示例:py -3 <skill-dir>/scripts/probe_rs_rtt.py --chip STM32F407VGTx --json。
- 不自动猜测 chip,缺失时直接报错;多探针场景建议显式提供 --probe;若未检测到任何探针,提示用户检查 USB 连接并重试;若探针配置错误(如 VID:PID 不匹配),报告具体错误信息并建议运行 list 子命令确认可用探针。
- workflow build-debug 只走 one-shot 诊断包装,不启动需要人工接管的长期 DAP 会话。
- Windows 下若要用 probe-rs 驱动 J-Link,通常需要切换到 WinUSB,这会影响 SEGGER 官方工具继续使用;若仍依赖 J-Link 官方工具链,优先继续用现有 jlink skill。
适用边界 · 注意事项
- 没有 probe-rs、调试探针或目标板,且无法准备这些工具/硬件时不适用。
- 需要人工接管的长期交互式 DAP 会话时不适用(此技能中的 workflow build-debug 只走 one-shot 诊断包装)。
- Windows 下若仍依赖 SEGGER 官方 J-Link 工具链,不适用,优先使用现有 jlink skill。