• IT-Karriere:
  • Services:

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. über duerenhoff GmbH, Gießen
  2. über Hays AG, Berlin

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):

  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.  


Anzeige
Hardware-Angebote
  1. (u. a. ASUS Radeon RX 6900 XT TUF GAMING OC 16GB für 1.729€)
  2. 499,99€

TomZ 27. Jan 2021 / Themenstart

es ist LLVM. Für GCC gibt es nur etwas in der frühen Entwicklung.

Kommentieren


Folgen Sie uns
       


Gocycle GX - Test

Das Gocycle GX hat einen recht speziellen Pedelec-Sound, aber dafür viele Vorteile.

Gocycle GX - Test Video aufrufen
    •  /