© StonePictures/Shutterstock.com
Embedded Rust in einfachen Schritten

Mikrocontroller mit Rust programmieren


Die Programmiersprache Rust wird zunehmend interessanter, auch im Bereich der eingebetteten Systeme. Dieser Artikel ist eine kurze Einführung in Rust und erklärt, warum es für die Programmierung von Mikrocontrollern geeignet ist. Außerdem wird ein kurzes Rust-Programm vorgestellt, das auf einem Mikrocontroller ausgeführt werden kann.

Rauchmelder, Haushaltsgeräte, Werkzeugmaschinen, Autos: Mikrocontroller sind überall. Die winzigen Computer werden überall dort eingesetzt, wo aufgrund des verfügbaren Platzes, des Budgets oder der Anforderungen an den Energieverbrauch die Verwendung eines „richtigen“ Computers nicht möglich oder praktikabel ist. Oft laufen Mikrocontroller ohne Betriebssystem und müssen in Echtzeit auf sich verändernde Umgebungseinflüsse reagieren. Betrachtet man dazu noch die eingeschränkten Ressourcen – nur wenige kB Arbeitsspeicher sind üblich – wird schnell klar, dass nicht jede Sprache für die Programmierung dieser Geräte geeignet ist. Der Platzhirsch in diesem Bereich ist C, aber auch C++, Assembler und einige andere Programmiersprachen kommen zum Einsatz. In den letzten Jahren hat sich mit Rust ein weiterer idealer Kandidat für die Programmierung von Mikrocontrollern positioniert. Rust ist eine recht junge Programmiersprache, die Version 1.0 wurde 2015 veröffentlicht. Zunächst von Mozilla Research für die Verwendung im experimentellen Browser Servo entwickelt, wird Rust inzwischen von einer weltweiten Entwicklercommunity getragen und in zahlreichen Unternehmen (darunter Google, Microsoft und Facebook) produktiv eingesetzt.

Warum Rust?

Rust wirbt auf seiner Website [1] mit Produktivität, Zuverlässigkeit und Performance. Die Produktivität von Rust ist auf sein modernes Tooling und das gut durchdachte Design der Sprache zurückzuführen. Rust profitiert davon, dass von den Erfolgen und Fehlern der Vorgänger gelernt werden konnte. Allerdings macht der Compiler – im Dienst der Zuverlässigkeit – dem Entwickler oft das Leben schwer, indem er mit zahlreichen Fehlermeldungen auf mögliche Probleme hinweist. Da dies für Anfänger oft eine hohe Hürde beim Erlernen von Rust darstellt, sei allen Interessierten die ausführliche Lektüre der exzellenten (englischsprachen) Dokumentation empfohlen [2]. Während viele moderne Sprachen mit Just-in-Time-Compilern und optimierten Garbage-Kollektoren eine beeindruckende Performance in Form von hohen Durchsätzen erreichen, kommt Rust dank seines intelligenten Compilers ohne eine komplexe Laufzeitumgebung aus. Das resultiert in einem geringeren Speicherverbrauch und beständigen Reaktionszeiten. Für den Einsatz auf Mikrocontrollern ist das von höchster Bedeutung. Insgesamt ist Rust daher, trotz moderner Features, hohem Abstraktionsniveau und guter Zuverlässigkeit, in seinem Laufzeitverhalten mit C und C++ vergleichbar. Das macht es zur echten Alternative zu diesen Sprachen, auch und gerade auf Mikrocontrollern.

Hardware

Mikrocontroller gibt es in einer Vielzahl verschiedener Variationen, die sich unter anderem in ihren Fähigkeiten und der verwendeten Prozessorarchitektur unterscheiden. Weitverbreitet sind Mikrocontroller von Typ ARM Cortex-M.

ARM Cortex-M Mikrocontroller werden von vielen verschiedenen Herstellern angeboten, basieren aber alle auf denselben, vom Unternehmen ARM lizenzierten Kernen. Auch wenn derzeit keiner der Hersteller von Cortex-M-Mikrocontrollern Rust offiziell unterstützt, kann die Sprache – dank der Bemühungen der Open-Source-Community – auf vielen Modellen verwendet werden. Im Folgenden betrachten wir die Verwendung von Rust auf einem LPC845 von NXP etwas näher [3]. Für den LPC845 ist in Form des LPC845-BRK ein kostengünstiges Entwicklungsboard [4]. Darüber hinaus gibt es bereits Rust-Bibliotheken, die viele Funktionen des LPC845 unterstützen.

Schritt 1: Installation

Bevor wir ein Rust-Programm schreiben und auf dem LPC845-BRK ausführen können, müssen wir zuerst die dafür benötigte Software installieren. Zunächst brauchen wir zwei Standardprogramme: einen Texteditor (oder eine IDE) zum Bearbeiten der Dateien sowie ein Terminal zum Ausführen diverser Kommandos. Die Wahl bleibt hier dem Leser überlassen, aber unter Linux, macOS und Windows ist Visual Studio Code mit der rust-analyzer Extension als IDE sicherlich keine schlechte Wahl. Als Nächstes wird Rustup benötigt, das auf der offiziellen Rust-Website heruntergeladen werden kann [5]. Rustup ermöglicht die Installation und Verwaltung...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang