Currently, embedded systems software is still predominantly written in C. However, the resulting code is often hard to read and, therefore, to maintain. Additionally, given its very low-level nature, it facilitate the introduction of security errors. This thesis aims to illustrate methods and techniques for the use of Rust for the development of those systems, in order to minimize errors or rather identify them before compilation. The use case is the successive-approximation register (SAR) analog to digital conversion module of the Infineon Aurix TC375 microcontroller. Development started by the study of an existing C implementation, in order to identify their core flaws, and then by employing design patterns useful to meet the needs of systems that cannot afford risks. The implementation has highlighted how the adoption of specific techniques and design patterns, allow making the system safe and easy to use, by almost entirely removing the need to know every detail of the microcontroller. Even where certain execution states must be handled at run time, this new development model offers much more guarantees for reliability and compliance.

Allo stato, il software dei sistemi di controllo è ancora prevalentemente sviluppato in linguaggio C. Tuttavia, il codice che ne deriva è spesso difficile da leggere e quindi anche da mantenere. Vista anche la sua natura estremamente versatile, facilita l’introduzione di errori di sicurezza. Questa tesi si propone di illustrare metodi e tecniche per l’uso di Rust per lo sviluppo di quei sistemi, nell’intento di minimizzare gli errori o meglio, identificarli, prima ancora della compilazione. Il caso preso in esame è stato il driver per il modulo del microcontrollore Infineon Aurix TC375, dedicato alle conversioni da segnali analogici a digitali ad approssimazioni successive (SAR). Lo sviluppo è partito dallo studio di implementazioni esistenti, scritte in C, in modo da identificarne i principali problemi, e poi dall’uso di design pattern utili a rispondere alle esigenze di sistemi che hanno pochissimo margine di fallimento. L'implementazione ha evidenziato come l'adozione di determinate tecniche e pattern di progettazione, riescono a rendere il sistema sicuro e semplice da usare, rimuovendo quasi completamente la necessità di conoscere ogni dettaglio del microcontrollore. Anche laddove certi stati di esecuzione debbano necessariamente essere gestiti a tempo d’esecuzione, questo nuovo modello di sviluppo offre molte più garanzie riguardo all’affidabilità e conformità del sistema.

Modernizzazione delle Applicazioni dei Sistemi di Controllo

RANGO, MATTEO
2023/2024

Abstract

Currently, embedded systems software is still predominantly written in C. However, the resulting code is often hard to read and, therefore, to maintain. Additionally, given its very low-level nature, it facilitate the introduction of security errors. This thesis aims to illustrate methods and techniques for the use of Rust for the development of those systems, in order to minimize errors or rather identify them before compilation. The use case is the successive-approximation register (SAR) analog to digital conversion module of the Infineon Aurix TC375 microcontroller. Development started by the study of an existing C implementation, in order to identify their core flaws, and then by employing design patterns useful to meet the needs of systems that cannot afford risks. The implementation has highlighted how the adoption of specific techniques and design patterns, allow making the system safe and easy to use, by almost entirely removing the need to know every detail of the microcontroller. Even where certain execution states must be handled at run time, this new development model offers much more guarantees for reliability and compliance.
2023
Revamping the Architecture of Embedded Software
Allo stato, il software dei sistemi di controllo è ancora prevalentemente sviluppato in linguaggio C. Tuttavia, il codice che ne deriva è spesso difficile da leggere e quindi anche da mantenere. Vista anche la sua natura estremamente versatile, facilita l’introduzione di errori di sicurezza. Questa tesi si propone di illustrare metodi e tecniche per l’uso di Rust per lo sviluppo di quei sistemi, nell’intento di minimizzare gli errori o meglio, identificarli, prima ancora della compilazione. Il caso preso in esame è stato il driver per il modulo del microcontrollore Infineon Aurix TC375, dedicato alle conversioni da segnali analogici a digitali ad approssimazioni successive (SAR). Lo sviluppo è partito dallo studio di implementazioni esistenti, scritte in C, in modo da identificarne i principali problemi, e poi dall’uso di design pattern utili a rispondere alle esigenze di sistemi che hanno pochissimo margine di fallimento. L'implementazione ha evidenziato come l'adozione di determinate tecniche e pattern di progettazione, riescono a rendere il sistema sicuro e semplice da usare, rimuovendo quasi completamente la necessità di conoscere ogni dettaglio del microcontrollore. Anche laddove certi stati di esecuzione debbano necessariamente essere gestiti a tempo d’esecuzione, questo nuovo modello di sviluppo offre molte più garanzie riguardo all’affidabilità e conformità del sistema.
Architettura
Microcontrollori
Rust
Embedded
Driver
File in questo prodotto:
File Dimensione Formato  
Rango_Matteo.pdf

accesso aperto

Dimensione 5.76 MB
Formato Adobe PDF
5.76 MB Adobe PDF Visualizza/Apri

The text of this website © Università degli studi di Padova. Full Text are published under a non-exclusive license. Metadata are under a CC0 License

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