Master's Thesis

Arduino Software Development in Rust Language

Final Thesis 1.81 MB

Author of thesis: Ing. Michal Žatečka

Acad. year: 2025/2026

Supervisor: RNDr. Marek Rychlý, Ph.D.

Reviewer: Ing. Zbyněk Křivka, Ph.D.

Abstract:

Embedded systems development has traditionally relied on C and C++ due to their performance and low-level hardware control. However, these languages lack memory-safety guarantees, leaving systems potentially vulnerable to critical errors and security exploits. The Rust programming language offers a modern alternative, providing compile-time memory safety without compromising performance. This work explores the options of adopting Rust for the AVR architecture, specifically for Arduino development. It analyzes existing Rust embedded abstraction layers and compares them against the traditional C/C++ approach. Based on this analysis, this thesis designs and implements a new CLI tool and its Visual Studio Code extension. This tool enables users to choose between a pure Rust approach or a hybrid that integrates the existing C++ Arduino framework. The proposed design aims to lower the barrier to entry into the Rust embedded world while maintaining the flexibility required for legacy integration.

Keywords:

Rust, Embedded systems, Visual Studio Code, CLI, Cargo, C, C++, PlatformIO

Date of defence

24.06.2026

Result of the defence

Defended (thesis was successfully defended)

znamkaCznamka

Grading

C

Process of defence

Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázky oponenta a na další otázky přítomných. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm C.

Topics for thesis defence

  1. V textu jsem nenašel přehlednou informaci o tom, co z Arduino Frameworku není podporováno v pRustIO.
  2. Na ukázkách kódu v kapitole 3 je vidět téměř nulová režie na různé abstrakce hardware, což nepůsobí důvěryhodně. Můžete to lépe zdůvodnit? Zaměřit se můžete například na obr. 3.3 a popis pod tímto obrázkem.
  3. Je možné s využitím vašich nástrojů ladit nasazené programy a pomáhá s tím některý váš nástroj?
  4. Můžete shrnout jsou hlavní výhody psaní programů pro Arduino v jazyku Rust?
  5. Na jakých scénářích jste váš systém testoval? Proč čeho jste zvolil právě tyto scénáře?

Language of thesis

English

Faculty

Department

Study programme

Information Technology and Artificial Intelligence (MITAI)

Specialization

Software Engineering (NSEN)

Composition of Committee

doc. Ing. Petr Matoušek, Ph.D., M.A. (předseda)
doc. RNDr. Jitka Kreslíková, CSc. (místopředseda)
doc. Ing. Vladimír Janoušek, Ph.D. (člen)
Ing. Libor Polčák, Ph.D. (člen)
Ing. Jan Pluskal, Ph.D. (člen)
Ing. Matěj Grégr, Ph.D. (člen)

Supervisor’s report
RNDr. Marek Rychlý, Ph.D.

Přístup studenta k řešení práce považuji za nadstandardní a navrhuji hodnotit práci stupněm velmi dobře (B).

Evaluation criteria Verbal classification
Informace k zadání

Cílem práce bylo umožnit vývoj pro platformu Arduino v jazyce Rust s využitím systému PlatformIO pro jazyk C/C++. Právě propojení uvedených technologií s přihlédnutím k efektivitě vývoje i výsledných binárních obrazů vyvíjeného softwaru bylo obtížným aspektem práce. Zadání považuji za splněné.

Aktivita při dokončování

Práce byla dokončena včas a její výsledná podoba byla rámcově konzultována.

Publikační činnost, ocenění

Student se s prací účastnil soutěže Excel@FIT. Výsledky byly zveřejněny jako open source.

Práce s literaturou

Při získávání studijních materiálů postupoval student samostatně.

Aktivita během řešení, konzultace, komunikace

Student svůj postup, případné problémy i průběžné výsledky pravidelně konzultoval. Na konzultacích byl připraven a dohodnuté termíny dodržel.

Points proposed by supervisor: 85

Grade proposed by supervisor: B

Reviewer’s report
Ing. Zbyněk Křivka, Ph.D.

Vytvoření nástrojů pro vývoj v Rust pro vestavěná zařízení velmi oceňuji a přišlo mi, že mohl student v textu svou práci lépe "prodat" a lépe zasadit do širšího kontextu včetně případné kritiky či chvály vlastního řešení. Hodnotím lepším stupněm C.

Evaluation criteria Verbal classification Points
Rozsah splnění požadavků zadání

Evaluation level: zadání splněno

Rozsah technické zprávy

Evaluation level: splňuje pouze minimální požadavky

Rozsah práce je nepatrně nad minimálními požadavky (cca 60 normostran) a obsahuje také několik autorských diagramů pro přístupnější popis návrhu.

Prezentační úroveň technické zprávy

Text je logicky strukturován, ale občas se najdou nějaké záludnosti jako například odkazování se uvnitř sekce na tutéž sekci pomocí číselného odkazu (např. sekce 2.1 a 3.3). Dále mi chybělo více detailů v sekci 2.6. Popis pod obr. 3.3 a samotný obr. 3.3 se mi zdají nekonzistentní. 

Všeobecně je text psán docela stroze a občas by bylo vhodné napsat i důvody, proč něco nevzniklo, nebo vzniknout nemohlo.

76
Formální úprava technické zprávy

V textu byly drobné systematické prohřešky jako psaní určitého členu před vlastními jmény (např. the TypeState Pattern, the chapter 3), používání zkrácených hovorových výrazů (např. can't, it's), několik překlepů. 

78
Práce s literaturou

Jednak pramenů není mnoho, což může být dáno i okrajovým zaměřením práce. Co je horší, nedošlo ke kontrole vysázení pramenů z BibTeXu, takže jsou v sekci Bibliography chyby v autorech způsobené nevhodným zkrácením částí jmen a také ve způsobu psaní velkých písmen v názvech (inkonzistence u [9] a [12]).

63
Realizační výstup

Zdrojový text je dle zadání zveřejněn na Github, což lze zjistit dle přiloženého README, ale je škoda, že v licenčních souborech, ani v záhlaví zdrojových souborů není jasně uvedené autorství studenta. Předpokládám tedy, že je student autorem všech zdrojových souborů (pár výjimek je dle záhlaví generováno). Kód je vhodně komentován i strukturován.

80
Využitelnost výsledků

Student oponentovi demonstroval překlad jednoduché aplikace v Rustu (čidlo teploty a vlhkosti) a její nahrátí do desky. Vše pěkně fungovalo a využitelnost je tedy reálná, ale otázkou je, zda bude vše takto bez problémů i pro složitější aplikace, kde se nyní často naráží na chybějící ovladače apod.

Náročnost zadání

Evaluation level: průměrně obtížné zadání

Student se musel seznámit se zavedeným způsobem vývoje pro Arduino i s novým způsobem vývoje pomocí jazyka Rust pro Arduino, kde je ještě řada cestiček neprošlapaných. 

Topics for thesis defence:
  1. V textu jsem nenašel přehlednou informaci o tom, co z Arduino Frameworku není podporováno v pRustIO.
  2. Na ukázkách kódu v kapitole 3 je vidět téměř nulová režie na různé abstrakce hardware, což nepůsobí důvěryhodně. Můžete to lépe zdůvodnit? Zaměřit se můžete například na obr. 3.3 a popis pod tímto obrázkem.
  3. Je možné s využitím vašich nástrojů ladit nasazené programy a pomáhá s tím některý váš nástroj?
Points proposed by reviewer: 77

Grade proposed by reviewer: C

Responsibility: Mgr. et Mgr. Hana Odstrčilová