firmwareloop 0.1.8__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {firmwareloop-0.1.8/firmwareloop.egg-info → firmwareloop-0.2.0}/PKG-INFO +66 -34
- firmwareloop-0.1.8/PKG-INFO → firmwareloop-0.2.0/README.md +422 -418
- firmwareloop-0.1.8/README.md → firmwareloop-0.2.0/firmwareloop.egg-info/PKG-INFO +450 -390
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/pyproject.toml +1 -1
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/__init__.py +1 -1
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/common/fw.psm1 +13 -3
- firmwareloop-0.2.0/tools/doctor.ps1 +192 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/fw_mcp_server.py +167 -35
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/lib/ndtdbg.py +122 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/logic_capture.ps1 +6 -1
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/ndtdbg_bridge.ps1 +115 -1
- firmwareloop-0.2.0/tools/ndtdbg_cli.py +420 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/setup-agent-mcp.ps1 +2 -2
- firmwareloop-0.1.8/tools/doctor.ps1 +0 -155
- firmwareloop-0.1.8/tools/ndtdbg_cli.py +0 -222
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/LICENSE +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/firmwareloop.egg-info/SOURCES.txt +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/firmwareloop.egg-info/dependency_links.txt +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/firmwareloop.egg-info/entry_points.txt +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/firmwareloop.egg-info/requires.txt +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/firmwareloop.egg-info/top_level.txt +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/setup.cfg +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/acceptance-scenario.ps1 +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/build.ps1 +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/can.ps1 +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/check-qoder-mcp.ps1 +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/common/build-backends.psm1 +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/common/uart_probe.py +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/flash.ps1 +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/instrument_cli.py +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/lib/__init__.py +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/lib/instruments.py +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/logic_decode.ps1 +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/reset.ps1 +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/sigrok_csv_to_fwloop.py +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/test-backends.ps1 +0 -0
- {firmwareloop-0.1.8 → firmwareloop-0.2.0}/tools/test.ps1 +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: firmwareloop
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: AI Agent Firmware Development and Lab Automation Platform (Dual-Tier MCP Server)
|
|
5
5
|
Author-email: WeilinZhang <19523330249@163.com>
|
|
6
6
|
License: MIT
|
|
@@ -40,7 +40,7 @@ Dynamic: license-file
|
|
|
40
40
|
|
|
41
41
|
---
|
|
42
42
|
|
|
43
|
-
## 为什么需要 FirmwareLoop
|
|
43
|
+
## 为什么需要 FirmwareLoop?
|
|
44
44
|
|
|
45
45
|
传统的 AI 编程助手(LLM)通常只能停留在**“纯软件文本生成”**阶段。在单片机与嵌入式领域,AI 面临严重的断层:**看不到编译报错行列、无法操作物理烧录器、读取不到串口输出,更无法测量真实的电信号与总线波形**。
|
|
46
46
|
|
|
@@ -57,11 +57,11 @@ FirmwareLoop 为 AI Agent 暴露了开箱即用的 MCP 工具,涵盖 5 大核
|
|
|
57
57
|
|
|
58
58
|
| 领域 | 核心 MCP 工具 | 功能说明 |
|
|
59
59
|
|---|---|---|
|
|
60
|
-
| **构建与体检** | `fw_doctor` <br> `fw_build` |
|
|
61
|
-
| **硬件与探针** | `fw_scan_hardware` <br> `fw_flash` <br> `fw_reset` |
|
|
62
|
-
| **总线与协议** | `fw_logic_capture` <br> `fw_logic_decode` |
|
|
63
|
-
| **测试与测量** | `fw_run_hil_test` <br> `fw_measure` <br> `fw_acceptance_scenario` |
|
|
64
|
-
| **工程与脚手架** | `fw_init_project` <br> `fw_configure_lab` <br> `fw_get_evidence` |
|
|
60
|
+
| **构建与体检** | `fw_doctor` <br> `fw_build` | 环境诊断;编译固件并提取诊断日志。 |
|
|
61
|
+
| **硬件与探针** | `fw_scan_hardware` <br> `fw_flash` <br> `fw_reset` | 扫描探针与串口;烧录固件、复位芯片。 |
|
|
62
|
+
| **总线与协议** | `fw_logic_capture` <br> `fw_logic_decode` | 逻辑分析仪抓取并解码 I2C / SPI / UART。 |
|
|
63
|
+
| **测试与测量** | `fw_run_hil_test` <br> `fw_measure` <br> `fw_acceptance_scenario` | 运行 HIL 自动化测试;读取示波器 / 程控电源测量值。 |
|
|
64
|
+
| **工程与脚手架** | `fw_init_project` <br> `fw_configure_lab` <br> `fw_get_evidence` | 生成多 Agent 指南;修改台架配置;提取审计证据。 |
|
|
65
65
|
|
|
66
66
|
---
|
|
67
67
|
|
|
@@ -104,9 +104,19 @@ FirmwareLoop 为 AI Agent 暴露了开箱即用的 MCP 工具,涵盖 5 大核
|
|
|
104
104
|
|
|
105
105
|
---
|
|
106
106
|
|
|
107
|
-
##
|
|
107
|
+
## NDT 公司同事快捷通道(一键离线部署)
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
拿到 `Fwloop_setup_pack` 交付包后,双击 **`fwloop-deploy-setup.exe`**,按向导填入 NdtDebugTool 根目录即可,全程离线、无需手工配置。
|
|
110
|
+
完整指南与常见错误速查见随包分发的 [`Fwloop_setup_pack/README.md`](Fwloop_setup_pack/README.md)。
|
|
111
|
+
|
|
112
|
+
**装完即可用**:重启 AI Agent 后直接对话操作 NdtBox(状态检查 / 数据采集 / 抓波形 / 固件烧录),无需其它命令。
|
|
113
|
+
若还要在某个单片机工程里做编译 / 烧录 / HIL 测试,进入该工程根目录执行一次 `fwloop init`(每个新工程一次)。
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 快速开始(在线安装)
|
|
118
|
+
|
|
119
|
+
无论你使用 **Google Antigravity**、**Claude Code**、**Qoder**、**CodeBuddy** 还是 **Cursor**,只需以下 3 步即可开始 AI 驱动的单片机自动化开发:
|
|
110
120
|
|
|
111
121
|
### 第一步:全局安装核心 CLI 工具
|
|
112
122
|
|
|
@@ -131,43 +141,51 @@ fwloop setup
|
|
|
131
141
|
fwloop ndtdebugtool "C:/Users/weilin.zhang/Desktop/zwl/NdtDebugTool-v1.0.19"
|
|
132
142
|
```
|
|
133
143
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
144
|
+
**完成以上两步后,Agent 侧即可直接调用 NdtBox 相关工具:**
|
|
145
|
+
|
|
146
|
+
- `fw_ndtdbg_status` — 版本 / 连通性 / 模组通断
|
|
147
|
+
- `fw_ndtdbg_measure` — 数据轮询采集
|
|
148
|
+
- `fw_ndtdbg_read_reg` / `fw_ndtdbg_write_reg` — 任意寄存器读写(写需 `write_allowed` + `confirm` 双门控)
|
|
149
|
+
- `fw_ndtdbg_capture_seq` — 寄存器序列 + Saleae 波形同窗口取证
|
|
150
|
+
- `fw_ndtdbg_flash` — .bin/.nfw 整片擦写烧录(双门控,默认拒绝)
|
|
151
|
+
|
|
152
|
+
**前置要求:**
|
|
153
|
+
|
|
154
|
+
- **CH341 驱动**:首次在这台电脑使用 NdtBox 时,运行交付包内 `assets\NDTBoxDriver\CH341PAR.EXE`(USB 转 IIC);COM 串口场景另装 `CH341SER.EXE`
|
|
155
|
+
- **Saleae 波形证据**(可选):Saleae Logic16 固件(落位 `%LOCALAPPDATA%\sigrok-firmware`)+ sigrok-cli,并用 Zadig 配置 `libusb-win32` 驱动——交付包一键安装器会自动完成,手工部署详见 [`Fwloop_setup_pack/README.md`](Fwloop_setup_pack/README.md)
|
|
156
|
+
- **USB 独占**:测试时退出 NdtDebugTool 上位机 STDataCollection.exe(同时打开会互踢)
|
|
141
157
|
|
|
142
158
|
---
|
|
143
159
|
|
|
144
160
|
### 第二步:全局注册到各大 AI Agent
|
|
145
161
|
|
|
146
|
-
|
|
162
|
+
**一条命令搞定**(全电脑只需运行一次;自动检测本机已安装的 Agent,未安装的自动跳过):
|
|
147
163
|
|
|
148
|
-
1. **Google Antigravity / Gemini CLI(全自动配置,推荐)**:
|
|
149
164
|
```bash
|
|
150
165
|
fwloop setup
|
|
151
166
|
```
|
|
152
|
-
> **说明**:该命令会自动将双层 MCP 写入 Antigravity 全局配置(`~/.gemini/config/mcp_config.json`),并全自动将全套技能包同步到全局 Skill 目录。
|
|
153
167
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
claude mcp add --scope user agentic-hil -- agentic-hil mcp-stdio
|
|
158
|
-
```
|
|
168
|
+
该命令自动完成三件事:
|
|
169
|
+
|
|
170
|
+
1. **注册双层 MCP**(`fwloop` 工作流层 + `agentic-hil` 硬件层)到以下 Agent 的全局配置,按字段合并写入、不影响已有 MCP 配置:
|
|
159
171
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
172
|
+
| Agent | 配置写入位置 |
|
|
173
|
+
|---|---|
|
|
174
|
+
| Google Antigravity / Gemini CLI | `~/.gemini/config/mcp_config.json` |
|
|
175
|
+
| Claude Code CLI | `~/.claude.json` |
|
|
176
|
+
| Qoder / Qoder CN | `~/.qoder/mcp.json`、`~/.qoder-cn/mcp.json` |
|
|
177
|
+
| CodeBuddy IDE | `~/.codebuddy/mcp.json` |
|
|
164
178
|
|
|
165
|
-
|
|
179
|
+
2. **同步技能包**(`firmwareloop`、`fwloop-adapter`)到 Antigravity 与 Claude Code 的全局 Skill 目录。
|
|
180
|
+
3. **生成机器级全局配置** `%APPDATA%\FirmwareLoop\lab.yaml`(NdtBox 配置模板,已存在则不覆盖)。
|
|
166
181
|
|
|
167
|
-
|
|
168
|
-
|
|
182
|
+
> 手动注册(可选):Claude Code 也可逐条注册,效果相同:
|
|
183
|
+
> ```bash
|
|
184
|
+
> claude mcp add --scope user fwloop -- fwloop
|
|
185
|
+
> claude mcp add --scope user agentic-hil -- agentic-hil mcp-stdio
|
|
186
|
+
> ```
|
|
169
187
|
|
|
170
|
-
|
|
188
|
+
**Cursor / 其他 IDE**(setup 未覆盖全局注册的,在工程根目录的 `.mcp.json` 中并联配置):
|
|
171
189
|
```json
|
|
172
190
|
{
|
|
173
191
|
"mcpServers": {
|
|
@@ -363,7 +381,7 @@ claude mcp remove --scope user agentic-hil
|
|
|
363
381
|
├── demo-firmware/ 示例固件(CMake;宿主编译模拟 MCU,闭环验证载体)
|
|
364
382
|
├── demo-make/ 示例固件(Make;构建测试载体)
|
|
365
383
|
├── docs/ DEPENDENCY_MATRIX / REUSE_PLAN / V0.0.2_GAP_VERIFICATION
|
|
366
|
-
├── pyproject.toml 标准 Python 包配置与 CLI 入口声明 (v0.
|
|
384
|
+
├── pyproject.toml 标准 Python 包配置与 CLI 入口声明 (v0.2.0)
|
|
367
385
|
├── .mcp.example.json 双层 MCP 配置模板(firmwareloop + agentic-hil)
|
|
368
386
|
├── AGENTS.md 通用智能体规范(Antigravity / Qoder / Cursor 等)
|
|
369
387
|
├── CLAUDE.md Claude Code CLI 指南
|
|
@@ -373,7 +391,7 @@ claude mcp remove --scope user agentic-hil
|
|
|
373
391
|
|
|
374
392
|
---
|
|
375
393
|
|
|
376
|
-
## 能力验证状态(v0.
|
|
394
|
+
## 能力验证状态(v0.2.0)
|
|
377
395
|
|
|
378
396
|
> 状态定义:`Implemented`(已实现)/ `Simulator Validated`(模拟验证)/
|
|
379
397
|
> `Real Hardware Validated`(真机验证)/ `Experimental` / `Not Implemented`
|
|
@@ -398,6 +416,20 @@ claude mcp remove --scope user agentic-hil
|
|
|
398
416
|
|
|
399
417
|
---
|
|
400
418
|
|
|
419
|
+
## 常见错误速查(NdtBox / 逻辑分析)
|
|
420
|
+
|
|
421
|
+
| 现象 | 原因与解决 |
|
|
422
|
+
|---|---|
|
|
423
|
+
| `CONFIG_ERROR: NdtBox DLL 目录未配置` | 未执行 `fwloop ndtdebugtool`(或路径写错)→ 重跑并确认输出"已写入" |
|
|
424
|
+
| `PROBE_NOT_FOUND` | NdtBox 未插 / CH341 驱动未装(跑交付包 `assets\NDTBoxDriver\CH341PAR.EXE`)/ 上位机 STDataCollection.exe 正占用 USB |
|
|
425
|
+
| 写操作 `PERMISSION_DENIED` | 全局 `lab.yaml` 的 `ndtdbg.write_allowed` 为 `false` → 临时改 `true` 并重启 Agent(测试完建议改回 `false`) |
|
|
426
|
+
| sigrok 报 `Failed to receive reply to EP1 command 0x7d` | Saleae 驱动不是 libusb-win32 → 用 Zadig 重装;或设备被 Logic 软件占用(先退出) |
|
|
427
|
+
| `fw_logic_decode` 空帧 | 抓取窗口内无总线事务 → 改用 `fw_ndtdbg_capture_seq`(抓取与寄存器序列同窗口进行),不要串行先抓后写 |
|
|
428
|
+
|
|
429
|
+
完整速查表与手工部署细节见 [`Fwloop_setup_pack/README.md`](Fwloop_setup_pack/README.md)。
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
401
433
|
## 接入真实硬件
|
|
402
434
|
|
|
403
435
|
1. `Copy-Item lab\lab.example.yaml lab\lab.yaml`,填入 **COM 口 / 目标身份 / 探针序列号 / 仪器 resource**(真实值永不入库)
|