• IT-Karriere:
  • Services:

Ein Programmierbeispiel für eine Minimalanwendung

Hier ein kurzes Beispiel, wie eine Minimalanwendung für das STM32F3 Discovery Board aussieht. Die folgenden Crates werden benötigt:

Stellenmarkt
  1. Packsize GmbH, Herford
  2. ALDI International Services GmbH & Co. oHG, Düsseldorf, Mülheim an der Ruhr, Dortmund, Duisburg

  • panic-halt, das eine einfache Panikfunktion enthält,
  • cortex-m enthält die Low-Level Funktionen für den Cortex-M Prozessor,
  • cortex-m-rt enthält den Startup-Code und ein minimales Laufzeitsystem für Cortex-M Prozessoren,
  • f3 enthält die Board-Support Funktionen für das F3 Board.

Die Abhängigkeiten werden in der Cargo.toml-Datei beschrieben:

  1. # Cargo.toml
  2. [dependencies]
  3. panic-halt = "0.2.0"
  4. cortex-m = "0.6.3"
  5. cortex-m-rt = "0.6.3"
  6. [dependencies.f3]
  7. features = ["rt"]
  8. version = "0.6.1"

Targetabhängige Compiler- und Linker-Einstellungen lassen sich in der Cargo-Konfigurationsdatei (.cargo/config) ablegen:

  1. [target.thumbv7em-none-eabihf]
  2. runner = "gdb -q -x openocd.gdb"
  3. rustflags = [
  4. "-C", "link-arg=-Tlink.x",
  5. ]
  6. [build] target = "thumbv7em-none-eabihf"

Die einfachste Anwendung besteht aus einer Endlosschleife. Zuvor müssen wir aber noch dem Compiler sagen, dass die Rust-Standard-Bibliothek std nicht verfügbar ist und die Einstiegsfunktion mit dem Attribut "entry" versehen:

  1. #![no_main]
  2. #![no_std]
  3. extern crate panic_halt;
  4. pub use cortex_m_rt::entry;
  5. pub use f3::hal::prelude;
  6. #[entry]
  7.  
  8. fn main()-> ! {
  9. loop {
  10. }
  11. }

Das oben erwähnte Tutorial beschreibt, wie man diese Minimalanwendung schrittweise erweitert, um GPIOs und andere Peripheriebausteine anzusprechen.

Fazit

Entwickler von Embedded Systems sollten kritisch überprüfen, ob die von ihnen gewählte Programmiersprache noch angemessen ist oder ob es sich lohnt, einen Umstieg auf Rust oder Ada zu beginnen. Ich persönlich habe zwar immer gerne in C programmiert, halte die Programmiersprache aber nicht mehr für zeitgemäß. C++ enthält natürlich viele Verbesserungen, aber da C++ eine Erweiterung von C ist, wurden auch viele Schwachstellen übernommen.

Programmierung sicherer Systeme mit Rust: Eine Einführung

Laufzeitfehler in eingebetteten Steuerungssystemen zu finden, ist ein harter Job, denn in der Regel sind die Debug-Möglichkeiten schlechter als bei Programmen, die auf dem Desktop oder auf dem Server laufen, und Fehler haben besonders kritische Folgen.

Warum also nicht einmal eine neue Programmiersprache ausprobieren, anstatt tagelang nach Fehlern zu suchen?

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 Rust eingebettete Systeme entwickeln
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5


Anzeige
Spiele-Angebote
  1. (u. a. Code Vein - Deluxe Edition für 23,99€, Railway Empire - Complete Collection für 23...
  2. 9,29€
  3. 28,99€
  4. 16,49€

TomZ 27. Jan 2021 / Themenstart

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

Kommentieren


Folgen Sie uns
       


Samsung QLED 8K Q800T - Test

Samsungs preisgünstiger 8K-Fernseher hat eine tolle Auflösung, schneidet aber insgesamt nicht so gut ab.

Samsung QLED 8K Q800T - Test Video aufrufen
    •  /