esp32sim ESP32 模拟器
用 Rust 编写的开源 ESP32 模拟器,可在本地或浏览器中运行真实固件,无需硬件、云服务或订阅。支持 ESP32-S3、C3、C6、经典 ESP32 与 P4,并模拟显示屏、触摸、LED、音频、摄像头与 WiFi。
爱鲜报评分
0 人评分
956
星数
否
中文
Rust
主语言
是
活跃
15
贡献者
人工分析
EDITORIAL推荐理由
esp32sim 直接启动芯片原厂 mask ROM 与二级引导程序,运行未经修改的固件,仿真保真度远高于普通外设模拟方案。它同时提供本地 CLI 与 WebAssembly 浏览器版本,S3 借助块缓存和 JIT 可达约 30 倍实时速度,适合快速验证与演示。项目已有 956 星、MIT 协议、文档齐全,是嵌入式开发与教学场景中值得关注的工具。
适用场景
- 无硬件时调试与验证 ESP-IDF 固件
- 在浏览器中演示 ESP32 项目与教学
- CI 中自动化运行固件回归测试
- 模拟 WiFi、显示屏、摄像头等外设联调
- 评估 Linux、MicroPython 等第三方固件在 ESP32 上的运行效果
优点
- 完整启动链:mask ROM、bootloader、FreeRTOS 到应用,无需修改固件
- 支持多款芯片与开发板,外设建模较全面
- S3 具备块缓存与 JIT,运行速度可远超实时
- 同一套模拟器提供本地 CLI 与浏览器 WebAssembly 版本
- 文档完善,含 CLI 参考、架构、外设与硬件对比测试说明
缺点
- 部分芯片(C3、C6、P4)仍处于草稿或早期阶段,功能有限
- 摄像头仅支持原始 RGB565/YUV422 采集,常见 JPEG+PSRAM 路径不支持
- 运行前需下载 mask ROM 等资源,仓库内不直接包含
- 项目为非官方实现,与乐鑫无关联,兼容性需自行验证
项目概览
esp32sim 是一个用 Rust 编写的开源 ESP32 模拟器。它的目标很直接:在没有硬件的情况下运行真实的 ESP32 固件。既可以在本地命令行运行,也可以直接在浏览器标签页中启动,不需要云服务或订阅。
与常见的“外设模拟”不同,esp32sim 会启动芯片自带的 mask ROM、真实的二级引导程序,然后加载你未经修改的应用程序,因此更接近真实芯片的行为。
支持的芯片与开发板
| 芯片 | CPU | 状态 |
|---|---|---|
| ESP32-S3 | 2 × Xtensa LX7 | 成熟 |
| ESP32-C3 | RISC-V RV32IMC | 草稿 |
| ESP32-C6 | RISC-V RV32IMAC | 草稿 |
| ESP32(经典) | 2 × Xtensa LX6 | 早期 |
| ESP32-P4 | 2 × RISC-V RV32IMAFC | 草稿 |
S3 已适配多款开发板,包括 Atech 14 口套件、Waveshare Touch-LCD-4B、Touch-AMOLED-1.8 与 ESP32-S3-CAM;经典 ESP32 支持 LilyGO TTGO T-Display、AI-Thinker ESP32-CAM 与 Ulanzi TC001。
核心特性
- 完整启动链:mask ROM → bootloader → FreeRTOS → 应用,无需打补丁的固件。
- WiFi 模拟:使用未修改的乐鑫 WiFi 库,固件可加入虚拟接入点,获得 DHCP、DNS、NTP,并能访问真实网络(含 HTTPS)。
- 板级建模:固件可以驱动显示屏、读取触摸、点亮 LED、播放声音。
- 性能:S3 具备块缓存与 JIT,运行 hello_world 约为实时的 30 倍。
- 浏览器版本:同一模拟器编译为 WebAssembly,可直接在网页中运行。
- 与真实芯片对比:S3 通过 JTAG 锁步对比,C3/C6 通过串口输出差异对比。
快速体验
不想安装 Rust 也可以:项目的 Releases 页面提供 macOS 与 Linux 预编译二进制。官方还提供在线演示站,打开浏览器即可试用。
从源码构建的基本流程如下(示意):
cargo build --release
tools/fetch-demo-assets.sh --no-linux # 下载仓库中未包含的 mask ROM
./target/release/esp32sim --boot rom --rom <rom.elf> \
--bootloader <bootloader.bin> --ptable <ptable.bin> --app <app.bin> \
--script <script.txt> --wav out.wav --tft-png tft.png --max-seconds 5
该示例会启动固件、执行一段脚本,并把音频保存为 WAV、把屏幕输出保存为 PNG。其他芯片可使用 esp32sim-c3、esp32sim-c6、esp32sim-p4 或 --chip esp32。
演示项目
官方演示站上可以运行多个真实项目,例如:
- 在 ESP32-S3 上运行 Linux 6.11,并带登录 shell;
- Atech 套件的 Pocket Synth 与 C64 SID 音乐盒;
- 480×480 的 LVGL 触摸面板与 SID 播放器;
- 由小型 Transformer 模型控制鱼群游动的 pocket-tank;
- ESP32-C6 上的 802.15.4 能量扫描器与两个运行 RPL/IPv6 的 Contiki-NG 节点;
- 经典 ESP32 T-Display 上的 MicroPython。
适用与限制
esp32sim 适合固件调试、CI 自动化测试、教学演示以及无硬件环境下的快速验证。需要注意的是,C3、C6、P4 仍处于草稿阶段;摄像头仅支持原始 RGB565/YUV422 采集,常见的 JPEG+PSRAM CameraWebServer 路径尚不支持;运行前通常需要额外下载 mask ROM 等资源。
项目采用 MIT 协议,由 RISE 的 Joakim Eriksson 等人维护,属于非官方实现,与乐鑫科技无隶属关系。
评论
- 暂无评论,来写第一条吧。