# zephyr_gui **Repository Path**: Ethan-ZYS/zephyr_gui ## Basic Information - **Project Name**: zephyr_gui - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-22 - **Last Updated**: 2026-11-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Zephyr Forge Windows 上的 Zephyr 图形工作台(PySide6 界面):选板卡、构建、烧录、看串口、跑测试,到设备树/Kconfig 可视化配置、`west.yml` 维护和 USB/IP 设备转发,都在一个窗口里完成,不用来回切终端。 ![主界面](docs/images/main.png) ## 简介 - **构建 / 烧录**:一条命令跑 `west build` / `west flash`,结束后自动打包 `<项目名>_<版本>.bin/.hex`;模拟器板卡(`native_sim`、`qemu_*`)的按钮会变成 **Run**。 - **板卡选择**:下拉框里直接打字模糊搜索 `west boards -a` 的全部目标(`d2501` 就能找到 `dr2501a_g0b0ce@...`),并显示本地 `board.yml` 的厂商/SoC。 - **版本与产物**:图形化编辑工程的 `VERSION`;固件产物支持重命名、复制、复制到指定目录。 - **串口监视器**:多口同时接收、双列分屏、单口独占、暂停缓冲、时间戳 / hex 显示,也支持 WSL 里的 `/dev/tty*`。 - **测试**:读取当前 App 的 `testcase.yml` 矩阵(environments / suites / builds),按项运行 `tools/run_tests.py`(Check、单套件/剖面/环境、全部、scope、pristine、smoke),并根据输出给矩阵行标 PASS/FAIL;`west twister` 运行与 `twister.json` 报告树保留在第二个标签。 - **USB/IP**:`usbipd` 设备的 Bind / Attach 一键完成,标记过的设备在拔插后会自动重新 attach。 - **Modules**:直接编辑 west 真正使用的 manifest(`.west/config` 指向的那份),可增删项目、导入模块(模糊搜索)、冻结、保存(自动 `.bak`)。 - **设备树**:查看构建后的完整设备树,按 binding 类型编辑属性(下拉/勾选/diff 预览),支持 **Tree / Diagram** 图示切换(节点框、连线、状态颜色、深度控制、点击联动);默认写入 app overlay,也可改自定义板级 `.dts`。 - **Kconfig**:按真实菜单树浏览全部选项(可隐藏 inactive),编辑后生成 `prj.conf` 受管块,支持 bool/tristate/int/hex/string 和 choice 互斥。 - **源文件**:Config → **Sources** 可浏览 app/boards 下的 `Kconfig*` 与 `.dts/.dtsi/.overlay`,用树形界面直接编辑源文件:DT 按节点/属性修改,Kconfig 按 config 块修改 type/default/prompt/depends/select/range;保存前显示 diff,并保留 `.bak`。 - **调试**:Editor 页内嵌 `west debug` 终端(F5 启动 / Shift+F5 停止),可输入 GDB 命令;行号区点击设断点,**Stack** 面板显示调用栈,**Breakpoints** 列出断点,命中停点或执行 `bt` 时自动打开对应源码行。调试期间 Build/Flash 会被阻止。 - **编辑器**:原生 Qt 多标签编辑,支持 C/C++、设备树、YAML、Kconfig、`prj.conf` 和 CMake 高亮;每个标签保留各自的光标、断点、诊断和修改状态。打开 Kconfig 或 `.dts/.dtsi/.overlay` 时,顶部 **Visual config** / 标签右键可直接跳到 Config → Sources 可视化编辑。 - **日志**:彩色构建输出、编译错误汇总、右键清空/取消/复制/保存,`Ctrl+点击` 诊断直达 Zed。 - 菜单栏 + 状态栏 + 快捷键(`Ctrl+1/2/3/4` 切页、`Ctrl+M` 开合 Modules、`Ctrl+J` 开合串口),关闭窗口最小化到托盘。 ## 运行 ```powershell # 源码运行(PySide6 界面) pip install -r requirements-qt.txt python zephyr_forge_qt.py # 或者用统一入口:默认也是 Qt 版,--tk 回到旧的 Tk 界面 pip install -r requirements.txt python zephyr_forge.py # Qt python zephyr_forge.py --tk # Tk ``` 也可以直接运行打包好的 `dist\ZephyrForge.exe`。首次启动会让你选择 west 工作区根目录(也可以直接选 `app/` 子目录,Forge 会自动定位到 west topdir),之后设置保存在 `~/.zephyr_forge.json`。 单文件 exe 退出时若偶发 `Failed to remove temporary directory`,是 PyInstaller 清理 `%TEMP%\_MEIxxxx` 解压目录的提示,不影响工程;下次启动会自动回收残留。 工作区在 WSL 里也没问题:命令通过 `wsl.exe` 在对应发行版中执行,Zed 也能直接定位到 WSL 文件。 ## AI Agent / MCP Forge 运行时会启动一个只监听 `127.0.0.1` 的桥接服务,并把端口/token 写入 `~/.zephyr_forge_agent.json`。在状态栏点 **Agent** 打开活动抽屉,再点 **Copy config**,把 MCP 配置粘到 opencode 配置里: ```json { "mcp": { "zephyr-forge": { "type": "local", "command": ["python", "zephyr_forge_mcp.py"], "enabled": true } } } ``` 当前工具:`forge_status`、`forge_build`、`forge_build_status`、 `forge_log_tail`、`forge_flash`。构建/烧录是 job 形式,agent 启动后轮询 `forge_build_status`;Forge 的 **Agent** 抽屉会实时显示调用参数、输出和结果。 `forge_flash` 需要 `confirm=true`。 ## 打包 ```powershell .\build_exe.ps1 # → dist\ZephyrForge.exe(Qt 版,单文件) .\build_exe.ps1 -Tk -Name ZephyrForge-tk # 旧的 Tkinter 版 # 安装包(需要先装一次 Inno Setup) winget install --id JRSoftware.InnoSetup -e .\build_installer.ps1 # → dist\ZephyrForgeSetup-<版本>.exe ``` 安装包默认按当前用户安装,带开始菜单/桌面快捷方式和卸载项,exe 与安装程序都使用 `assets/logo.ico` 作为图标。 ## 开发 目录结构、架构约束和测试/打包细节见 [AGENTS.md](AGENTS.md);版本变更见 [CHANGELOG.md](CHANGELOG.md)。