|
Download README.md from HelloSun/esp32emu: direct link, hf CLI and curl.
- Browser
- Download file 3.46 kB
-
https://huggingface.co/spaces/HelloSun/esp32emu/resolve/main/README.md
- Command line
-
hf download hf://spaces/HelloSun/esp32emu/README.md
-
curl -L -o README.md https://huggingface.co/spaces/HelloSun/esp32emu/resolve/main/README.md
3.46 kB
metadata
title: ESP32 Emulator (VGA32 / FabGL / FreeDOS)
emoji: 🔌
colorFrom: blue
colorTo: green
sdk: static
pinned: false
license: gpl-3.0
short_description: Browser ESP32 emulator - Arduino bins, VGA, PS/2, FreeDOS
ESP32 模擬器 (ESP32 emulator, runs entirely in the browser)
可載入 Arduino-ESP32 / ESP-IDF 編譯出來的二進位檔(完整 flash 映像,或單獨的 bootloader / partitions / app .bin),
用真實 ESP32 ROM 開機(ROM → 第二階段 bootloader → app),並模擬 LilyGO TTGO VGA32 的周邊電路:
| 週邊 | 模擬方式 |
|---|---|
| CPU | Xtensa LX6 雙核(視窗暫存器、loop、MAC16、FPU、32 位元乘除、S32C1I、XEA2 例外/中斷),WebAssembly 核心(C 編譯)+ JS 參考核心 |
| 開機 | 原廠 ESP32 ROM(Espressif QEMU 發行版附的 esp32-v3-rom*.bin),SPI flash / PSRAM 晶片模型、cache MMU、eFuse、SHA、RTC、TIMG、FRC… |
| VGA | I2S1 LCD 模式 + DMA 描述子鏈 → 依 VGA32 電阻網路(R=22,21 G=19,18 B=5,4 HS=23 VS=15)重建 hsync/vsync 與像素,顯示在 canvas |
| PS/2 鍵盤/滑鼠 | GPIO 33/32、26/27 開集極匯流排 + FabGL 使用的 ULP 協處理器(含 RTC_IO),完整 PS/2 位元協定(可虛擬點擊/實體鍵盤) |
| UART0 | 序列埠終端機(可輸入) |
| GPIO | 40 腳狀態、板子示意圖 |
內建範例(皆為真實 Arduino-ESP32 2.0.17 編譯的二進位):
- FreeDOS 1.4(預設)— FabGL 的 8086 PC 模擬器跑在被模擬的 ESP32 上開機,VGA 輸出、PS/2 鍵盤輸入。
- FabGL VGA 示範 — 16 色 640×480 VGA + 色塊動畫,PS/2 鍵盤輸入即時回顯(可用虛擬鍵盤)。
- 序列埠回音 + LED —
Serial、millis()、digitalWrite(2),GPIO 面板可看到腳位閃爍。 - Hello(Serial)。
使用
- 開啟頁面自動載入 FreeDOS 範例;畫面點一下即可用實體鍵盤,或用下方虛擬鍵盤(Shift/Ctrl/Alt 為鎖定鍵)。
- 「載入二進位…」:選擇
.bin(可多個)。位址自動猜測 (bootloader 0x1000、partitions 0x8000、boot_app0 0xE000、app 0x10000、整份 flash 0x0),可手動修改;只給 app 會自動補上預設開機檔。 - 「全速」不與實際時間同步;「下載 flash」可取回含寫入結果的 flash。
速度
虛擬 ESP32 為 2×240 MHz,瀏覽器以直譯方式執行,視裝置約為真機的 25–100%(狀態列顯示)。FreeDOS 約需 1–2 分鐘到提示字元,可按 Enter 略過開機選單。
目錄
index.html / app.js / js/*.js— 模擬器(soc.js週邊、xtensa.jsJS 核心、cpu_wasm.js+wasm/xtensa.cWASM 核心、i2s.jsVGA、ps2.js/ulp.js鍵盤)assets.js— gzip+base64 內嵌的 ROM、WASM、範例韌體(Space 的二進位檔會被 CDN 重新導向而無 CORS,所以內嵌)firmware/dosvga32/— 範例韌體原始碼(FabGL PCEmulator 改寫,磁碟映像放在 flash 分區dosdisk)tools/— 建置/除錯腳本(build_assets.py、run.mjs、vga.mjs…)
授權
模擬器程式 GPL-3.0-or-later(範例韌體包含 FabGL,GPL-3)。ESP32 ROM 映像取自 Espressif QEMU 發行版;FreeDOS 為 GPL。
開發 / 部署
見 docs/DEVELOPING.md。部署:export HF_TOKEN=hf_...; scripts/deploy.sh(Token 只用環境變數)。整個專案的壓縮原始碼包在 Space 的 downloads/esp32emu-source.tar.gz。