• Noser.com
facebook
linkedin
twitter
youtube
  • NOSERmobile
    • Android
    • HTML 5
    • Hybrid Apps
    • iOS
    • Windows Phone
  • NOSERembedded
    • Medizintechnik
  • NOSERprojektmanagement
  • NOSERtesting
  • NOSERlifecycle
    • .NET Allgemein
    • Application Lifecylce Management
    • Apps
    • Architektur
    • ASP.NET
    • Azure
    • Cleancode
    • Cloud
    • Silverlight
    • Visual Studio / Team Foundation Server
    • Windows 8
    • Windows Presentation Foundation
  • NOSERinnovation
    • Big Data
    • Cloud
    • IoT
    • Operations Research
    • Augmented Reality
    • RFID, NFC, Bluetooth LE

Embedded Rust: Einrichten vom Raspberry Pi Pico zur Entwicklung mit Rust

31. Mai 2023
julian.staffelbach@noser.com
1
Embedded, Embedded Rust, OpenOCD, Picoprobe, Raspberry Pi Pico, RP2040, Rust

Rust ist eine momentan heiss diskutierte Programmiersprache. Sie findet under anderem auch in der Embedded-Welt Anklang, denn Rust kann Performance-Mässig in etwa mit C/C++ mithalten. Nur ist sie zusätzlich modern und so konzipiert, dass Entwickler gezwungen sind, Code so sicher wie möglich zu schreiben. Beispielsweise sind unerlaubte Speicherzugriffe wesentlich unwahrscheinlicher, als bei C/C++. Nun, wenn Rust auch auf Embedded Geräten eingesetzt werden kann, wäre es da nicht schön, Rust auf einem Mikrocontroller auszuprobieren?

Ich zeige euch in diesem Artikel, wie man mit etwa 15 CHF Budget bei einem regnerischen Sonntagnachmittag Rust vollständig auf einem Mikrocontroller zum Laufen bringt, inklusive Debugging. Wenn alles einwandfrei läuft, ist mit einem Zeitaufwand von ca. 2 -3 Stunden zu rechnen. Wir verwenden dafür das Raspberry Pi Pico, das erste Mikrocontrollerboard von der Raspberry Pi Foundation, mit hauseigenem Controller, dem RP2040.

Hardware und Tools

  • Pico: Als Target wird wie oben erwähnt das Raspberry Pi Pico verwendet. Dabei handelt es sich um ein Mikrocontrollerboard, das perfekt in das Portfolio von Rapsberry Pi passt: preiswert, gut dokumentiert, grosse Community, relativ simpel, opensource. Als Debug-Probe verwenden wir: ebenfalls ein Pico. Dazu gibt es eine Firmware, die das Board mit sehr kleinem Aufwand in eine SWD Debug-Probe “verwandelt”. Wir benötigen also zwei Boards, die je ca. 5 – 7 CHF kosten.
  • Rust: Obwohl dieser Blog zeigt, wie die Boards eingerichtet werden, um Rust darauf zu entwickeln, steht die Sprache selbst nicht im Vordergrund. Es wird also nicht auf die Eigenschaften der Sprache im Embedded-Bereich eingegangen. Wenn man mehr darüber wissen will, empfiehlt sich ein Blick in “The Embedded Rust Book” (https://docs.rust-embedded.org/book/). Wir installieren Rust und verwenden Cargo als Packetmanager. Zudem binden wir den Hardware Abstraction Layer für das Pico als Paket ein und verwenden diesen in einem Beispielprojekt.
  • OpenOCD: Der grösste Teil des Zeitaufwands investieren wir in OpenOCD, eine Applikation, die für die Kommunikation zur Debug-Probe zuständig ist. OpenOCD unterstützt bis jetzt den RP2040 offiziell nicht. Deshalb machen wir den Build davon selber, Raspberry Pi stellt dazu den Quellcode zur Verfügung.
  • Die Arm GNU Toolchain wird für einzelne Build Schritte verwendet.
  • Als Entwicklungsumgebung verwenden wir Visual Studio Code.
  • Das ganze Setup ist für das Windows Betriebssystem gezeigt. Auf Linux Distributionen und macOS ist das Setup ähnlich, einzelne Schritte vereinfachen sich jedoch.

READ MORE

Tag Cloud

.NET android Angular AngularJs Arduino ASP.Net automated testing Azure Big Data C# C++ Cloud continuous integration Elm Embedded Führung gRPC Internet of Things IoT Java Javascript M2M OWASP Projektmanagement protobuf Python Raspberry Pi Reactive Programming REST Scrum Security Softwarequalität SPA Testen testing Testmanagement Teststrategie Visual Studio WebAPI windows WPF Xamarin Xamarin.Android Xamarin.Forms Xamarin.iOS

Archive

Current Posts

  • Bereit für .NET MAUI?
  • Start in die Rust-Welt auf einem Microcontroller
  • Testautomatisierung verteilter Systeme: Herausforderungen und Lösungsansätze
  • Wie oft npm-Packages updaten?
  • Unit Testing in Embedded Software Development

Last Comments

  • Noser Blog Start in die Rust-Welt auf einem Microcontroller - Noser Blog bei Embedded Rust: Einrichten vom Raspberry Pi Pico zur Entwicklung mit Rust
  • Noser Blog Wie oft npm-Packages updaten? - Noser Blog bei Asynchrone Beobachtungen und Versprechungen in Angular
  • Hans Reinsch bei Der Safety-Plan: Die wichtigsten Antworten mit Checkliste
  • George H. Barbehenn bei Modeling Optocouplers with Spice
  • Noser Blog Touch-Actions in Xamarin.Forms - Noser Blog bei Mach mehr aus Animationen in Xamarin.Forms mit SkiaSharp

Popular Posts

Xamarin.Android Code Obfuscation

6 Comments

ManuScripts: Wenn jemand eine Reise tut... Funktionale Programmierung mit Elm - Teil 1 - Aufbruch

5 Comments

ManuScripts: Wenn jemand eine Reise tut... Funktionale Programmierung mit Elm - Teil 2 - Kein Picknick

4 Comments

Contact us

  1. Name *
    * Please enter your name
  2. Email *
    * Please enter a valid email address
  3. Message *
    * Please enter message
© 2013 NOSER ENGINEERING AG. All rights reserved. Datenschutz | Cookie-Richtlinie