找回密码
立即注册
搜索
发回帖 发新帖

5591

积分

0

好友

718

主题
发表于 昨天 23:14 | 查看: 3| 回复: 0

1. esp32sim 简介

esp32sim 是一个指令级 ESP32 模拟器,能够直接运行未修改的原版 ESP-IDF 固件。

项目主页:https://github.com/mikroverk/esp32sim

很多模拟器只运行重新编译过的业务代码,esp32sim 不一样,它从芯片的 mask ROM 开始执行,经过真实的二级 bootloader 和 ESP-IDF 启动代码,进入 FreeRTOS 之后再运行应用。

这意味着启动日志、复位原因、分区表读取以及外设初始化顺序,全部都可以在模拟环境中完整呈现。

esp32sim GitHub 仓库主页

2. 零安装入口

零安装入口在项目主页,打开后能直接看到芯片支持范围、演示和文档。

演示地址:https://mikroverk.github.io/esp32sim/

esp32sim 官方演示入口

进入 Touch-LCD-4B 演示页,点右上角的 Configure。这里能看到实际要喂给仿真器的参数:板卡型号、Flash 大小、PSRAM 大小,以及 ROM、bootloader、分区表和应用文件。

esp32sim 固件配置面板

配置示例如下:

board: waveshare-lcd4b
flash: 16 MB
PSRAM: 8 MB

2.1 运行 Demo

从 Demos 里选 Touch-LCD-4B energy panel,按下 Boot。状态离开加载阶段后,界面会切换到一块 480×480 的触屏设备,UART 控制台开始滚动输出。

Touch-LCD-4B 固件在浏览器工作台中运行

3. 换成自己的固件

ESP-IDF、PlatformIO 或 Arduino 的构建目录通常包含这些文件:

build/bootloader/bootloader.bin
build/partition_table/partition-table.bin
build/<应用名>.bin

PlatformIO 通常在 .pio/build/<env>/ 目录下;Arduino 导出的文件名带有 .ino 前缀。

三个文件分别填到 bootloader.bin、partition-table.bin 和 app.bin 对应的位置。

如果板卡不是内置型号,先把 board 换成 none,让固件只走串口控制台。这样可以先把启动问题与显示、触摸、音频等板级模型分开排查。

Flash 和 PSRAM 参数必须与固件编译时的配置保持一致。

ELF 文件是可选项,不填也能正常启动。

4. 用 CLI 固定一次结果

这里使用发布包,进入 WSL 后解包,先确认版本:

tar xzf esp32sim-0.3.0-linux-x86_64.tar.gz
cd esp32sim-0.3.0
./esp32sim --version

4.1 准备 ROM

ROM 需要单独获取。发布包里带了下载脚本,文件会按 SHA-256 校验:

tools/fetch-rom-elfs.sh roms
export ESP32SIM_ROM_DIR=$PWD/roms

下面运行仓库里的 Touch-LCD-4B 演示固件:

FW=/path/to/esp32sim/web/wasm/fw/public

./esp32sim --board waveshare-lcd4b \
  --flash-mb 16 --psram-mb 8 \
  --boot rom --rom roms/esp32s3_rev0_rom.elf --console uart0 \
  --bootloader "$FW/panel-bootloader.bin" \
  --ptable "$FW/panel-ptable.bin" \
  --app "$FW/panel-demo.bin" \
  --flash-at "0x610000=$FW/energydata.json" \
  --tft-png panel.png --max-seconds 8

其中 --max-seconds 参数不能省略。没有设置运行时间,进程不会自己停止。

WSL 中运行 esp32sim 的终端输出

--tft-png panel.png 保存的是固件实际画到屏幕上的结果:

CLI 导出的 Touch-LCD-4B 能源面板

4.2 找不到 ROM?

发布包不附带 Espressif 的 mask ROM。如果没设置路径,直接运行会提示 ELF 找不到:

no esp32s3 mask ROM ELF found

这时先运行 tools/fetch-rom-elfs.sh roms,再通过 --rom 或 ESP32SIM_ROM_DIR 指向 ROM 目录即可。

缺少 ROM 时的报错与解决过程

5. 总结

esp32sim 最合适的场景是启动链验证和软件联调。板子没到,先让 ROM、bootloader、分区表和应用完整跑一遍;改完启动配置后,用固定时间上限跑回归测试;做 LVGL、触摸、音频或网络协议开发时,先把业务逻辑推进到可以观察的阶段,再上真机。

如果你也在折腾底层模拟或嵌入式开发,云栈社区里有一群同好可以一起交流。




上一篇:后端API性能优化:10个常见瓶颈与先测量再行动
下一篇:MCP 能抓串口日志,嵌入式调试为何还要 Skill?
您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-11-6 18:03 , Processed in 0.072420 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表