Benjamin
  • About me

Benjamin since 1996

Debuger

ESP8266 Eclipse mit Debugger

Posted on 9. April 2016 3 Comments

esp_dev_kitBereits im letzten Jahr hatte ich mir 2 ESP8266 Module in China bestellt. Zusammen mit NodeMCU ergab sich dabei auch schon bisschen PWM und Internet. So richtig überzeugend war das ganze jedoch nicht wirklich. NodeMCU ist auf Lua basierend, Lua ist naja. Seit geraumer Zeit ist vom Hersteller selber (Espressif) ein C Software SDK für die ESP8266 Dinger verfügbar. Mit diesem kann man die meisten Dinge für den ESP8266 Prozesser ziemlich gut abstrahiert in C nutzen. Ebenso gibt es einen GDB Debugger, über welchen man super bequem via UART (USB) debuggen kann. Alles in allem ergibt sich so ein super „package“.

Der einzige Nachteil für mich war bisher das fehlen einer sauber funktionierenden und umfangreichen Entwicklungsumgebung für das Ding. Ich habe auch nach längerer Suche im Netz keine zufriedenstellende Anleitung/Lösung gefunden. Daher habe ich mich rangesetzt und das Espressif SDK mit dem GDB Debugger in Eclipse integriert. Zusammen ergibt das eine erstaunlich gut funktionierende Kombination. Nachfolgend eine Anleitung wie ich unter Linux (Lubuntu) vorgegangen bin. Ich gehe dabei von einer frischen Lubuntu 15.10 32Bit Installation aus:

sudo apt-get install make unrar autoconf automake libtool gcc g++ gperf \
    flex bison texinfo gawk ncurses-dev libexpat-dev python python-serial sed \
    git unzip bash python-serial libtool-bin openjdk-7-jdk

Vollständie Rechte für den Ordner /opt geben:

sudo chmod 777 /opt

Unter /opt einen Ordner „espressif“ erstellen:

sudo mkdir espressif

In den Ordner wechseln:

cd espressif

Git Directory vom Compiler klonen:

git clone --recursive https://github.com/pfalcon/esp-open-sdk.git

In den Ordner wechseln:

cd esp-open-sdk/

Compiler kompilieren:

make STANDALONE=y

Nach erfolgreichem kompilieren Eclipse (IDE for C/C++ Developers) herunterladen und ebenfalls in den /opt/espressif Ordner entpacken.

Nun laden wir das Espressif NONOS SDK und entpacken dieses ebenfalls unter /opt/espressif. Dieses lässt sich nicht auf Github finden, sondern muss direkt vom Espressif Forum geladen werden: http://bbs.espressif.com/viewtopic.php?f=46&t=1702

Nun das Beispielprogramm von NONOS unter examples/IoT_Demo/* nach app/ kopieren.

Nun noch das esptool herunterladen. Dieses wird benötigt um den ESP8266 mit den Binarys zu bespielen. Dieses in den Ordner vom NONOS SDK klonen:

git clone https://github.com/themadinventor/esptool.git && mv esptool/* /opt/espressif/esp_iot_sdk_v1.5.2/tools/ && rm -rf esptool/


Wir können die Applikation nun in Eclipse importieren. Dafür unter „File->New->Makefile Project with Existing Code“ den Dialog öffnen. Unter „Project Name“ einen Namen vergeben, unter „Existing Code Location“ den Pfad zum NONOS SDK angeben. Toolchain auf „<none>“.

eclipse_import

Nun müssen einige Build Einstellungen in Eclipse angepasst werden. Dafür den Dialog unter „Project->Properties“ öffnen. Unter „C/C++ Build“ den haken bei „Use default build command“ entfernen und das make um “ COMPILE=gcc“ ergänzen.

eclipse_build

Leider ist die Umgebungsvariable „$PATH“ in Eclipse ziemlich kaputt. Daher erzeugen wir unter „C/C++ Build->Environment“ eine dedizierte „PATH“ Variable. Diese muss folgenden Inhalt aufweisten: „/opt/espressif/esp-open-sdk/xtensa-lx106-elf/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games“

eclipse_environment

Prinzipiell ist der Part um das Projekt zu kompilieren nun abgeschlossen. Das Projekt sollte zu diesem Zeitpunkt problemlos via „Project->Build all“ baubar sein.

 

Nun setzen wir einen Builder auf, damit Eclipse nach erfolgreichem builden automatisch den Upload zum ESP startet. Wir erstellen uns den Builder „ESP_UPLOAD“:

eclipse_builders

Unter Location den Pfad zum esptool.py angeben, unter working dir das Directory vom esptool.py:

eclipse_builders_main

Aktivieren das es bei auto build + manual build ausgeführt wird:

eclipse_builders_buildop

Nun sollten die Binarys automatisch bei erfolgreichem Build auf den ESP gespitzt werden.

eclipse_run

 

 

Jetzt können wir uns dem letzen Part zuwenden, dem Debugger. Diesen klonen wir zuerst in den „app/“ Ordner vom NONOS SDK:

git clone https://github.com/espressif/esp-gdbstub.git && mv esp-gdbstub gdbstub

Nun kopieren wir das Makefile von „app/user/Makefile“ nach „app/esp-gdbstub/“. Dieses öffnen wir nun mit einem Editor wie z.B. nano. Der Parameter „GEN_LIBS“ muss auf folgendes angepasst werden: „GEN_LIBS = libgdbstub.a“

Nun muss das Makefile von „app/Makefile“ angepasst werden. Genauer gesagt „SUBDIRS“ und „TARGET_LDFLAGS“:

SUBDIRS=    \
gdbstub \
user    \
driver

TARGET_LDFLAGS =                \
-ggdb   \
-nostdlib               \
-Wl,-EL \
--longcalls \
--text-section-literals

COMPONENTS_eagle.app.v6 = \
user/libuser.a  \
driver/libdriver.a      \
gdbstub/libgdbstub.a

Jetzt kann der Debugger von Eclipse konfiguiert werden. Dafür unter Run->Debug Configurations den Konfigurationsdialog öffnen. Mit einem Doppelklick auf „C/C++ Remote Application“ eine neue Remote Application erstellen. Unter „C/C++ Application“ die .out Datei des Kompilers angeben. Siehe Bild:

eclipse_debug_conf

Im Debugger als  Stopfunktion „user_init“ angeben, unter „GDB debugger“ den Pfad zum xtensa GDB Debugger angeben:

eclipse_debug_main

Unten unter „Select others…“ auf „Manual Remote Debugger Launcher“ umstellen:

eclipse_manual_debug

Schlussendlich noch den korrekten Serial Port unter „Connection“ angeben. Danach mit „Apply“ speichern und den Dialog verlassen.

eclipse_debugger_conn

In der Datei gdbstub-cfg.h muss der Parameter „GDBSTUB_FREERTOS“ noch auf 0 gestellt werden da wir das NONOS und nicht RTOS haben.

Nun muss nurnoch im „user_main.c“ das Include für den gdbstub + uart_div_modify für die Baudrate + gdbstub_init(); ergänzt werden. Nun kann testweise der Debugvorgang gestartet werden. Eclipse sollte nun bei erfolgreicher Konfiguration die Solution builden + uploaden + Debugger starten. Bei gesetztem Breakpoint sollte dieser an dem Punkt halten. Allenfalls müssen noch Funktionen auskommentiert werden, damit genügend Ram im ESP frei ist:

sdgfsdfgsdfg

 

Beschreibung zum SDK:

2c-esp8266-sdk_api_guide_en_v1.5.2_20160316

Posted in: ESP8266 | Tagged: Anleitung, Debuger, Debugger, Eclipse, esp-open-sdk, esp-open-sdk install, ESP8266, GDB, install, TUT, Tutorial

Copyright © 2019 Benjamin Marty.

Theme by ThemeHall.