11 Punkte von GN⁺ 2025-12-15 | Noch keine Kommentare. | Auf WhatsApp teilen
  • uvm32 ist eine minimale Virtual-Machine-Sandbox für ressourcenbeschränkte Umgebungen wie Mikrocontroller, besteht aus einer einzigen C-Datei und arbeitet ohne dynamische Speicherallokation
  • Auf Basis eines RISC-V-Emulators führt sie Bytecode-Apps aus, die in C, Zig, Rust oder Assembler geschrieben wurden, und verhindert durch ihr asynchrones Design ein Blockieren des Hosts
  • Der Betrieb ist mit unter 3 KB Flash und unter 1 KB RAM möglich; Sicherheit hat Priorität, sodass fehlerhafter Code den Host nicht zum Absturz bringt
  • Es werden verschiedene VM-Host-Beispiele und sprachspezifische Beispiel-Apps bereitgestellt, wodurch eine Integration in Umgebungen wie Embedded, Spiele oder Plugins möglich ist
  • Veröffentlicht unter der MIT-Lizenz, frei nutzbar für Forschung, Produkte und Embedded-Geräte

Überblick über uvm32

  • uvm32 ist eine abhängigskeitsfreie leichtgewichtige Virtual-Machine-Sandbox, die für Mikrocontroller und Geräte mit begrenzten Ressourcen entwickelt wurde
    • Aufbau aus einer einzelnen C-Datei, auf dem C99-Standard basierend, asynchrones Design, keine dynamische Speicherallokation
    • Läuft auf einem STM32L0 (ARM Cortex-M0+) mit weniger als 3 KB Flash / 1 KB RAM
  • Sie basiert auf einem RISC-V-Emulator und enthält eine Verwaltungsoberfläche sowie effiziente Tools zum Erstellen von Code

Wichtige Einsatzbereiche

  • Ersatz für eingebettete Skript-Engines wie Lua, Duktape, MicroPython
  • Isolierung von nicht vertrauenswürdigem Code durch eine Sandbox-Umgebung
  • Unterstützung der Entwicklung mit modernen Systemsprachen wie Rust und Zig
  • Minimierter Wartungsaufwand für mehrere Plattformen nach dem Prinzip „Write once, run anywhere“

Zentrale Merkmale

  • Enthält Bytecode-Beispiele, geschrieben in C, Zig, Rust und Assembler
  • Non-Blocking-Design, damit fehlerhafter Code den Host nicht anhält
  • Keine Annahmen über Host-I/O, einfaches und konsistentes Ausführungsmodell
  • Bietet eine sichere minimale FFI
  • Kann von kleinen Skripten bis zu komplexen Anwendungen alles ausführen
  • Sicherheitsorientiertes Design, bei dem Fehler innerhalb der VM den Host nicht beschädigen
  • Basiert auf einem vollständigen CPU-Emulator, ist jedoch nicht für Hardware-Simulation gedacht

Vergleich mit Alternativen

  • Kleinerer Speicher-Footprint als bestehende Embedded-Skript-Engines
  • Unterstützung verbreiteter Sprachen wie C, Rust und Zig
  • Einfache Integration in bestehende Software
  • Unterstützung verschiedener Paradigmen wie ereignisbasiert, Polling und Multiprozessor
  • Hohe Robustheit gegenüber fehlerhaftem VM-Code
  • Dagegen sind direkte FFI-Aufrufe, maximale Effizienz, eine einfache Skripting-Erfahrung und eine eingebaute Standardbibliothek nicht das Ziel

Build und Ausführung (Docker)

  • Kann allein mit einem C-Compiler gebaut werden, Docker-Umgebung wird bereitgestellt
    • Umgebung einrichten mit den Befehlen make dockerbuild und make dockershell
    • Nach Ausführung von make innerhalb der Docker-Shell kann
      ./hosts/host/host apps/helloworld/helloworld.bin ausgeführt werden
  • Mit dem Befehl host -h lassen sich alle Optionen anzeigen

Lizenz

  • Unter der MIT License veröffentlicht
  • Frei verwendbar in Forschung, Produkten und Embedded-Geräten

Noch keine Kommentare.

Noch keine Kommentare.