Mit Rust eingebettete Systeme entwickeln

Das Interesse an Rust ist momentan extrem groß und das Angebot explodiert geradezu. Sowohl für den Raspberry Pi als auch für Bare-Metal-Anwendungen gibt es eine sehr aktive Community.

Rust auf dem Raspberry Pi

Stellenmarkt
  1. Key-User Quadient Inspire / Fachinformatiker (m/w/d) im Bereich Output Management
    Lowell Financial Services GmbH, Gelsenkirchen
  2. Senior iOS-Entwickler (m/w/d)
    intive GmbH, Regensburg, München
Detailsuche

Die Installation von Rust auf dem Raspberry Pi kann zwar wie gewohnt mit apt-get erfolgen, aber empfehlenswerter ist die Benutzung von rustup. Dies ist das Installationsprogramm für Rust, Cargo und sonstige Rust-Werkzeuge und kann von der Website rustup.rs heruntergeladen werden.

Auf crates.io lassen sich unzählige Crates für die Entwicklung auf dem Raspberry finden, um damit die gängigsten Sensoren, Displays und HATs anzusteuern. Ein erstes Projekt lässt sich auch für Anfänger sehr schnell realisieren.

Dafür zunächst auf dem Raspberry Pi ein neues Projekt anlegen (hier mit dem Namen my_project):

Golem Akademie
  1. Einführung in die Programmierung mit Rust
    21.-25. März 2022, online
  2. Netzwerktechnik Kompaktkurs
    8.-12. November 2021, online
  3. Hands-on C# Programmierung
    28.-29. Oktober 2021, online
Weitere IT-Trainings

  1. $ cargo new my_project
  2. $ cd my_project

Als nächstes in der Cargo.toml Datei die Abhängigkeiten zu den gewählten Crates hinzufügen. Um auf die GPIOs des Raspberry zuzugreifen, kann man beispielsweise das Crate "rust_gpiozero" benutzen. Die Webseite enthält auch einfache Beispiele für die Benutzung der Bibliothek.

  1. # Cargo.toml
  2. [package]
  3. name = "my_project"
  4. version = "0.1.0"
  5. authors = ["pi"]
  6. [dependencies]
  7. rust_gpiozero = "0.2.0"

Als nächsten Schritt in main.rs die Funktionalität implementieren. Hier zum Beispiel wird über GPIO 17 eine LED fünfmal ein- und wieder ausgeschaltet:

  1. // main.rs
  2. extern crate rust_gpiozero;
  3. use rust_gpiozero::*;
  4. use std::thread::sleep;
  5. use std::time::Duration;
  6.  
  7. fn main() {
  8. let led = LED::new(17); // GPIO 17
  9. for _ in 0..5 {
  10. led.on();
  11. sleep(Duration::from_secs(1));
  12. led.off();
  13. sleep(Duration::from_secs(1));
  14. }
  15. }

Zum Schluss mit cargo build die Anwendung bauen und mit cargo run die Anwendung laufen lassen. Übrigens muss man sich nicht darum kümmern, das Crate "rust_gpiozero" herunterzuladen. Das erledigt Cargo selbst.

Bare Metal Rust

Um Rust-Programme ohne jegliches Betriebssystem auf einer Embedded-Hardware-Plattform laufen zu lassen, braucht man prinzipiell die folgenden Komponenten:

  • einen Cross Compiler,
  • eine Laufzeitumgebung für den gewünschten Ziel-Prozessor,
  • ein Board Support Package (BSP) für das Board, auf dem die Anwendung laufen soll. Das BSP enthält alle wesentlichen Treiber und Schnittstellen für den Microcontroller und das Board und dient als Schnittstelle entweder zwischen Hardware und Betriebssystem oder auch direkt zwischen der Hardware und der Anwendung.
  • Viele BSPs benutzen einen Hardware Abstraction Layer (HAL), also eine Menge von abstrakten Schnittstellen für allgemeine Prozessor-Peripherien, wie zum Beispiel GPIOs oder SPI. Der Vorteil von HALs ist, dass Code, der ausschließlich HAL-Schnittstellen benutzt, ohne Anpassungen auf verschiedenen Targets lauffähig ist.
  • Code für den Panic Handler, der im Fehlerfall aufgerufen wird,
  • optional: Unterstützung für Semihosting, also die Ausgabe von Debug-Meldungen vom Target an das Hostsystem.

Da der Rust-Compiler auf dem GCC-Compiler-System aufbaut, gibt es eine große Anzahl von unterstützten Zielplattformen. Die komplette Liste ist in der rustc-Dokumentation enthalten. Laufzeitumgebungen und BSPs finden sich auf der Github-Seite der Embedded Rust Community.

Programmierung sicherer Systeme mit Rust: Eine Einführung

Aktuell werden sowohl ARM als auch RISC-V Architekturen sowie die gängigen Evaluation Boards unterstützt . Die HAL für Embedded Rust ist sehr umfangreich und nähert sich der 1.0.0 Version (siehe https://crates.io/crates/embedded-hal).

Es gibt zwei sehr empfehlenswerte Tutorials für den Einstieg in die Entwicklung von Embedded Software mit Rust:

  • Das Discovery Book beschreibt detailliert die Entwicklung von Anwendungen für das STM32F3 Discovery Board.
  • Das Microrust-Buch enthält viele Experimente für die micro:bit Hardware.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Mit Ada eingebettete Systeme entwickelnEin Programmierbeispiel für eine Minimalanwendung 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7.  


Aktuell auf der Startseite von Golem.de
M1 Pro/Max
Dieses Apple Silicon ist gigantisch

Egal ob AMD-, Intel- oder Nvidia-Hardware: Mit dem M1 Pro und dem M1 Max schickt sich Apple an, die versammelte Konkurrenz zu düpieren.
Eine Analyse von Marc Sauter

M1 Pro/Max: Dieses Apple Silicon ist gigantisch
Artikel
  1. Werbeversprechen kassiert: Teslas Solarschindeln sind doch nicht so stabil
    Werbeversprechen kassiert
    Teslas Solarschindeln sind doch nicht so stabil

    Tesla hat die Website zu seinen Solarschindeln aktualisiert. Die Behauptung, dass diese dreimal stärker als Standardschindeln sind, wurde fallengelassen.

  2. Medion Akoya P53004: Aldi-PC mit Ryzen und Windows 11 kostet 550 Euro
    Medion Akoya P53004
    Aldi-PC mit Ryzen und Windows 11 kostet 550 Euro

    Sechs Kerne und viel RAM: Der Akoya P53004 ist ein sehr gut ausgestatteter Aldi-PC, der bereits mit Windows 11 auf der SSD ausgeliefert wird.

  3. Displayreinigung: Apple bringt 25-Euro-Poliertuch mit Kompatibilitätsliste
    Displayreinigung
    Apple bringt 25-Euro-Poliertuch mit Kompatibilitätsliste

    Fast unbemerkt hat Apple den eigentlichen Star des Events von Mitte Oktober 2021 in seinen Onlineshop aufgenommen: ein Poliertuch.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • Cyber Week: Bis zu 16% auf SSDs & RAM von Adata & bis zu 30% auf Alternate • 3 Spiele für 49€: PC, PS5 uvm. • Switch OLED 369,99€ • 6 Blu-rays für 40€ • MSI 27" Curved WQHD 165Hz HDR 479€ • Chromebooks zu Bestpreisen • Alternate (u. a. Team Group PCIe-4.0-SSD 1TB 152,90€) [Werbung]
    •  /