前言¶
做 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 構建與調試。