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:
- 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:
# Cargo.toml [dependencies] panic-halt = "0.2.0" cortex-m = "0.6.3" cortex-m-rt = "0.6.3" [dependencies.f3] features = ["rt"] version = "0.6.1"
Targetabhängige Compiler- und Linker-Einstellungen lassen sich in der Cargo-Konfigurationsdatei (.cargo/config) ablegen:
[target.thumbv7em-none-eabihf] runner = "gdb -q -x openocd.gdb" rustflags = [ "-C", "link-arg=-Tlink.x", ] [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:
#![no_main] #![no_std] extern crate panic_halt; pub use cortex_m_rt::entry; pub use f3::hal::prelude; #[entry] fn main()-> ! { loop { } }
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.
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?
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 |
es ist LLVM. Für GCC gibt es nur etwas in der frühen Entwicklung.
Kommentieren