前言¶
在 DSH(DeepSeek Harness)的插件生态中,51 单片机的开发流程通常涉及 Keil C51 编译、Proteus 仿真以及人工判定 LED 亮灭。人工判定依赖视觉模型,受引脚编号漂移影响,结果不稳定。dsh-mcu-lab 插件将这条链路接进 DSH 会话,提供确定的判定依据(如编译是否产出 hex、CPU 是否增长、是否有失败标记文本),让 AI 能够直接在对话中完成开发闭环。
是什么¶
这是一个 DSH 插件(lib/index.js)配合一个命令行内核(kernel/mcu_lab.py)的集合体。插件层负责向 DSH 注册 5 个工具,接收 AI 参数并调用内核;内核层使用 Python 编写,负责编译、仿真和判定逻辑。
它解决的问题很具体:把原本需要人工拆解的“编译 hex、复制到电路、跑仿真、看结果”这一系列操作,封装成 AI 可直接调用的工具,输出 PASS/FAIL 及判定依据。
核心功能¶
该插件提供以下核心能力:
- 5 个工具:
mcu_run(默认入口)、mcu_build(仅编译)、mcu_sim(截图)、mcu_verify(复判)、mcu_list(索引电路)。 - 命令行内核:
kernel/mcu_lab.py,支持check、list、build、run、verify、sim六个子命令。 - 编译器支持:支持 Keil C51 和免费开源的 SDCC。
- 仿真与判定:集成 Proteus ISIS 仿真,提供确定性判定后端(无需视觉模型介入)。
安装与启用¶
方式一:装进 DSH(获取 5 个工具)¶
- 放置仓库:将本仓库放到 DSH 的 profile 模块目录下,目录名必须与包名一致:
<DSH_HOME>\profiles\node_modules\dsh-mcu-lab\
(`<DSH_HOME>` 默认为 `%USERPROFILE%\.dsh`)
- 添加装载行:在对应 profile 的
cordis.patch.yml末尾添加:
- insert:
- id: mcu-lab
name: 'dsh-mcu-lab'
- 重启 DSH:执行
dsh web重启后,5 个工具将出现在会话中。
方式二:只用命令行内核(不依赖 DSH)¶
如果不需要 DSH 的插件层,可以直接运行内核脚本:
python kernel/mcu_lab.py check
python kernel/mcu_lab.py list
python kernel/mcu_lab.py build examples\led_blink.c
python kernel/mcu_lab.py run examples\led_blink.c <你的电路.DSN> --wait 6
python kernel/mcu_lab.py verify <你的电路.DSN> --wait 6
python kernel/mcu_lab.py sim <你的电路.DSN> --seconds 8 --shot out.png
典型用法¶
在会话中直接调用工具,例如:
把
examples/led_blink.c在这个电路上跑一遍,告诉我过没过。
对应的命令行操作如下:
- 体检环境:
python kernel/mcu_lab.py check
- 列出可用电路:
python kernel/mcu_lab.py list
- 编译源码:
python kernel/mcu_lab.py build examples\led_blink.c
- 运行仿真并判定:
python kernel/mcu_lab.py run examples\led_blink.c <你的电路.DSN> --wait 6
- 仅判定电路状态:
python kernel/mcu_lab.py verify <你的电路.DSN> --wait 6
- 生成仿真截图:
python kernel/mcu_lab.py sim <你的电路.DSN> --seconds 8 --shot out.png
前置条件与依赖¶
插件以 Windows 平台为基准,必须满足以下条件:
- 操作系统:Windows 11(作者实测),其他平台未验证。
- 编译器:Keil C51(或 SDCC)。Keil 专有关键字在 SDCC 路线下需自行改写。
- 仿真软件:Proteus ISIS(安装路径建议纯英文,中文路径会导致崩溃)。
- Python 环境:
- 建议版本:Python 3.13.15(作者实测)。
- 依赖包:仅编译(
check/list/build)使用标准库;仿真与判定(run/verify/sim)需安装pywin32和Pillow。
- 环境变量:
DSH_MCU_LAB_KEIL:指向C51.exe。DSH_MCU_LAB_ISIS:指向ISIS.EXE。DSH_MCU_LAB_IFACE:指向接口脚本目录(默认为仓库内的kernel/iface/)。
注意事项¶
- 目录命名:安装时,放入
node_modules的目录名必须与包名dsh-mcu-lab一致。 - 源码编码:C51 源码必须是纯 ASCII,包含中文注释会报 C141 语法错误。
- 确定性判定:判定逻辑依赖“仿真进程 CPU 是否增长”等确定性指标,而非读取截图像素,因此结果稳定。
- 未验证项:Keil C51 和 Proteus ISIS 的具体版本要求未做严格验证,仅作者实测环境为 C51 9.00 和 Proteus 7.08 SP2。