· kaynak Hacker News – Front Page (native)
Rust ile yazılmış ESP32 emülatörü, tarayıcıda değiştirilmemiş Xtensa ve RISC-V firmware'ini başlatıyor
Hacker News'te paylaşılan esp32sim, dört ESP32 SoC'yu Rust ile komut düzeyinde emüle ediyor, gerçek ROM'u, bootloader'ı ve dokunulmamış uygulama imajlarını başlatıyor ve WebAssembly sayesinde tarayıcıda çalışıyor.
Donanım bağlanmadan tam bir ESP32 açılışı
Hacker News'te paylaşılan esp32sim adlı emülatör, Espressif'in ESP32 mikrodenetleyicilerini komut komut modelleyip tarayıcıda çalıştırıyor. Projenin GitHub readme'sine göre, her çipin gerçek mask ROM'unu, ikinci aşama bootloader'ı ve değiştirilmemiş bir uygulama imajını başlatıyor — yamalanmış firmware veya yerine geçen stub rutinler yok — ve gerçek projelerin baştan sona çalışması için çipin çevresindeki yeterli kısmı emüle ediyor. Kod MIT lisanslı, hesap ya da bulut servisi gerektirmiyor ve bir WebAssembly derlemesi, kurulumsuz denenebilen canlı demolar sunuyor; bunlara S3'te bir Linux açılışı da dahil.
İki CPU ailesi, dört çip
Espressif'in her iki CPU mimarisini kapsayan dört SoC destekleniyor. ESP32-S3 çift Xtensa LX7 çekirdeğiyle modelleniyor, klasik ESP32 çift LX6 çekirdeğinde ECO3 ROM'unu GPIO, UART ve timer'larla başlatıyor, RISC-V tabanlı C3 ve C6 ise tek çekirdekli RV32IMC ve RV32IMAC makineleri olarak emüle ediliyor. SoC'nin büyük kısmı paylaşılan koddan oluşuyor: readme, C3'ün S3'ün UART, USB-Serial/JTAG, systimer, GPIO, SPI flash denetleyicisi, DMA ve crypto modellerini değiştirmeden yeniden kullandığını, yalnızca kendi bellek haritasını, cache denetleyicisini ve interrupt matrisini eklediğini; C6'nın ise bir PLIC ön ucu, L1 cache ve her zaman açık düşük güç blokları eklediğini belirtiyor. Yalnızca CPU uygulamaları ayrı ayrı yazılmış.
Sanal Wi-Fi, ekranlar ve kameralar
Wi-Fi yok sayılmak yerine emüle ediliyor. Sanal bir erişim noktası WPA2'nin yanı sıra DHCP, DNS ve NTP'yi yönetiyor ve NAT üzerinden ana makinenin gerçek ağına köprü kuruyor — S3'te HTTPS de çalışıyor; RISC-V çipleri tarama, WPA2, DHCP ve NAT içeren aynı sanal ağı tek istasyonla alıyor. Kart modelleri SoC'nin üzerinde durup pin düzeyindeki olayları yorumluyor. S3'te seçenekler yalnızca konsollu çıplak bir modülden, 480×480 dokunmatik panele, kameralı bir karta kadar uzanıyor; bu kartta OV5640 girişi — yüklenen bir görsel ya da tarayıcının web kamerası — emüle edilen PIE SIMD biriminde çalışan esp-dl yaya dedektöründen geçip emüle edilmiş bir ses codec'i üzerinden çıkıyor. Klasik ESP32 ise ST7789 ekranı ve düğmeleriyle TTGO T-Display seçeneğine sahip.
Doğruluk iddiaları ve sınırları
Readme, emülatörün nasıl doğrulandığı konusunda alışılmadık derecede açık. Daha önceki manuel çalışmalar, komut çözücülerini tam objdump listeleriyle karşılaştırmış: S3'te 977.000 komutta sıfır uyuşmazlık, C3'te 161.000 ve C6'da 126.000 komut. Fiziksel donanımla karşılaştırmada, zamanlama döngüleri yeniden hizalandıktan sonra bir S3 JTAG izi 8.000 adımı eşleştirmiş; konsol çıktısı gerçek bir C3'te 208 satırın 205'inde, bir C6'da ise 204 satırın 203'ünde eşleşmiş. Ancak sürekli entegrasyon yalnızca depoya işlenmiş örneklenmiş çözücü derlemlerini ve altın çıktı gerileme testlerini çalıştırıyor; donanım karşılaştırması da Xtensa window istisnalarını normalize edip gecikme döngülerini yeniden senkronize ediyor — yani sonuçlar kesintisiz çevrim çevrim özdeşlikten çok işlevsel uyum gösteriyor.
Hız ve olgunluk
Projenin kendi rakamlarına göre S3, temel blok yorumlayıcısını bir AArch64 JIT ile birleştirip saniyede kabaca 150–240 milyon komuta ulaşıyor. RISC-V çipleri hâlâ blok cache'si ya da JIT'i olmayan düz bir yorumlayıcı kullanıyor; yine de readme, hello_world'in bile gerçek zaman'dan hızlı çalıştığını söylüyor. Olgunluk tasarım gereği düzensiz: S3 olgun olarak tanımlanırken C3 ve C6 taslak olarak etiketlenmiş ve her birinin depoda bir durum belgesi var.
Neden önemli
Gömülü iş genellikle masada bir kart, bir USB kablosu ve bir flash et–kontrol et döngüsü demektir. Gerçek ROM'u, bootloader'ı ve uygulama ikilisini başlatan bir emülatör bu döngüyü bir dizüstü bilgisayara ya da CI'ya taşır: firmware — Wi-Fi ilişkilendirmesi, ekran çizimi, hatta kamerayla çalışan çıkarım — herhangi bir donanım mevcut ya da bağlı olmadan denenebilir ve gerilemeler, konsol çıktısını altın dosyalarla karşılaştırarak yakalanabilir; bu proje bunu zaten yapıyor. Hem Xtensa hem RISC-V tarafındaki komut düzeyi doğruluk, aracı duman testlerinden fazlası için güvenilir kılıyor ve tarayıcı derlemesi bir firmware demosunu herkesin açabileceği bir şeye dönüştürüyor. ESP32 kadar yaygın dağıtılmış bir platform için bu, gömülü yazılım geliştirmenin, test etmenin ve öğretmenin maliyetini anlamlı biçimde düşürüyor.
- #esp32
- #emulation
- #rust
- #webassembly
- #embedded
- #open-source
İlgili yazılar
- Açık kaynak siltop, gerçek Apple Silicon güç, frekans ve sıcaklık verilerini terminale getiriyor
- Graphify vektör RAG'ı deterministik kod graflarıyla değiştiriyor; RepoBuddy da bunun getirisini gösteriyor
- PostgreSQL 19, 8-10 özelliği geri çektikten sonra 19 Kasım'a ertelendi; committer'lar yapay zekâ incelemesinin rolünü tartışıyor