پروژه esp32sim؛ اجرای شبیهساز کامل میکروکنترلرهای ESP32 در مرورگر و بستر وب — Show HN: Esp32sim – Run ESP32 firmware in the browser
خلاصه
ابزار متنباز esp32sim یک شبیهساز دقیق سطح دستورالعمل (Instruction-level) برای خانواده میکروکنترلرهای ESP32 است که به مهندسان اجازه میدهد فریمور واقعی را بدون نیاز به سختافزار فیزیکی، مستقیماً روی مرورگر یا به صورت محلی اجرا کنند. این پروژه با زبان Rust توسعه یافته و قابلیت بوت کردن ROM و بوتلودر اصلی را دارد.
معرفی پروژه esp32sim
ابزار esp32sim یک شبیهساز متنباز و قدرتمند برای میکروکنترلرهای شرکت Espressif است که به توسعهدهندگان سیستمهای جاسازیشده (Embedded) اجازه میدهد فریمور واقعی تراشههای ESP32 را بدون داشتن سختافزار فیزیکی، بدون نیاز به کابلهای اتصال و بدون وابسته بودن به سرویسهای ابری، به صورت محلی یا مستقیماً درون مرورگر وب اجرا کنند. این پروژه توسط Joakim Eriksson توسعه یافته و سورسکد آن تحت مجوز MIT منتشر شده است.
هدف اصلی این ابزار، سادهتر کردن روند آزمایش، توسعه و تست نرمافزارهای ESP32 است تا مهندسان بتوانند کدهای خود را به راحتی در محیطهای یکپارچهسازی مداوم (CI) یا سیستمهای محلی تست کنند.
معماری و نحوه کارکرد فنی
این شبیهساز با زبان برنامهنویسی Rust نوشته شده است و از قابلیت WebAssembly برای اجرا در مرورگر بهره میبرد. برخلاف بسیاری از شبیهسازهای سطحی، esp32sim میتواند ماسک ROM اصلی، بوتلودر مرحله دوم (2nd-stage bootloader) و تصاویر اپلیکیشن دستنخورده را بوت کند.
این پروژه از معماریهای مختلف تراشههای ESP پشتیبانی میکند:
- Xtensa (ESP32, ESP32-S3): دارای مفسر بلوک پایه و AArch64 JIT برای اجرای سریعتر (سرعت حدود ۱۵۰ تا ۲۴۰ میلیون دستورالعمل در ثانیه).
- RISC-V (ESP32-C3, ESP32-C6): پشتیبانی از معماریهای RISC-V با استفاده از مفسر پایهای.
- امکانات جانبی شبیهسازیشده: شامل پینهای GPIO، تایمرها، پورتهای UART، واحدهای رمزنگاری (SHA/AES/RSA)، کنترلرهای حافظه فلش و مدلهای شبکه (شامل وایفای مجازی، WPA2 و NAT).
نحوه استفاده و اجرای نمونه
برای ساخت و اجرای پروژه به صورت محلی با استفاده از ابزارهای Rust، میتوانید از دستورات زیر بهره ببرید:
cargo build --release
FW=web/wasm/fw/public
./target/release/esp32sim --boot rom \
--bootloader $FW/atech-bootloader.bin --ptable $FW/atech-ptable.bin --app $FW/atech-firmware.bin \
--script $FW/atech-script1.txt --wav out.wav --tft-png tft.png --max-seconds 5
همچنین برای پروژههای استاندارد ESP-IDF (مانند نمونه hello_world) میتوانید به شکل زیر فریمور کامپایلشده را اجرا کنید:
H=examples/hello_world/build
./target/release/esp32sim --board none --boot rom --console uart0 \
--bootloader $H/bootloader/bootloader.bin --ptable $H/partition_table/partition-table.bin \
--app $H/hello_world.bin --elf $H/hello_world.elf --elf $H/bootloader/bootloader.elf --max-seconds 26
سیگنالهای بلوغ و بحث هکرنیوز
این پروژه در گیتهاب توانسته توجه توسعهدهندگان را جلب کند و نسخههای دمو آن به صورت زنده در صفحه وب مستندات قابل آزمایش است. در بحثهای هکرنیوز، برخی کاربران درباره تفاوتهای این ابزار با پلتفرمهای موجود مانند Wokwi سؤالاتی مطرح کردند؛ سازنده پروژه توضیح داد که تمرکز اصلی روی اجرای فریمورهای واقعی بدون پچ کردن و قابلیت اجرای کامل درون WebAssembly بدون نیاز به زیرساخت ابری است. برخی کاربران نیز به چالشهای خوانایی مستندات و پیچیدگی آرگومانهای خط فرمان اشاره کردند که میتواند در نسخههای آتی بهبود یابد.
در یک نگاه
- زبان اصلی: Rust
- مجوز انتشار: MIT
- معماریهای پشتیبانیشده: Xtensa LX7 (ESP32/S3) و RISC-V (ESP32-C3/C6)
- قابلیت وب: اجرا از طریق WebAssembly بدون نیاز به نصب نرمافزار جانبی
- ویژگیهای برجسته: بوت کردن ROM واقعی، شبیهسازی وایفای مجازی، دوربین و نمایشگرهای گرافیکی
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل