Wie debugge ich einen Arduino Uno mit gdb auf einem Linux-PC?

Wie debugge ich (Quellcode-Einzelschritt) ein Arduino Uno mit gdb auf einem Linux-PC? Bitte beachten Sie, dass ich AVR Studio nicht gerne in Wine oder VirtualBox verwende.

Frage 1: Physikalische Verbindung

Wie und was schließe ich das Uno-Board an? Meine Vermutung ist, dass, da das Uno-Board mit einem ATmega328 bestückt ist, ein Einzelschritt-Quellcode verfügbar sein sollte? Ich vermute auch, dass ich entweder einen AVR JTAGICE mkII oder einen AVR Dragon über den ICSP-Header verwenden kann?

Frage 2: GDB-Server

Dann ist mir aufgefallen, dass es einige Projekte wie AVaRICE gibt , die anscheinend eine jtag to gdb-Funktion bereitstellen, aber es gibt möglicherweise andere Projekte?

Frage 3: Wo ist der Elf?

Und wenn ich es zum Laufen bekomme, wo versteckt die Arduino IDE die generierte Ausgabe wie die elf-Datei mit Debug-Symbolen (es sollte eine geben)? Oder muss ich ein klassisches Makefile generieren, das nur die Ardino-Bibliotheken verwendet?

Ich habe versucht, Informationen darüber zu finden, was / wie man es benutzt, aber ich habe nur die Hinweise gefunden, die mir sagten, was ich tun könnte. Kann mich jemand in die richtige Richtung schubsen?

Antworten (3)

Sie finden die Compiler-Artefakte, indem Sie die Umschalttaste gedrückt halten, wenn Sie in älteren Versionen der IDE (lesen Sie < 1.0) auf die Schaltfläche zum Kompilieren klicken. In neueren Versionen (gelesen >= 1.0) gibt es eine Option im Einstellungsdialog, um während der Kompilierung eine ausführliche Ausgabe anzuzeigen (siehe Screenshot). Bei der ausführlichen Ausgabe wird der Ordner, in dem alle Compiler-Ausgaben landen, (wiederholt) in der Konsole ausgegeben. Damit solltest du zumindest anfangen.

Screenshot Arduino zeigt ausführliche Ausgabe während der Kompilierung

Nebenbei bemerkt, Anfang Juni 2012 gab es auf der Arduino-Entwicklerliste allerlei Geschwätz zu diesem Thema, und jemand veröffentlichte eine Ankündigung auf der Arduino-Entwicklerliste über eine verbesserte / integrierte Art des GDB-Debuggings für Arduino, aber ich habe nicht nachgeforscht es viel weiter. Ich denke, das Projekt heißt VisualMicro (?). Es sieht so aus, als wäre es als Visual Studio-Plug-in erstellt worden, daher ist es für Sie in einer Linux-Umgebung möglicherweise nicht hilfreich, und es befindet sich obendrein noch in der Beta-Phase, aber ich lasse Sie entscheiden.

Ich habe "Ausführliche Ausgabe während der Kompilierung aktivieren" aktiviert und sie verwenden etwas wie /tmp/build3652385594823436592.tmp/ als Build-Verzeichnis, außerdem wurde der Elf mit dem Flag -g erstellt, sodass er die Debug-Symbole enthalten sollte. Das bedeutet, dass ich die Build-Artefakte gefunden habe, jetzt muss ich nur noch das jtag zum Laufen bringen.

Simavr AVR-Prozessorsimulator bietet jetzt einen guten GDB-Server für AVR-Firmvare-Debugging, einschließlich Arduino. Sie können es eigenständig verwenden (erfordert das Schreiben einer kleinen Konsolenanwendung für Ihre spezielle Hardwarekonfiguration) oder aus der Simutron-GUI-Umgebung heraus , wo Sie Ihre Hardwarekonfiguration über eine schematische Erfassung definieren können.

Hinweis: Mit diesen Tools haben Sie keine physische Verbindung, da die gesamte Hardware simuliert wird.

Dies wird in einem Linux-Journalartikel beantwortet, auf den in einer ähnlichen Frage verwiesen wird: Jtag debugging AVR .

Grundsätzlich können Sie mit avr-gdb und simulavr im Tandem Ihre Software auf einer Auswahl von AVR-Mikrocontrollern über den Simulator ausführen, während Sie mit GDB den ausführenden Code durchlaufen und beobachten.

Hoffe das hilft!