Skip to content

About

Multi-device M5Stack UIFlow2 virtual-host simulator with esptool flashing, UI capture and input testing

Topics

Resources

Stars

9 stars

Watchers

0 watching

Forks

Repository files navigation

M5Stack 固件模拟平台

简体中文 · English

CI

在浏览器或本地服务中运行 M5Stack 固件,观察屏幕、操作按键和触摸,联调已覆盖的外设,并保存可复查的运行证据。 平台基于 C/QEMU 和独立设备后端;UIFlow2 的验证覆盖最完整,也支持经过兼容性检查的 Arduino、ESP-IDF 和 MicroPython 镜像。

在线体验 · 功能与边界 · 文档 · 问题反馈

浏览器工作台中运行的 CoreS3 固件与交互界面

本轮实际浏览器运行截图;图片来源与复现。线上部署与 main 可能不同,版本及部署方式见 Pages 指南。

选择运行方式

方式 用途 前提与范围
浏览器 WASM 打开网页,运行参考示例或兼容的完整 Flash 镜像 仅开放已准入的设备与配置;无需 Device Service
本地 Device Service 虚拟烧录、串口/画面/输入、外设与网络测试、自动化取证 需要匹配的运行时、ROM 和固件;通过 /api/v1 管理会话
3D 模型预览 查看设备与 Unit 外壳、接口和交互 模型可见不代表已有固件执行后端

浏览器使用客体固件和模拟控制器产生画面与状态;3D 外壳用于呈现和输入。 各设备的后端、外设状态和未完成项见自动项目快照; 精确测试条件见验证证据台账。

Atom 与 Stick 系列的当前模型预览,不代表固件运行

模型目录示意;各型号的固件执行能力需单独验证。

在线体验

  1. 用桌面 Chromium 浏览器打开在线站点。
  2. 选择标有“浏览器运行”的设备和参考固件,启动后等待应用画面或就绪标记。
  3. 操作设备上的按键、触摸或已覆盖输入,查看串口与画面;结束时点击停止。

首次使用需要下载 WASM、ROM 和固件,部分设备冷启动较慢。HTTPS、Service Worker 和共享内存是浏览器执行的前提。ROM/固件在访问者浏览器下载并校验,不随站点打包。 本地 .bin 或 URL 导入仍需满足选定设备的芯片、板级配置和分区要求。 详见浏览器要求与固件范围。

本地启动

建议使用 Python 3.12+:

git clone https://github.com/m5agent/m5stack-esp-emulator.git
cd m5stack-esp-emulator
./start.sh

打开 http://127.0.0.1:8787/platform/web/。也可访问会话页、 固件导入和 OpenAPI。 需要换端口时使用 PORT=8890 ./start.sh。

全新 clone 可启动设备目录和 API 页面;它不包含创建原生虚拟设备所需的本地运行时资产。 按部署与运行时准备构建或配置匹配当前源码与主机架构的后端, 再通过工作台或 Device Service API创建会话。 running 仅表示控制通道启动,应用就绪需结合 ready_marker、串口和实际帧判断。

Agent Skills

部署 Device Service 的用户可以将 skills/ 中的完整目录安装到 自己的 Agent,不需要在 Agent 机器安装 QEMU:

Skill 用途
m5stack-esp-emulator 通用固件上传/合成/Manifest、设备与 Unit、虚拟运行、串口/画面/交互、网络/Flash 取证与会话清理
uiflow2-simulator AIFlow 专用 UIFlow2 完整代码/资源包、同 guest Preview/Run、报错与 UI 迭代

两包独立携带 helper 和参考文件,服务地址与控制 Token 由部署者配置,不包含 本机 IP 或凭据。AIFlow 版保留上游技能名和当前两阶段确认流程;通用版没有 AIFlow 运行依赖。安装、环境变量、验证及独立 ZIP 打包见 Skill 指南。

能力边界

  • 兼容性绑定具体设备、profile、控制器覆盖、Flash/PSRAM、分区和安全配置; 可导入不等于能运行,单个示例通过也不等于任意固件兼容。见固件准入。
  • 浏览器、原生服务和物理硬件是独立验证范围。Tab5 与 CardputerZero 各有独立后端和可用子集, 不能继承 ESP32 浏览器结果;C6、P4 和 Linux ARM64 也不是 Xtensa WASM 的自动扩展。
  • 虚拟设备验证不证明物理 RF、功耗、声学、光学、机械或电气等价性。
  • 当前服务面向可信主机使用,网络策略与静态审查不能代替不可信固件的生产级隔离。
  • 固件差异、启动时间、输入延迟及 Worker 回收仍有已知限制。当前范围见 项目状态,具体缺口见运行时缺口登记。

开发与贡献

欢迎提交 Issue 和 PR。请附设备型号、runtime/profile、固件 SHA256、复现步骤和必要的串口/画面证据, 并去除凭据、设备标识和私有地址。提交固件二进制前先确认其授权;本仓库不收录固件或 ROM。

修改前阅读 AGENTS.md 及所在目录的局部指引。按影响范围运行验证入口; 常用离线检查为:

PYTHONPATH=platform/tools python3 -m unittest discover -s platform/tests -p 'test_*.py'
python3 platform/tools/runtime_coverage.py --check
python3 platform/tools/peripheral_catalog.py --check
python3 platform/tools/qemu_profiles.py --check
python3 platform/tools/project_snapshot.py --check
需要了解 入口
架构与接手顺序 工程交接总览 · 代码地图
任务与工作流 Backlog · 工作流总台账
设备与外设接入 设备目录 · 外设契约
Agent 接入与同 guest Run 源码到 Unit 会话
历史验证与已知差异 验证台账 · 固件矩阵

许可与致谢

原创代码与文档采用 MIT License。QEMU、WASM、第三方代码和模型资产遵循各自许可; 重新分发前请阅读 THIRD_PARTY_NOTICES.md。 感谢 M5StopWatch-QEMU、 Espressif QEMU、esp-emulator、 UIFlow MicroPython、 M5GFX、M5Unified 及设备模型项目提供的基础与参考。

About

Multi-device M5Stack UIFlow2 virtual-host simulator with esptool flashing, UI capture and input testing

Topics

Resources

Stars

9 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages