Jump to content

Recommended Posts

Geschrieben

Hallo zusammen,

gibt es eine Möglichkeit Programme, die auf dem ESP32-Brick laufen, zu debuggen? Für die „normalen“ ESP32-Boards gibt es ja z. B. den ESP-Prog, der im Zusammenspiel mit Visual Studio Code gut funktioniert.

Wie macht ihr das bei der Entwicklung? Ausschließlich über den Logger oder gibt es noch andere Möglichkeiten?

Vielen Dank und Gruß Thomas

Geschrieben

Das hatte ich auch befürchtet. Die vorhandenen IO-Ports passen ja leider auch nicht wirklich (außer man könnte diese umdefinieren).

@rtrbt, @photron: Wie debugged ihr den ESP32-Brick? Auch nur über Logging oder gibt es vielleicht ein "inoffizielles" Debug-Bricklet o. ä.?

Danke & Gruß Thomas

Geschrieben

Die ESP-Firmware selbst debuggen wir auch nur über das Logging. Die JTAG-Pins sind in der Tat nicht rausgeführt, wenn ich mich richtig erinnere (bin nicht der Hardware-Entwickler) lag das daran, dass wir vor allem beim Ethernet-Brick zu wenig GPIOs hatten.

Für die Kommunikation zwischen Brick und Bricklet kannst du entweder ein Bricklet-Kabel schlachten oder zwei Breakout Bricklets zusammenlöten https://www.tinkerforge.com/de/shop/breakout-bricklet.html und mit einem Logic Analyzer mitlesen. Wir haben intern eine neuere Variante für die 7-Pol-Bricklets, meines Wissens verkaufen wir die aber nicht.

Geschrieben

Alles klar, vielen Dank.

Aktuell arbeite ich weiter an einem Backend-Modul zum Auslesen der Daten des SMA Energy Meter / Home Manager 2.0, da passiert viel mit Arrays und Pointern und man hat schnell Abstürze provoziert, die ausschließlich mit Logging etwas mühselig zu finden sind.

Vielleicht ist das Modul später auch mal für den WARP Energy Manager interessant...

Geschrieben

Wenn du Abstürze debuggen willst hast du noch zwei weitere Optionen:

Du bekommst du auf der seriellen Konsole beim Crash einen Backtrace, den du mit dem decode-Script (in esp32-firmware/software) dekodieren kannst. Das Script wählt automatisch die zuletzt gebaute ELF-Datei aus um den Backtrace zu dekodieren. Du kannst noch den Inhalt des PC-Registers (das ist der Program Counter, also die Instruktion die gerade ausgeführt wird) vorne an den Backtrace anhängen, dann wirds genauer. Wenn du also z.B. folgenden Backtrace bekommst:

Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.

Core  1 register dump:
PC      : 0x40117aeb  PS      : 0x00060b30  A0      : 0x800ec077  A1      : 0x3ffc8e50  
A2      : 0x3ffb6e74  A3      : 0x00000004  A4      : 0xffffffff  A5      : 0x3ffc8dc8  
A6      : 0x3ffc8e70  A7      : 0x00000000  A8      : 0x80117ae9  A9      : 0x3ffc8de0  
A10     : 0x505a9d89  A11     : 0x505a9d89  A12     : 0x3ffc5608  A13     : 0x3ffb513c  
A14     : 0x3ffcef1c  A15     : 0x3ffc9970  SAR     : 0x00000015  EXCCAUSE: 0x0000001c  
EXCVADDR: 0x00000004  LBEG    : 0x4000c46c  LEND    : 0x4000c477  LCOUNT  : 0x00000000  


Backtrace: 0x40117ae8:0x3ffc8e50 0x400ec074:0x3ffc8e90 0x40179a1e:0x3ffc9190

dann kannst du den (mit PC-Register) so dekodieren:

./decode 0x40117aeb 0x40117ae8:0x3ffc8e50 0x400ec074:0x3ffc8e90 0x40179a1e:0x3ffc9190

und bekommst dann:

Using toolchain-xtensa-esp32@8.4.0+2021r2-patch3 package
0x00000000: ?? ??:0
0x40117ae8: EVSEV2::setup() at /home/erik/Tinkerforge/esp32-firmware/software/src/modules/evse_v2/evse_v2.cpp:400
0x400ec074: setup() at /home/erik/Tinkerforge/esp32-firmware/software/src/main.cpp:244
0x40179a1e: loopTask(void*) at /home/erik/Tinkerforge/esp32-firmware/software/packages/arduino-esp32#warp2-2.0.9_9326b6026102e72489017bcf1c8fa08d0084e30f/cores/esp32/main.cpp:42

evse_v2.cpp Zeile 400 ist bei mir gerade

int blah = *((int*)0x04);
logger.printfln("%d\n", blah);

um den Crash zu provozieren.

Option zwei ist, dass der ESP, wenn er crasht, seit kurzem einen Coredump in die entsprechende Partition schreibt. Wenn du das Debug-Modul reinkompilierst, dann kannst du unter warp2-abc/debug/coredump.elf den Coredump runterladen und mit https://github.com/espressif/esp-coredump auseinandernehmen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...