- uvm32 adalah sandbox mesin virtual minimalis untuk lingkungan dengan sumber daya terbatas seperti mikrokontroler, terdiri dari satu berkas C dan berjalan tanpa alokasi memori dinamis
- Berbasis emulator RISC-V, menjalankan aplikasi bytecode yang ditulis dalam C, Zig, Rust, dan assembly, dengan desain asinkron untuk mencegah host terhenti
- Dapat berjalan dengan flash di bawah 3KB dan RAM di bawah 1KB, dengan prioritas pada keamanan sehingga kode yang salah tidak membuat host crash
- Menyediakan berbagai contoh host VM dan aplikasi sampel per bahasa, sehingga bisa diintegrasikan ke berbagai lingkungan seperti embedded, game, dan plugin
- Dirilis dengan lisensi MIT, sehingga bebas digunakan untuk riset, produk, dan perangkat embedded
Ikhtisar uvm32
- uvm32 adalah sandbox mesin virtual ringan tanpa dependensi, dirancang untuk mikrokontroler dan perangkat dengan keterbatasan sumber daya
- Struktur satu berkas C, berbasis standar C99, desain asinkron, tanpa penggunaan memori dinamis
- Pada STM32L0 (ARM Cortex-M0+), dapat berjalan dengan kurang dari 3KB flash / 1KB RAM
- Dibangun di atas emulator RISC-V dan mencakup antarmuka manajemen serta alat build kode yang efisien
Tujuan penggunaan utama
- Pengganti engine scripting embedded seperti Lua, Duktape, MicroPython
- Isolasi kode yang tidak tepercaya melalui lingkungan sandbox
- Mendukung pengembangan dengan bahasa sistem modern seperti Rust dan Zig
- Meminimalkan pemeliharaan multi-platform dengan prinsip “Write once, run anywhere”
Fitur utama
- Menyertakan contoh bytecode yang ditulis dalam C, Zig, Rust, assembly
- Desain non-blocking sehingga kode yang bermasalah tidak menghentikan host
- Tidak mengasumsikan I/O host, model eksekusi yang sederhana dan konsisten
- Menyediakan FFI minimal yang aman
- Dapat menjalankan mulai dari skrip kecil hingga aplikasi kompleks
- Desain yang mengutamakan keamanan, error internal VM tidak merusak host
- Berbasis emulator CPU penuh, tetapi bukan untuk tujuan simulasi hardware
Perbandingan dengan alternatif
- Jejak memori lebih kecil dibanding engine scripting embedded yang ada
- Mendukung bahasa yang banyak digunakan seperti C, Rust, Zig
- Mudah diintegrasikan dengan perangkat lunak yang sudah ada
- Mendukung berbagai paradigma seperti event-driven, polling, multiprosesor
- Memiliki ketahanan terhadap kode VM yang bermasalah
- Namun, pemanggilan FFI langsung, efisiensi maksimum, pengalaman scripting sederhana, dan library standar bawaan bukanlah targetnya
Build dan menjalankan (Docker)
- Dapat di-build hanya dengan kompiler C, dengan lingkungan Docker yang disediakan
- Siapkan lingkungan dengan perintah
make dockerbuild, make dockershell
- Setelah menjalankan
make di dalam shell Docker,
./hosts/host/host apps/helloworld/helloworld.bin dapat dijalankan
- Opsi lengkap dapat dilihat dengan perintah
host -h
Lisensi
- Menggunakan MIT License
- Bebas digunakan untuk riset, produk, perangkat embedded, dan lainnya
Belum ada komentar.