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
Information about assignment

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é.

Activity during solution, consultations, communication

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

Publication activity, awards

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

Work with literature

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

Activity during solution, consultations, communication

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 Max. points
The extent to which the requirements of the assignment have been met

Evaluation level: assignment fulfilled

Extent of the technical report

Evaluation level: meets the minimum requirements only

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.

Presentation level of the technical report

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 100
Formal preparation of a technical report

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 100
Work with literature

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 100
Realisation output

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 100
Usability of results

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.

The difficulty of the assignment

Evaluation level: moderately difficult assignment

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á