前言¶
做 ARM 嵌入式时,IAR Embedded Workbench 仍是不少团队的日常环境:.ewp 工程、iarbuild、C-SPY 模拟器或探针调试,大多在 IDE 里点选完成。若在 DeepSeek Harness(DSH)里让 agent 参与「读工程、编译、看变量、跟调用栈」,单靠模型描述接口往往不够;需要的是把官方调试后端接到 MCP,并在 DSH 里配好路径与 Python 环境。
下面介绍社区插件 dsh-iar-cspy(维护者 Wazy-XD):它把官方 IAR C-SPY MCP Server 打成 DSH bundle,附带配置页、iar-cspy 技能与 iar-launch.ps1 等脚本,便于在对话中驱动构建与 C-SPY 会话。
这是什么¶
dsh-iar-cspy 当前文档版本为 0.0.2,分类为工作流类 DSH 插件(MIT 许可证)。安装后向 profile 插入两条行:iar-cspy(Host 插件)与 iar-cspy-mcp(MCP client)。agent 可通过约 83 个 mcp__iar__* 官方工具编译 .ewp、启动模拟器或硬件上的 C-SPY,并查看变量、寄存器、内存、调用栈与目标输出。IAR 安装路径、MCP 所用 Python、临时目录与调用超时可在 DSH 插件配置页设置;留空字段会按 README 描述的顺序自动探测。
上游 Python 包 iar-cspy、iar-cspy-mcp 由 scripts\setup.ps1 安装到 %LOCALAPPDATA%\dsh-iar-cspy 下的私有 venv;bundle 运行时不会执行 pip。
核心功能¶
MCP 工具与技能¶
- 构建与工程:
project_*、projectmanager_call等,用于加载工程与增量构建。 - 调试与会话:
debugger_*配置并启动会话、运行控制与状态查询。 - 断点与观察:
breakpoints_*管理断点、观察点、日志点。 - 上下文与符号:
contextmanager_*、symbols_*查看栈、局部变量与符号。 - 内存与反汇编:
memory_*、disassembly_*、sourcelookup_*。 - 目标 I/O 与跟踪:
libsupport_*、listwindow_*,以及ide_services_*等兜底能力。
iar-cspy 技能面向用户与模型:对话中出现 IAR、EWARM、C-SPY、.ewp/.eww、iarbuild 等关键词时会自动加载,内容含工具地图、构建/调试流程、launch JSON 写法、EWARM 9.60.2 限制与安全提示。
配置与运维¶
- 配置入口:DSH 侧边栏 Plugins → dsh-iar-cspy,表单在组件列表上方;保存后 MCP 连接自动重载,无需重启 DSH。
- iar_cspy_status:返回实际解析的
iarPath、mcpPython、tempDir、toolCallTimeoutMs、stateDir及缺失项,便于排查「工具未连上」。 - 独立 C-SPY 后端:会话由插件自有 MCP 进程驱动,不依赖已打开的 IAR IDE 窗口;断线后按 1 秒到 30 秒退避重连(最多 50 次),启动失败不会让 DSH 整体报错。
launch JSON 辅助¶
scripts\iar-launch.ps1 从 .ewp 与 linker map 生成 launch JSON,可带上 --cpu、--fpu、端序与 semihosting,并支持覆盖 driver、program 与 driverOptions。
前置条件¶
- Windows。IAR C-SPY 后端与 EWARM 仅有 Windows 版。
- 已安装 IAR Embedded Workbench for Arm;安装根目录下须存在
common\bin\CSpyServer2.exe与common\bin\IarServiceLauncher.exe。README 写明在 EWARM 9.60.2(IAR IDE Platform 9.3.5)上完整验证。 - 运行
setup.ps1需要 Python 3.10+、Git(或使用-CspyPySource/-CspyMcpSource跳过 Git)及访问 GitHub/PyPI 的网络。 - 私有 venv 与临时目录应位于非沙箱工作区的可写路径,默认
%LOCALAPPDATA%\dsh-iar-cspy。
安装与启用¶
DSH 以当前进程权限运行插件;安装前建议在 GitHub 仓库 查阅源码与 MIT 许可证,并仅在受信任的环境执行 setup.ps1。
1. 安装 bundle¶
在 DSH 中通过 npm 安装(README 推荐方式):
plugin_manager install_bundle target=dsh-iar-cspy
需固定版本时可写:
plugin_manager install_bundle target=dsh-iar-cspy@0.0.2
也可从 GitHub Release 的 tgz(.../releases/download/v0.0.2/dsh-iar-cspy-0.0.2.tgz)或本地 tgz 安装。完成后 profile 会出现 iar-cspy 与 iar-cspy-mcp 两行。
2. 准备 MCP 的 Python 环境¶
bundle 只负责启动 MCP,不负责安装 Python 包。先定位已安装包内的 setup.ps1 并执行一次:
$setup = Get-ChildItem "$env:USERPROFILE\.dsh\profiles\*\node_modules\dsh-iar-cspy\scripts\setup.ps1" |
Select-Object -First 1
& $setup.FullName
脚本会在 %LOCALAPPDATA%\dsh-iar-cspy\venv 创建 venv,安装 thriftpy2、mcp 及官方 iar-cspy、iar-cspy-mcp,并写入 config.json。若未探测到 IAR,可指定安装根目录:
& $setup.FullName -IarPath 'C:\Program Files\IAR Systems\Embedded Workbench 9.60'
插件配置页还提供 安装 / 更新 MCP 按钮,等价于运行上述 setup;也可在配置里将 mcpPython 指向自管环境(须已安装 iar-cspy 与 iar-cspy-mcp)。
3. 在 DSH 里填写配置¶
| 字段 | 作用 | 留空时 |
|---|---|---|
iarPath |
IAR 安装根目录 | 查 IAR_INSTALL_PATH、config.json、常见目录 |
mcpPython |
启动 MCP 的 python.exe |
config.json 或默认 venv 下的解释器 |
tempDir |
MCP 的 TEMP/TMP |
%LOCALAPPDATA%\dsh-iar-cspy\tmp |
toolCallTimeoutMs |
单次工具调用超时(毫秒) | 600000(10 分钟) |
extraArgs |
追加到 MCP 启动命令的参数 | 空 |
MCP 启动命令等价于:
<mcpPython> -m iar_cspy_mcp --iar-path <iarPath> [extraArgs]
4. 确认连接¶
让 agent 调用 iar_cspy_status,或在对话中询问连接状态。当 configured 为 true,且 mcpPythonExists、iarExecutables 均为 true 时,mcp__iar__* 工具应可用。若列表仍无 IAR 工具,可重新加载插件或新开会话。
典型用法¶
对话示例¶
README 给出的问法包括:
- 用 IAR 编译并调试某路径下的
app.ewp,Debug 配置。 - 在模拟器中运行并在
main处停下,读取 printf 输出。 - 指定 J-Link 与芯片型号,生成 launch 配置并启动。
构建¶
在 EWARM 9.60.2 上加载工程常用 projectmanager_call 的 LoadEwpFile,再调用 project_build:
projectmanager_call(method="LoadEwpFile", args_json='["D:\work\app\app.ewp", true]')
project_build(project_path="D:\work\app\app.ewp", config_name="Debug", num_parallel_builds=4, max_output_lines=40)
构建失败时结果为 ok=false,应查看 data.succeeded 与 data.output_tail。大工程可把 toolCallTimeoutMs 调高。全量重建或清理可在外部调用 iarbuild.exe 的 -build / -clean。
调试与 launch JSON¶
推荐顺序:先构建 → 用 iar-launch.ps1 生成 JSON → debugger_configure_and_start_session(launch_json=...) → 用各类 debugger/context/memory 工具观察 → debugger_stop_session 结束。
生成 launch JSON 示例:
& "$env:LOCALAPPDATA\dsh-iar-cspy\bin\iar-launch.ps1" `
-Project 'D:\work\app\app.ewp' -Configuration Debug
硬件安全:调试会暂停、复位或烧写真实硬件;在不熟悉的板子上操作前应确认目标,会话结束应主动关闭。
适用场景与注意¶
适合已在 Windows 上使用 IAR EWARM、并希望在 DSH agent 工作流里完成「加载工程 → 编译 → C-SPY 调试 → 读内存/栈/输出」的开发者。不适合未安装 IAR、或非 Windows 的环境。
与官方 IAR VS Code 扩展的能力对照见仓库内 PARITY.md。社区目录 skillhub.cn 上的 dsh-iar-cspy 页 与 GitHub 仓库相互独立索引,并非 DeepSeek 或幻方官方应用商店。
结尾¶
dsh-iar-cspy 把官方 IAR C-SPY MCP 接到 DSH:配置页管路径与超时,技能补流程知识,iar-launch.ps1 减轻 launch JSON 手写成本。按 README 安装 bundle、运行 setup、保存配置并检查 iar_cspy_status 后,即可在对话里驱动 IAR 构建与调试。