11 points par GN⁺ 2025-12-15 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • uvm32 est un sandbox de machine virtuelle minimaliste pour les environnements à ressources limitées comme les microcontrôleurs, composé d’un unique fichier C et fonctionnant sans allocation mémoire dynamique
  • Basé sur un émulateur RISC-V, il exécute des applications bytecode écrites en C, Zig, Rust et assembleur, avec une conception asynchrone qui empêche le blocage de l’hôte
  • Il peut fonctionner avec moins de 3 KB de flash et moins de 1 KB de RAM ; la sécurité étant prioritaire, un code incorrect ne fait pas planter l’hôte
  • Il fournit divers exemples d’hôtes VM et des applications d’exemple par langage, ce qui permet une intégration dans des contextes variés comme l’embarqué, le jeu ou les plugins
  • Publié sous licence MIT, il peut être utilisé librement dans la recherche, les produits et les appareils embarqués

Aperçu de uvm32

  • uvm32 est un sandbox de machine virtuelle léger sans dépendances, conçu pour les microcontrôleurs et les appareils aux ressources contraintes
    • Structure en un seul fichier C, basé sur le standard C99, conception asynchrone, sans mémoire dynamique
    • Fonctionne sous le seuil de 3 KB de flash / 1 KB de RAM sur STM32L0 (ARM Cortex-M0+)
  • Il repose sur un émulateur RISC-V et inclut une interface d’administration ainsi que des outils efficaces de build du code

Principaux cas d’usage

  • Remplacer des moteurs de script embarqués comme Lua, Duktape, MicroPython
  • Isoler du code non fiable via un environnement sandbox
  • Permettre le développement avec des langages système modernes comme Rust et Zig
  • Réduire la maintenance multi-plateforme selon le principe “Write once, run anywhere”

Caractéristiques principales

  • Inclut des exemples de bytecode écrits en C, Zig, Rust et assembleur
  • La conception non bloquante empêche un code anormal d’arrêter l’hôte
  • Aucune hypothèse sur les E/S de l’hôte, avec un modèle d’exécution simple et cohérent
  • Fournit une FFI minimale et sûre
  • Peut exécuter aussi bien de petits scripts que des applications complexes
  • Conception orientée sécurité : les erreurs internes à la VM n’endommagent pas l’hôte
  • Basé sur un émulateur CPU complet, mais pas destiné à la simulation matérielle

Comparaison avec les alternatives

  • Empreinte mémoire plus réduite que les moteurs de script embarqués existants
  • Prise en charge de langages largement utilisés comme C, Rust et Zig
  • Intégration facile avec les logiciels existants
  • Prise en charge de divers paradigmes comme event-driven, polling et multiprocesseur
  • Grande robustesse face à du code VM anormal
  • En revanche, les appels FFI directs, l’efficacité maximale, une expérience de scripting simple et l’intégration d’une bibliothèque standard ne sont pas des objectifs

Build et exécution (Docker)

  • Peut être buildé avec un simple compilateur C, avec un environnement Docker fourni
    • Configuration de l’environnement avec les commandes make dockerbuild, make dockershell
    • Après avoir exécuté make dans le shell Docker,
      il est possible de lancer ./hosts/host/host apps/helloworld/helloworld.bin
  • La commande host -h permet de voir toutes les options

Licence

  • Licence MIT
  • Utilisable librement pour la recherche, les produits et les appareils embarqués

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.