Visual Studio Code: Installation und Konfiguration für ESP IDF

Mikrocontroller-Programmierung: Manchmal muss es mehr sein, als nur die Arduino IDE. Wir zeigen, wie man Visual Studio Code zusammen mit dem ESP32 nutzt.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 9 Min.
Von
  • Josef Müller
Inhaltsverzeichnis

Die Entwicklungsumgebung zum Programmieren und Übersetzen des C/C++-Quellcodes für unsere ESP32-Firmware für den 3. Teil "KI für den ESP32" in der Make 2/22 benötigt einen Editor und einen Compiler. Idealerweise übernimmt der Editor auch die Steuerung des Compilers und Linkers. Eine populäre Lösung ist der erweiterungsfähige Editor Visual Studio Code von Microsoft, kurz VSCode oder nur VSC.

Er ist kostenlos und es gibt viele Plug-ins zur Integration weiterer Funktionen, etwa Schnittstellen zu Compilern, Skriptsprachen, Git(hub) und vieles mehr. Auch Espressif bietet ein offizielles Plug-in für die Einbindung und Ansteuerung des ESP-IDF-Compilers für den ESP32 an. Im Folgenden werden die wesentlichen Schritte zur Installation in einer Windowsumgebung gezeigt. Analog dazu funktionieren die Schritte auch unter Linux und macOS. Unser Video auf Youtube zeigt die Installation, Konfiguration und Bedienung nochmal detaillierter.

VSCode lässt sich ohne Installation in einer portablen Version verwenden. Auf der Downloadpage gibt es Versionen für die verschiedenen Betriebssysteme. Man lädt die aktuelle Version für sein Betriebssystem (wir verwenden hier Windows 11) als ZIP-File (unter Other Downloads) herunter und entpackt sie in ein beliebiges Arbeitsverzeichnis.

Prinzipiell unterstützt VSC eine portable Installation. Dazu legt man im Verzeichnis einen Unterordner „/data" an, in dem später alle Erweiterungen landen. Leider funktioniert dies mit der ESP IDF nicht, da sie absolute Pfade verwendet.

Um VSC zu starten, klickt man auf die Datei code.exe im entpackten Verzeichnis. Es öffnet sich ein Startbildschirm Get Started with VS Code mit diversen Beispielen und Einstellungsmöglichkeiten. Diese belassen wir zunächst so wie sie sind. Wer will, kann die rechts unten von VS Code eingeblendeten Vorschläge zur Installation von Paketen abnicken, etwa das Sprachpaket für Deutsch.

Die Suche in den Erweiterungen.

Im zweiten Schritt installieren wir das Plug-in von Espressif, mit dem man wiederum die Toolchain installiert. Das Plugin wird über die linke Leiste unter dem Punkt Erweiterungen (Extensions) installiert. Dazu gibt man im Suchfeld die Zeichenkette Espressif IDF ein, der oberste Treffer ist das richtige. Über den Button Install startet der Download und die Installation. Zum Zeitpunkt dieser Anleitung ist die Version des Plug-ins 1.4.0 aktuell (Version 1.3.0 funktionierte bei uns nicht).

Nach der Installation des Plug-Ins erscheint es als eigenständiger Button in der linken Leiste.

Je nach Netzverbindung kann die Installation einen Moment benötigen. Nebenbei installiert auch VSC einige weitere Module nach, etwa zusätzlich benötigte Bibliotheken, C++-Erweiterungen, Debugger-Erweiterungen, etc. Den Fortschritt kann man unten rechts verfolgen. Nach der Installation des Plug-ins erscheint in der linken Leiste unterhalb des Erweiterungs-Buttons ein neues Symbol, das Firmen-Logo von Espressif.

Um die Installation der eigentlichen Toolchain zu starten, also Compiler, Linker, Flash-Tool etc., muss man den Punkt Configure ESP-IDF extension wählen. Der Punkt ist aber nicht so ohne Weiteres sichtbar: Unter VSCode erreicht man viele Befehle nämlich nicht über dedizierte Buttons, sondern über die sogenannte Befehlspalette. Dazu drückt man F1 und gibt ganz oben im sich öffnenden Suchfeld ESP-IDF Configure ESP-IDF extension ein. Man kann auch nur Teile der Suchzeichenkette eingeben: ESP-IDF Configure. Während des Tippens zeigt die Leiste dazu passende Treffer an.

Make 2/22

Mehr zum Thema gibt es in Ausgabe 2/22 der Make.

Klickt man auf die gesuchte Zeile, öffnet sich das Fenster ESP-IDF Extension for Visual Studio Code. Alternativ kann man auch den Espressif Button in der linken Leiste anklicken. Dort kommt man beim ersten Start nach der Installation auch zum initialen Setup.

Es gibt zwei Optionen zur Installation: „Express" oder „Advanced". Bei der „Express"-Einstellung werden die Standardverzeichnisse und Einstellung angenommen und es läuft alles automatisch ab. Wenn man die Verzeichnisse und Versionen im Detail festlegen will, sollte man den „Advanced Modus" wählen. Dort hat man zudem die Möglichkeit, die genaue Version und Quelle der Toolchain festzulegen. Alle benötigten Tools werden in zwei unterschiedlichen Verzeichnissen angelegt. Zum einen der ESP-IDF-Compiler selbst (Verzeichnis „esp-idf") und zum zweiten die Programme zur Toolchain (Verzeichnis „.espressif").

Sobald man die Installation startet, kann man sich eine Tasse Kaffee holen. Der Schritt dauert recht lange, da eine große Menge Daten nachgeladen werden. Zusätzlich wird noch eine Python-Umgebung eingerichtet, da diese die Steuerung der Übersetzungsvorgänge übernimmt.

Den Download der ESP-IDF Tools muss man nochmals getrennt bestätigen. Hier wird für jede ESP32-Prozessorvariante (ESP, ESPS2, ESPS3) eine Toolchain heruntergeladen. Dies verschlingt weitere 1 GByte an Downloaddaten. Mit dem letzten Hinweis in der IDE kann man das ESP-IDF Setup-Fenster einfach schließen und loslegen.

Bevor man mit einem komplexeren Projekt beginnt, empfiehlt es sich, erst mit einem einfachen Beispielprogramm die grundsätzliche Funktionalität zu testen. Dazu muss man zunächst ein Arbeitsverzeichnis über den Punkt Ordner öffnen (oder Select Folder, wenn das deutsche Sprachpaket nicht installiert ist) auswählen. Dort werden die Projekte angelegt. Sofern der Ordner noch nicht vorhanden ist, legt man ihn mit der File Explorer-Funktion Neuen Ordner an. Nun kann man die Befehlspalette verwenden, um ein leeres Template Projekt anzulegen.

Dorthin gelangt man wieder über die Befehlspalette (Command Palette), indem man entweder F1 oder STRG+UMSCHALT+P drückt. Alternativ geht es auch über den Menüpunkt Anzeige/Befehlspalette. Dort gibt man ESP-IDF: Create project from extension template ein und bestätigt die Auswahl. Anschließend wählt man eines der angebotenen Projektverzeichnisse und wählt nun das Projekt-Template „template-app".

So sehen die Schritte zum Erstellen eines leeren Templates aus.

Jetzt wird eine einfache Projektstruktur angelegt und ein rudimentäres Beispielprogramm nur bestehend aus main.c erstellt. Auch wenn das Beispiel nur sehr kurzgehalten ist, enthält es schon einige wesentliche Komponenten des ESP32 (CMakeList.txt, Einbinden von FreeRTOS, Auslesen von ESP32-Information, Ausgabe auf Konsole, Timer, ...).

Wer gleich mit einem echten Beispiel loslegen will, kann auch über F1 und ESP IDF Show Example Projects eine Liste aller von Espressif in seiner SDK mitgelieferten Beispiele aufrufen. Vorher muss man noch den Vorschlag Use Current ESP IDF.... abnicken. In der sich öffnenden Liste ist oben beispielsweise Blink aufgeführt, das sich prima eignet. Nach dem Klick auf Create using project fragt VSC wie bekannt nach einem Ordner, denn man auswählt oder anlegt bzw beides. Damit es die auf den meisten ESP32-Boards verbaute LED blinken lässt, muss man in der Datei sdkconfig die Zeile

CONFIG_BLINK_GPIO=5

in

CONFIG_BLINK_GPIO=2

für den LED-Pin ändern. Das geht auch über den Config-Editor, dazu gleich mehr.

Die wichtigsten Punkte in der Bedienleiste unten.

Das Beispielprogramm muss zunächst kompiliert und anschließend auf den ESP32 geflasht werden. Das Espressif-Plugin steuert man am einfachsten über die Menü-Bar unten links (siehe Bild oben). Zunächst wählt man über das „Stecker"-Symbol den seriellen Port, an dem der FTDI-Adapter angeschlossen ist. Über das „Festplatten"-Symbol startet der Kompilierungsvorgang, anschließend wird die Firmware über den „Blitz" übertragen. Hier gilt es zu beachten, dass die ESP32CAM zunächst in den Downloadmodus gebracht werden muss: GPIO0 auf GND/Masse und Reset drücken. Unter Umständen öffnet sich oben in der Befehlspalette noch die Nachfrage, ob man per JTAG, UART (serielle) oder DFU flashen will. Wir wählen UART.

Alle Schritte liefern über ein Terminalfenster den aktuellen Status oder auch Fehlermeldungen. Solle sich das Fenster nicht öffnen, klickt man unten in der Toolbar die gekreuzten Werkzeuge (Aktive Aufgaben) an oder Open ESP IDF Terminal.

Die Ausgabe des Template-Programms im seriellen Monitor

Wenn man nun den seriellen Monitor aktiviert (Symbol „Monitor") und den ESP32 über den Reset-Knopf neu startet, kann man das Ergebnis des Beispielprogramms sehen. Die Template-App sollte nach dem Start einen Status und rudimentäre Informationen zum ESP32 ausgeben und anschließend einen Countdown bis zum Reboot durchführen. Wenn man diese Ausgabe im Terminalfenster sieht, kann man sich sicher sein, dass man eine funktionale ESP32-Entwicklungsumgebung installiert hat.

Die Konfiguration der Hardware und verschiedener Softwaroptionen der Entwicklungsumgebung wird über die Konfigurationsdatei sdkconfig gesteuert. Sie enthält eine lange Liste an Konfigurationsvariablen und deren Einstellung. Man könnte sie im Text editieren, davon würde ich jedoch abraten, da jeder kleine Schreibfehler sofort zu Problemen führen würde. Stattdessen sollte man den integrierten Editor verwenden, den man über das Zahnrad-Symbol startet. Die Anzahl der Parameter ist sehr groß und würde den Rahmen dieses Tutorials bei weitem sprengen.

Zur Vorbereitung für Programme, welche den zusätzlichen PSRAM benötigen, sollte man das schon jetzt in der Konfiguration per Editor aktivieren. Die nach dem Start sich in einem separaten Editor-Fenster öffnenden Parameter sind sehr umfangreich und auf den ersten Blick unübersichtlich.

Die Konfiguration des Blink-Beispiels über den Config-Editor.

Den gewünschten Parameter für die Aktivierung des PSRAM findet man über die Suche. Er heißt „Support for external, SPI-connected RAM" und findet sich im Bereich ESP-specific. Nach dem Setzen des entsprechenden Hackens erscheint ein Untermenü SPI RAM config für Detaileinstellungen. Hier kann man die Standardwerte belassen. Genauso findet man auch den Parameter für die Verwendung einer eigenen Speicherpartitionierung Serial flasher config.

Nun kennen Sie die wichtigsten Abläufe in Visual Studio Code und können die Beispiele aus Teil 3 von KI für den ESP32 übersetzen und flashen. ()