De Rust-gebaseerde emulator esp32sim boot de originele mask ROM, de tweede-fase bootloader en ongewijzigde applicatiebestanden van ESP32-chips. Daardoor kunnen ontwikkelaars firmware testen zonder een fysiek bord. De software is uitgebracht onder de MIT-licentie en werkt lokaal via de opdrachtregel of in de browser met WebAssembly.
Ondersteunde chips en mogelijkheden
Esp32sim ondersteunt de klassieke ESP32 met twee Xtensa LX6-kernen, de ESP32-S3 met twee Xtensa LX7-kernen en de RISC-V-modellen ESP32-C3 en ESP32-C6. De S3-emulatie heeft onder meer ondersteuning voor schermen, camera's, audio, WS2812-leds, GPIO, UART en timers. Voor de C3 en C6 ligt de nadruk vooralsnog op de console en netwerkfuncties.
De emulator bevat een virtueel wifi-netwerk met onder meer WPA2, DHCP, DNS, NTP en NAT naar het echte netwerk. Daarmee kunnen firmwareprojecten netwerkverbindingen testen zonder dat een fysieke chip nodig is. Voor de ESP32-C6 is daarnaast een beperkte simulatie van 802.15.4 beschikbaar.
De S3-versie gebruikt naast een interpreter een AArch64-JIT en haalt volgens de projectdocumentatie ongeveer 150 tot 240 miljoen geïnterpreteerde instructies per seconde. De RISC-V-varianten hebben nog geen JIT, maar draaien eenvoudige programma's wel sneller dan realtime. De ontwikkelaars vergelijken uitvoer ook met echte hardware, al zijn die tests niet bedoeld als volledige cyclus-voor-cyclus-garantie.
Draaien in de browser
Via een webinterface kunnen gebruikers verschillende demonstraties starten zonder installatie. Daaronder vallen een Linux-systeem op de S3, een touchscreenbord, een muzieksynthesizer en voorbeelden voor de C3 en C6. De browserversie kan naast een console ook beeld, audio en camerabeelden tonen.
De ondersteuning verschilt per chip. De S3 geldt als volwassen implementatie, terwijl de C3- en C6-versies als conceptversies worden aangeduid. De emulator modelleert veel gedeelde onderdelen van de chips, zoals UART, timers, GPIO, SPI-flash, DMA en cryptografische functies. Firmware die afhankelijk is van niet-ondersteunde hardware of functies kan daardoor alsnog beperkingen ondervinden.



