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


10

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 verbinde ich mit der Uno-Karte? Ich vermute, 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 bemerkte ich, dass es einige Projekte wie AVaRICE gibt , die der GDB-Funktion einen Jtag zu bieten scheinen, aber es kann auch andere Projekte geben?

Frage 3: Wo ist der Elf?

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

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


Antworten:


3

Sie können die Compiler-Artefakte finden, indem Sie die Umschalttaste gedrückt halten, wenn Sie in einer älteren Version der IDE auf die Kompilierungsschaltfläche klicken (lesen Sie <1.0). In neueren Versionen (read> = 1.0) gibt es im Einstellungsdialog eine Option zum Anzeigen der ausführlichen Ausgabe während der Kompilierung (siehe Screenshot). Bei ausführlicher Ausgabe wird der Ordner, in dem alle Compilerausgaben enden, (wiederholt) in der Konsole gedruckt. Damit sollten Sie zumindest loslegen.

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 hat auf der Arduino-Entwicklerliste eine Ankündigung zu einer verbesserten / integrierten Methode für das GDB-Debugging für Arduino veröffentlicht, aber ich habe dies nicht untersucht es viel weiter. Ich denke, das Projekt heißt VisualMicro (?). Es sieht so aus, als ob es als Visual Studio-Plugin erstellt wurde und daher in einer Linux-Umgebung möglicherweise nicht hilfreich ist. Darüber hinaus befindet es sich in der Beta-Phase, aber ich überlasse es Ihnen.


Ich habe die Option "Ausführliche ausführliche Ausgabe während der Kompilierung aktivieren" aktiviert und sie verwenden so 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 den jtag zum Laufen bringen.
Johan

3

Der Simavr AVR-Prozessorsimulator bietet jetzt einen guten GDB-Server für das Debuggen von AVR-Firmvare, einschließlich Arduino. Sie können es selbst verwenden (Sie müssen eine kleine Konsolenanwendung für Ihre spezielle Hardwarekonfiguration schreiben) oder in einer Simutron-GUI-Umgebung , in der 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.


2

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

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

Hoffe das hilft!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.