Im Juni, Juli und August 2024 wird das Stück „Aladin und die Wunderlampe„, für das ich den Text geschrieben und Uwe Heynitz die Musik komponiert hat, auf der malerischen Waldbühne Altenbrak im Harz (wildromantische Gegend in Deutschland) vom Fairytale . Theater Thale aufgeführt.
Ich fahre da hin und freue mich schon sehr auf den Besuch: ich hab beim Schreiben ja bestimmte Bilder im Kopf und mach es extra nicht einfach. In diesem Stück kommen sprechende Frösche, ein explodierender Kessel, ein fliegender Teppich (Orient), eine badende Prinzessin und vieles mehr – natürlich auch die Schatzhöhle – vor. Bin gespannt, wie man diese Dinge im Freien bei Tageslicht umsetzen kann. Der Regisseur Ronny Große hat bestimmt tolle Ideen!
Allen in der Gegend (vorzugsweise mit Kindern, doch auch viele Erwachsene tauchen gerne in die phantastische Märchenwelt ein) ist ein Besuch empfohlen. Karten sind im Internet-Vorverkauf erhältlich.
Gute Unterhaltung!
Foto der Uraufführung mit Jakob Ritschel, Paul Gratzer und Patrick Ritschel.
In den rund zweieinhalb Stunden werden wir erst ein bisschen über die Grundlagen sprechen. Fragen wie „Was ist ein embedded System?“, „Aus welchen Komponenten besteht ein embedded System?“, „Wie programmiert man ein embedded System und was ist eine Firmware?“ werden diskutiert.
In praktischen Übungen werden wir erst die LEDs in Betrieb nehmen, dann die Taster. Im Anschluss programmieren wir ein kleines Spielchen. Die dafür notwendigen Entwicklungsboards werden für die Dauer des Workshops zur Verfügung gestellt.
Als Programmiersprache kommt C zum Einsatz.
Dauer
2 1/2 Stunden
Ziel
Kennenlernen der modernen ESP32-C Controller mit RISC-V Prozessor und erste Schritte zur eigenen Firmware
Voraussetzungen
Eigenes Gerät (Laptop) mit Windows, Linux oder Mac OS
Espressif stellt Docker Container für die Entwicklung zur Verfügung. Die Entwicklung erfolgt unter der Verwendung von Visual Studio Code Dev Containers. Um neben dem Builden auch das Flashen und Debuggen zu ermöglichen muss zusätzliche Software installiert werden. Die folgende Anleitung basiert auf dem bestehenden Espressif-Tutorial. (letzter Zugriff: 08.01.2024)
Benötigte Software
Folgende Software muss installiert werden:
Visual Studio Code (Espressif IDF)
Docker Desktop (WSL 2)
usbipd
Visual Studio Code
Die Erweiterung Espressif IDF kann über den Marketplace in VS Code installiert werden. Eine detailierte Anleitung wird von Espressif zur Verfügung gestellt.
Docker Desktop (WSL 2)
Das Windows Subsystem for Linux (WSL) wird für Docker bzw. von Containern für den Zugriff auf lokale USB-Geräte benötigt. Microsoft bietet eine Installationsanleitung für WSLan. Für die Erstellung dieser Anleitung wurde Ubuntu 22.04 verwendet.
Siehe Docker Desktop WSL 2 backend on Windows für die Installation von Docker Desktop mit WSL. Nach einer erfolgreichen Installation von Docker/WSL2 können mit folgendem Befehl die installierten WSL Distributionen angezeigt werden:
wsl -l -v
In den Einstellungen von Docker Desktopmuss die WSL Integration für die entsprechende Distribution aktiviert werden:
usbipd
Das Tool usbipd wird verwendet um lokale USB-Geräte in WSL zur Verfügung zu stellen. (Download)
Nach der Installation steht usbipd als CLI-Tool zur Verfügung. Folgende Schritte erklären die Anbindung eines Debug Adapter an WSL.
USB-Gerät mit WSL verbinden: usbipd attach --wsl --busid=<Device-BusID>
USB-Gerät mit WSL automatisch verbinden: (Das Gerät wird beim An- und Abstecken automatisch mit WSL verbunden) usbipd attach --wsl --busid=<Device-BusID>-a
Nachdem der Debug Adapter „attached“ wurde, kann in WSL mit folgendem Befehl geprüft werden ob das Gerät erkannt wurde: dmesg | tail
Konfiguration und Entwicklung in VS Code
Damit nicht pro Projekt ein separater Container erstellt wird, können mehrere Projekte unter einem übergeordneten Ordner zusammen verwaltet werden. In folgendem Beispiel ist dies der Ordner WS_C_esp_vscode mit dem Projekt blink.
Der Ordner .devcontainer kann in VS Code von der Espressif Erweiterung generiert werden:
Im Ordner .devcontainer befindet sich zwei Dateien:
devcontainer.json
Dockerfile
Update: Version 1.7.0 der VS Code ESP IDF Erweiterung behebt die folgenden Fehler. Wenn die aktuelle Version der Erweiterung verwendet wird geht es unter Starten des Container weiter.
In devcontainer.json wird das zu verwendende Projekt und der Python-Pfad des Docker Containers konfiguriert. Das Dockerfile definiert die Installation des Containers. Zum Zeitpunkt des erstellen dieser Anleitung (IDF Version 5.1.2) müssen diese Dateien angepasst werden. Die angepassten Dateien mit Kommentaren stehen hier zum Download zur Verfügung:
Werden die Anpassungen nicht durchgeführt, dann werden folgenden Fehler im Container auftreten, da die Python-Installation nicht gefunden wird bzw. der Benutzer nicht über Zugriffsrechte auf das USB-Gerät verfügt:
/opt/esp/python_env/idf5.1_py3.8_env/bin/python: No such file or directory
Error: libusb_open() failed with LIBUSB_ERROR_ACCESS
Starten des Container
Der Container wird über die Kommando-Palette gestartet:
Das initiale Starten des Container dauert länger, da das Container-Image heruntergeladen werden muss. Der Fortschritt des Startprozess kann per Klick auf „show log“ angezeigt werden:
Nachfolgende Starts werden schneller durchgeführt. Da die Espressif Erweiterung die Microsoft C++ Erweiterung benötigt muss der Container nach dem ersten Start geschlossen und erneut geöffnet werden.
Installation Python Packages
Zum Zeitpunkt der Erstellung dieser Anleitung (IDF V5.1.2) werden die benötigten Python Packages für das Debuggen nicht direkt beim Setup des Containers installiert. Dies muss manuell im Container erfolgen:
Wenn die Python Packages nicht installiert werden kommt es beim Debuggen zu folgendem Fehler: ModuleNotFoundError: No module named 'esp_debug_backend'
Builden, Flashen und Debuggen
Der USB-Port und das zu verwendende Gerät kann direkt in der Espressif Erweiterung eingestellt werden:
Nun kann, unter Verwendung der Espressif Erweiterung, ein Build ausgeführt werden. Auch das Flashen per JTAG sowie das Debugging ist nun direkt im Container möglich.
Autovervollständigung, highlighting und Code-Navigierung
Unter Umständen kommt es zu Problemen mit der Autovervollständigung oder mit der Navigierung im Code. Es gibt es zwei Möglichkeiten um dieses Problem zu beheben:
Anpassen der Datei c_cpp_properties.json im Ordner .vscode Hierbei wird die Datei um folgende Zeile ergänzt: "compileCommands": "${workspaceFolder}/build/compile_commands.json" Achtung: Die Datei compile_commands.json existiert erst nach einem erfolgreichen Build
Anpassen der Datei settings.jsonim Ordner .vscode Hierbei wird die Datei um folgende Zeile ergänzt: "C_Cpp.intelliSenseEngine": "Tag Parser"
Nach den drei Kindertheaterstücken „Aladin“, „Robin Hood“ und „Der Schatz des Pharao“, die beim Cantus Verlag erschienen sind, schreibe ich nun ein Fachbuch. Unter dem Arbeitstitel „Embedded Systems – Auf den Punkt gebracht“ soll eine Mischung aus Theorie und Praxis für Anwender und Studierende erscheinen.
Ich bin ordentlich dran, und wenn alles klappt, gibt’s das Buch im Herbst im Buchhandel! Ich hoffe, Ihr freut Euch auch schon drauf! Natürlich schaffe ich das nicht alleine. Mein Supportteam ist kompetent und motiviert, was ja vielversprechend ist 😉
Danke schon mal an Regine, Wolfgang, Franz, Johannes und natürlich besonders an Babsi, Johanna und Jakob, die mir die viele Zeit einräumen, das zu machen!
Cookie-Zustimmung verwalten
Um dir ein optimales Erlebnis zu bieten, verwenden wir Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wenn du diesen Technologien zustimmst, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn du deine Zustimmung nicht erteilst oder zurückziehst, können bestimmte Merkmale und Funktionen beeinträchtigt werden.
Funktional
Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt.Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.