Das Programmieren des Mikrocontrollers Pico erfordert mehrere, voneinander unabhängige Arbeitsschritte. Die Toolchain VSC fasst sie zusammen.
Ob Großrechner oder Kleinstcomputer: Eine CPU führt nur Befehle aus, die sie auch kennt. Auf der CPU-Ebene handelt es sich dabei um Maschinenbefehle, also letztlich eine für die meisten Menschen unlesbare Abfolge von Nullen und Einsen.
Von den allerersten Anfängen der Computerei einmal abgesehen, als die Experten den Maschinencode tatsächlich von Hand schreiben mussten – das macht heute niemand mehr. Programmierer schreiben Quellcode, den ein Compiler dann in den für die CPU lesbaren Maschinencode umwandelt.
Bei Mikrocontrollern (MCU, Micro Controller Unit) wie dem Pico kommt hinzu, dass der Quell- und Maschinencode auf einem Rechner entsteht, der das fertige Programm nicht ausführen kann. Es gilt also, das Binary erst auf das Ziel (Target) zu kopieren, was man im allgemeinen Sprachgebrauch auch flashen nennt. Viele MCUs benötigen dafür spezielle Adapter, beim Pico gestaltet sich die Sache dagegen sehr einfach.
Für den ganzen Prozess vom Quellcode bis zum lauffähigen Pico-Code brauchen Sie nichtsdestotrotz eine ganze Reihe von Programmen. Man spricht hier von einer Toolchain, also einer Werkzeugkette. Einzige Ausnahme: Sie programmieren in Python. Dann genügt ein beliebiger Editor (siehe Kasten “Python für den Pico”).
In unserem Workshop geht es aber um die Programmierung in C, das gegenüber Python immer dann punktet, wenn es um höchste Performance oder größtmögliche Kontrolle der Ressourcen geht.
Python für den Pico
Auf dem Pico startet immer nur ein Programm, etwa ein Python-Interpreter wie MicroPython oder CircuitPython. Letzterer ist etwas einfacher gestrickt, verfügt aber über mehr Hardwarebibliotheken und unterstützt mehr Plattformen. Der Vorteil von Python: Sie müssen den Interpreter nur einmal auf dem Pico installieren. Danach führt er nicht nur Python-Skripte aus, sondern emuliert auch eine kleine Festplatte. Dank dieser gestaltet sich das Kopieren neuer Skripte auf den Pico einfach, denn Sie müssen das Board dafür nicht mehr vom Strom trennen und mit dem Bootsel-Knopf hantieren. Den Python-Code erstellen Sie mit einem Editor Ihrer Wahl. Es gibt spezialisierte Varianten wie Thonny oder Mu, die den Pico direkt unterstützen und den Kopiervorgang vereinfachen. Außerdem zeigen sie die Ausgabe der seriellen Schnittstelle des Pico an.
Integrierte Entwicklung
Als Entwickler hantieren Sie üblicherweise nicht direkt mit vielen Programmen, sondern nutzen eine integrierte Entwicklungsumgebung wie die Arduino IDE, die inzwischen viele verschiedene Mikrocontroller unterstützt. In der Betaphase befindet sich aktuell die Version 2.x, diese soll später auch den Pico unterstützen.
Die Raspberry Pi Foundation entschied sich aber für einen anderen Ansatz. Die Grundlage für die Pico-Entwicklung soll der Editor Visual Studio Code [1] bilden, kurz auch VSC genannt.
VSC hat technisch nichts mit der bekannten Entwicklungsumgebung Visual Studio von Microsoft zu tun. VSC wurde von Anfang an komplett als Open Source unter Führung von Microsoft entwickelt und gilt aktuell als der Goldstandard für erweiterbare Editoren: ein Tool von Programmierern für Programmierer.
Das sehr schlanke VSC lädt Zusatzfunktionen über Erweiterungen (Plugins) mit wenigen Klicks nach. So expandiert der Editor zu einer kompletten Entwicklungsumgebung, die im Hintergrund Compiler, Make-Utilities und Flash-Programme einbindet. Als Arduino-IDE-Nutzer müssen Sie sich zwar etwas umgewöhnen, dafür bietet VSC deutlich mehr Funktionen.
Einfache Installation
Die Tabelle “Werkzeuge” fasst alle Bausteine der Toolchain zusammen. Aktuell finden sich nur Teile davon im normalen Raspbian-Repository, andere müssen Sie per Git holen und dann selbst kompilieren. Das klingt zwar sehr komplex, doch zum Glück gibt es ein Installationsskript [2], das die grundlegende Arbeit erledigt. Bei Erscheinen dieses Artikels müsste eine dann aktualisierte Version neben dem RasPi selbst auch andere Debian-basierte Linux-Varianten und sogar Apple unterstützen.
|
Werkzeug |
Name |
Quelle |
Befehl |
Anmerkung |
|---|---|---|---|---|
|
Editor |
VSCode |
Repository |
|
Zusätzlich diverse Plugins, unter anderem für CMake. |
|
Header und Bibliotheken |
Pico-SDK |
Git |
|
– |
|
Cross-Compiler |
GCC |
Repository |
|
– |
|
Make-Generator |
CMake |
Repository |
|
– |
|
Debugger |
Gdb |
Repository |
|
– |
|
Debug-Interface |
OpenOCD |
Git |
|
– |
|
Kopiertool |
OpenOCD |
Git |
|
Kopiert Programme vom Pi4 zum Pico. |
|
Bootloader |
Elf2uf2 |
– |
– |
Teil des SDK. |
|
Beispiele |
diverse |
Git |
|
– |
|
Weitere Tools |
Automake, Autoconf, Build-essential |
Repository |
|
Für den Bau der Tools. |
|
Info-Tool |
Picotool |
Git |
|
Zeigt Infos zum aktuell installierten Programm auf dem Pico an. |
|
Pico-Firmware |
Picoprobe |
Git |
|
Wenn ein zweiter Pico als Programmierschnittstelle für Linux-, Windows- oder Apple-Rechner dient. |
Mit den meisten der Programme kommen Sie später sowieso nicht mehr direkt in Berührung. Als Entwicklungsmaschine dient idealerweise ein RasPi 4; wer auf Linux, Apple oder Windows entwickelt, hat etwas mehr Arbeit. Ein gutes Einführungsdokument [3] hilft aber beim Setup.






