Hacker News하드웨어 · 시스템

ESP32를 브라우저에서 돌린다, Rust 에뮬레이터

원제 Show HN: Esp32sim – Run ESP32 firmware in the browser

111 포인트댓글 11
Key Point

실제 ROM과 부트로더로 부팅하는 완전 에뮬레이터이면서 WebAssembly로 브라우저에서 즉시 실행 가능해, ESP32 개발과 테스트 방식을 근본적으로 바꿀 수 있다.

핵심 요약

  • Rust로 작성한 ESP32 에뮬레이터 esp32sim이 공개됐으며, Xtensa(ESP32, S3)와 RISC-V(C3, C6) 아키텍처 네 가지 SoC를 명령어 수준에서 에뮬레이션한다.
  • 실제 마스크 ROM, 2단계 부트로더, 미수정 애플리케이션 이미지로 부팅하며, 클라우드나 계정 없이 완전히 로컬에서 실행된다(MIT 라이선스).
  • ESP32는 GPIO, UART, 타이머 지원, ESP32-S3는 ST7789 디스플레이와 버튼을 갖춘 LilyGO TTGO T-Display 보드 지원, ESP32-C3과 C6도 각각 FreeRTOS까지 부팅한다.
  • Xtensa LX7은 150~240 Minsn/s, RISC-V는 평문 인터프리터로도 실시간 이상 성능을 낸다.
  • WebAssembly로 컴파일해 브라우저에서 직접 실행 가능하며, 별도 설치나 클라우드 없이 https://mikroverk.github.io/esp32sim/ 에서 즉시 데모를 돌려볼 수 있다.
  • ST7735, ST7701S 480×480 터치 디스플레이, WS2812 LED, 카메라, 오디오 등 여러 보드 모델을 지원하며, 추가 보드는 trait 구현으로 간단히 확장 가능하다.
  • WiFi는 가상 액세스포인트로 WPA2, DHCP, DNS, NTP를 제공하고 NAT를 통해 실제 네트워크에 연결되며, 펌웨어 수정 없이 작동한다.
  • 802.15.4 무선도 지원해 C6에서 Cooja-NG 시뮬레이터와 lock-step 동기화로 실제 무선 타이밍을 흉내낸다.
  • JTAG lock-step으로 ESP32-S3를 실제 칩과 비교했을 때 3000 스텝 동안 발산 0회, C3과 C6은 콘솔 출력을 캡처한 실제 칩과 비교해 각각 205/208, 203/204 줄이 일치했다.
  • 디버깅 기능으로 trace, breakpoint, watch, peek, disasm, 레지스터 프로파일링, 주변기기 레지스터 로깅을 제공한다.
  • 웹 UI는 실시간 보드 표시, USB-CDC와 UART 콘솔, 액션 박스, WebAudio 스피커를 지원하며, hw/wsdrive.py로 자동화 측정도 가능하다.
  • Pocket Synth 펌웨어는 유휴 상태나 음 재생 시 실시간으로 동작하며, 메모리 제약은 ESP32-S3에 16MB 플래시와 8MB PSRAM, C3과 C6에 4MB 플래시다.
AI 요약 안내

AI가 한국어로 정리한 내용입니다. 정확한 정보는 원문을 확인해 주세요.

요약 원칙 ↗