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?
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.
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.
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!
Chris Stratton