As our world evolves, our reliance on embedded systems increases. This includes safety-critical applications, where the highest standards of coding are required. Despite this, the way we write embedded software never fundamentally changed. We believe Rust to be a promising and appealing language to address memory safety concerns. Yet, adoption of this language in the embedded world is still low and far behind other fields. We believe the culprit to be a lacking and inconsistent ecosystem. In this thesis we present EVA, our vision for a Rust-based embedded real-time operating system. Existing alternatives lack in one or more critical aspects, either by restricting language support to Rust only or by requiring specific hardware platforms to run. Our approach focuses on three main goals: portability across a wide spectrum of embedded devices; multi-language support in kernel space; support for higher level APIs, such as the Rust std library and POSIX. These last two points are critical in order to provide a viable platform for incrementally transitioning existing software to Rust. Our operating system has been benchmarked by measuring cycle counts of critical operations on an STM32 microcontroller. Different testing configurations highlight how Rust runtime checks have little impact on performance. Finally, these results are compared to a mature operating system, Miosix, showing the feasibility of Rust as an alternative to existing languages for embedded programming.
Con l'evolversi del nostro mondo, la nostra dipendenza dai sistemi embedded sta aumentando. Questo include applicazioni safety-critical, dove i più elevati standard di programmazione sono richiesti. Nonostante ciò, il modo in cui scriviamo software embedded non è mai fondamentalmente cambiato. Crediamo che Rust sia un linguaggio di programmazione promettente per affrontare il problema della memory safety. Tuttavia, l'adozione di questo linguaggio nel mondo embedded è ancora bassa e significativamente indietro rispetto ad altri campi. Riteniamo che la causa sia un ecosistema carente e inconsistente. In questa tesi presentiamo EVA, la nostra visione per un sistema operativo embedded real-time. Le alternative esistenti presentano carenze in uno o più aspetti critici, limitando il supporto a solo Rust o richiedendo piattaforme hardware specifiche. Il nostro approccio si basa su tre obbiettivi fondamentali: portabilità su un'ampia gamma di dispositivi embedded; supporto multi-linguaggio nel kernel space; supporto per API di livello superiore, come la libreria std di Rust e POSIX. Questi ultimi due punti sono fondamentali per fornire una piattaforma valida per la transizione incrementale del software esistente a Rust. Il nostro sistema operativo è stato sottoposto a benchmark misurando il numero di cicli di operazioni critiche su un microcontrollore STM32. Diverse configurazioni di test evidenziano come i controlli a runtime di Rust abbiano un impatto minimo sulle prestazioni. Infine, questi risultati vengono confrontati con un sistema operativo maturo, Miosix, dimostrando la fattibilità dell'utilizzo di Rust come alternativa ai linguaggi esistenti per la programmazione embedded.
EVA: A Rust-based embedded real-time operating system
MOR, DAVIDE
2025/2026
Abstract
As our world evolves, our reliance on embedded systems increases. This includes safety-critical applications, where the highest standards of coding are required. Despite this, the way we write embedded software never fundamentally changed. We believe Rust to be a promising and appealing language to address memory safety concerns. Yet, adoption of this language in the embedded world is still low and far behind other fields. We believe the culprit to be a lacking and inconsistent ecosystem. In this thesis we present EVA, our vision for a Rust-based embedded real-time operating system. Existing alternatives lack in one or more critical aspects, either by restricting language support to Rust only or by requiring specific hardware platforms to run. Our approach focuses on three main goals: portability across a wide spectrum of embedded devices; multi-language support in kernel space; support for higher level APIs, such as the Rust std library and POSIX. These last two points are critical in order to provide a viable platform for incrementally transitioning existing software to Rust. Our operating system has been benchmarked by measuring cycle counts of critical operations on an STM32 microcontroller. Different testing configurations highlight how Rust runtime checks have little impact on performance. Finally, these results are compared to a mature operating system, Miosix, showing the feasibility of Rust as an alternative to existing languages for embedded programming.| File | Dimensione | Formato | |
|---|---|---|---|
|
2026_03_Mor_Executive_Summary.pdf
accessibile in internet per tutti
Descrizione: Executive Summary
Dimensione
311.62 kB
Formato
Adobe PDF
|
311.62 kB | Adobe PDF | Visualizza/Apri |
|
2026_03_Mor_Tesi.pdf
accessibile in internet per tutti
Descrizione: Corpo della tesi
Dimensione
4 MB
Formato
Adobe PDF
|
4 MB | Adobe PDF | Visualizza/Apri |
I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.
https://hdl.handle.net/10589/251281