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.
ING - Scuola di Ingegneria Industriale e dell'Informazione
26-mar-2026
2025/2026
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.
File allegati
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.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/251281