展示 HN:Esp32sim - 在浏览器中运行 ESP32 固件
esp32sim — 一个用 Rust 编写的 ESP32 模拟器:Xtensa(ESP32,S3)和 RISC-V(C3,C6)指令级模拟四个 ESP32 SoC,涵盖了Espressif的两种CPU架构。每个都启动真实的掩码 ROM、真实的二级引导程序和未修改的应用程序映像——没有补丁固件,没有干扰——模拟了足够的 SoC 以支持端到端运行真实项目。无需云,无需账户。MIT。经典的 ESP32 也在双 LX6 内核上启动其 ECO3 ROM,配备 GPIO、UART 和定时器;--board ttgo-tdisplay 添加了 LilyGO TTGO T-Display 的 ST7789 和按钮。ESP32-S3 ESP32-C3 ESP32-C6 CPU 2 × Xtensa LX7 @ 240 MHz 1 × RISC-V RV32IMC @ 160 MHz 1 × RISC-V RV32IMAC @ 160 MHz 命令 esp32sim esp32sim-c3 esp32sim-c6 核心 crate xtensa-lx7 riscv-rv32 riscv-rv32(+ A 扩展)报告的完整列表解码器检查 977 k 指令,0 不匹配 161 k 指令,0 不匹配 126 k 指令,0 不匹配 启动 ROM → 引导程序 → FreeRTOS → 应用程序 ROM → 引导程序 → FreeRTOS → 应用程序 ROM → 引导程序 → FreeRTOS → 应用程序 板 / 显示器 ST7735,ST7701S 480×480 + 触控,WS2812,相机,音频 无 — 仅控制台 ST7789 172×320 通过 SPI+DMA,WS2812,一个 802.15.4 能量检测的 WiFi 虚拟 AP,WPA2,DHCP/DNS/NTP,NAT 到真实网络,HTTPS 同样的虚拟 AP 和网络:扫描,WPA2,DHCP,NAT(一个站) 同样的虚拟 AP 和网络:扫描,WPA2,DHCP,NAT(一个站,传统速率) 速度 块解释器 + AArch64 JIT, ~150–240 Minsn/s 普通解释器(尚无块缓存或 JIT)——仍然高于实时 hello_world 同样的解释器 在浏览器中 是(WebAssembly) 是(WebAssembly) 是(WebAssembly) 报告的硬件比较 JTAG 跟踪,在时序循环重新同步后的 8000 步 控制台差异,205/208 行相同 控制台差异,203/204 行相同 状态 成熟草案 — 请参阅 docs/esp32c3.md 草案 — 请参阅 docs/esp32c6.md 这些完整列表和硬件计数描述了早期的手动运行。CI 运行已检查的采样解码器语料库和模拟器黄金输出;不包括外部完整列表测试。Xtensa objdump 测试排除了 PIE 操作数比较。硬件跟踪比较规范化窗口异常并重新同步延迟循环,因此它并不是不间断的周期逐周期一致性。请参阅测试范围、CI 工作流、Xtensa 解码器测试和硬件比较器。大部分 SoC 是共享的:C3 重新使用 S3 的 UART、USB-Serial/JTAG、系统定时器、定时器组、GPIO、SPI 闪存控制器、GDMA 和 SHA/AES/RSA 模型不变,并添加了自己的内存映射、缓存控制器和中断矩阵;C6 再次重复使用相同的模型,具有自己的内存映射、PLIC 前端、L1 缓存、PCR 和始终开启的 LP 块。只有 CPU crates 是真正分开的。在浏览器中尝试,无需安装:https://mikroverk.github.io/esp32sim/ — Linux 在 S3 上,Touch-LCD-4B 面板及其 SID 播放器,口袋坦克 LLM 水族箱,以及 C3 和 C6 演示。esp32sim/ emu-core/ 总线和核心特征、陷阱、时钟树、AArch64 编码器——两个核心共享 esp-soc/ Machine<S: Soc>: 调度器、设备时间、控制台、脚本、Web UI、加载器、板——每个芯片一个机器;一个芯片插入其核心,总线和中断路由;每个芯片的虚拟 WiFi 访问点、其背后的网络和 NAT esp-periph/ 芯片共享的外设 IP(UART、系统定时器、TIMG、GPIO、SPI_MEM、GDMA、加密、I2S、RMT、I2C……)、设备特征,以及安装它们的 device_set! 表 ── ESP32-S3(Xtensa LX7,双核) ── xtensa-lx7/ 解码器(采样 objdump 检查加上可选完整列表)、解释器(窗口寄存器、循环、XEA2 异常/中断、FPU、MAC16、布尔值、PIE SIMD)、基本块解释器、AArch64 JIT、objdump 兼容反汇编器 esp32s3/ SoC + 板:内存映射、缓存 MMU、SPI 闪存/PSRAM、SHA/AES/RSA、RNG、系统定时器、定时器组、中断矩阵(每核)、GPIO、USB-CDC、UART、I2C、GDMA + I2S/LCD_CAM、RMT TX、regi2c、RTC WDT、WiFi MAC;板/: atech14 / waveshare-cam / waveshare-lcd4b / waveshare-amoled18-v2 / none cli/ `esp32sim` 命令行,所有芯片(`--chip`); `esp32sim-c3` / `esp32sim-c6` 是别名二进制文件 ── ESP32-C3 和 ESP32-C6(RISC-V,单核) ── riscv-rv32/ RV32IMAC 解码器(采样 objdump 检查)、解释器、反汇编器 esp32c3/ C3 SoC:内存映射、中断矩阵、缓存控制器、RNG;外设模型与 esp32s3 共享,条件是 IP 相同 esp32c6/ C6 SoC:统一内存映射和 MMU、中断矩阵 + PLIC/INTPRI、L1 缓存、PCR、LP 块(复位原因、软件复位、RTC 定时器)、ASSIST_DEBUG、802.15.4 和 WiFi MACs 测试/黄金输出回归测试及其固定装置(tests/README.md) ── 共享 ── wasm/ C-ABI crate 将所有三台机器封装在一个模块中 web/ 浏览器 UI(板绘制、控制台、音频、相机) + emu.js/worker.js 用于 wasm hw/ 针对真实板的 JTAG 差异测试脚本,捕获 C3 和 C6 控制台示例/ hello_world(IDF、S3、C3 和 C6)、wave
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡