dsh-iar-cspy:在 DSH 對話裏編譯與調試 IAR 工程

前言

做 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。

前置條件

  1. Windows。IAR C-SPY 後端與 EWARM 僅有 Windows 版。
  2. 已安裝 IAR Embedded Workbench for Arm;安裝根目錄下須存在 common\bin\CSpyServer2.exe 與 common\bin\IarServiceLauncher.exe。README 寫明在 EWARM 9.60.2(IAR IDE Platform 9.3.5)上完整驗證。
  3. 運行 setup.ps1 需要 Python 3.10+、Git(或使用 -CspyPySource / -CspyMcpSource 跳過 Git)及訪問 GitHub/PyPI 的網絡。
  4. 私有 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 構建與調試。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜