Forum: Compiler & IDEs AVR Atmega128: Debugging unter Linux


von draugdel (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich versuche momentan Eclispe (3.3.0) so einzurichten, dass ich es statt 
dem AVR Studio verwenden kann. Mit Hilfe des AVR Eclipse Plugins 
(http://sourceforge.net/projects/avr-eclipse/ ) bin ich mittlerweile 
soweit gekommen, dass ich das Board bespielen kann. Was allerdings noch 
nicht funktioniert, ist das Debuggen eines c-Programms. Ich kann keine 
Breakpoints setzen und Symbole werden auch nicht erkannt.

Ich verwende zum On-Chip-Debugging folgenden Befehl:
1
avarice -P atmega128 -j /dev/ttyUSB0 :1212

Wenn ich jetzt mit Eclipse zu debuggen beginne, bekomme ich den 
angehängten Output (eclipse.txt). Sollte ich es mit manuell mit avr-gdb 
probieren, kann ich ebenso keine Symbole auflösen (avr-gdb.txt).

hello.c ist mein momentaner Testcode (schaltet eine Led bei Tastendruck 
ein bzw. aus).

Ich hoffe, ihr könnt mir helfen.

Rainer

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Es funktioniert alles. ;-)  Du musst dich nur dran gewöhnen, dass
der Optimierer manche Dinge anders sieht als du.  Wenn du zu deinem
Verständnis eine Variable namens "key" benötigst, heißt das noch
lange nicht, dass der Compiler sie auch benötigen würde.  Da der
Inhalt dieser Variablen letztlich nie wieder benutzt wird, wirft
der Optimierer sie einfach weg.

Du kannst für einfache Fälle die Optimierung ausschalten (-O0),
aber sinnvoller ist es, einfach mal auch etwas sinnvolles zu debuggen
statt eines runterskalierten Tests.  Wenn du partout eine bestimmte
Variable im Speicher wiederfinden möchtest, kannst du sie auch fürs
Debuggen "volatile" deklarieren.  Das erzeugt umständlichen Code,
aber du kannst sie dann immer auch im Debugger abfragen.

von draugdel (Gast)


Lesenswert?

Danke schon mal für deine schnelle Antwort. Ich bin leider gerade erst 
dazugekommen, das Debuggen erneut zu probieren.

Ich habe jetzt zum Testen mal die Optmierungen deaktiviert (-O0) und die 
Variable "key" volatile deklariert. Allerdings kann ich weiterhin weder 
Breakpoints in meinem c-File setzen noch "key" auslesen. Dabei kommen 
folgende Fehlermeldungen:
18-break-insert hello.c:10
(gdb)
&"No source file named hello.c.\n"
No source file named hello.c.
18^done

26-var-create - * key
&"mi_cmd_var_create: unable to create variable object\n"
26^error,msg="mi_cmd_var_create: unable to create variable object"
(gdb)
mi_cmd_var_create: unable to create variable object
27-data-evaluate-expression key
No symbol "key" in current context.
&"No symbol \"key\" in current context.\n"
27^error,msg="No symbol \"key\" in current context."

Die folgende Meldung ist mir auch noch aufgefallen:
(gdb)
~"Current language:  auto; currently asm\n"
Current language:  auto; currently asm

Wie kann ich avr-gdb sagen, dass es hello.c einbindet und ein c-Programm 
zum Debuggen verwendet? Findet es dann auch meine Variable "key"?

Danke, Rainer

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Keine Ahnung, was da schief gelaufen ist.  Sieht mir aus, als wären
da keine oder keine vernünftigen Debug-Informationen in der
ELF-Datei drin.

von draugdel (Gast)


Lesenswert?

Ich habe es zum Laufen gebracht:
Mit Hilfe eines neuen Projekts unter Eclipse, in das ich meinen Source 
kopiert habe, hat es schlußendlich geklappt. Ich habe also vermutlich 
bei den Projekteinstellungen irgendwo einen Fehler gemacht. Ich werde 
morgen mal schauen, ob ich den Fehler finde: Ist ja möglicherweise für 
andere Anfänger auch interessant. ;)

Danke dir, jetzt steht Programmieren ohne AVR Studio nichts mehr im Weg. 
:D

von _CH_ (Gast)


Lesenswert?

Hallo draugdel,

hättest du nicht Lust einen kleinen Artikel für das Wiki zu tippen?

Ich habe schon öfters versucht das ganze JTAG-Zeug mit avr-gdb, avarice 
und was da alles dazugehört unter Linux irgendwie zum Laufen zu bringen 
- hat aber nie wirklich geklappt :-/
Die Demotivation brachte mich schließlich soweit, dass ich zum debuggen 
nen alten extra PC habe, auf dem das AVR-Studio läuft...

Leider findet sich in den Weiten des Netzes nichtmal ein vernünftiger 
Artikel wie man das Ganze step-by-step auf dem Pinguin einrichtet.

Gruß,
Christian

PS: Ich glaube ich bin nicht der einzige, der sich darüber freuen würde! 
:-)

von C. H. (_ch_)


Lesenswert?

[EDIT]

hier wurde leider auch nicht's mehr draus - schade.
Beitrag "Re: avr-gdb mit einem avr dragon"

Gruß,
Christian

von draugdel (Gast)


Lesenswert?

Ich setze es mir mal auf die ToDo-Liste. Vor Mitte September schaut es 
allerdings schlecht aus, dann hätte ich aber noch 2 Wochen Urlaub, bevor 
das Semester wieder beginnt. Da sollte es sich dann eigentlich ausgehen.
Möglicherweise packt mich aber auch bei schlechtem Wetter am Wochenende 
mal die Lust. ;)

Lg, Rainer

von Dirk (Gast)


Lesenswert?

Hallo Rainer,

wir warten alle auf das schlechte Wetter :)

Gruß Dirk

von Rainer K. (draugdel)


Lesenswert?

Ich hatte leider in meinen "Ferien" nicht wirklich Zeit dafür, 
allerdings habe ich mir jetzt die Zeit genommen und diesen [0] angepasst 
und einiges hinzugefügt.
Ich verwende Alternative 1, da ich diese für schneller und einfacher 
halte. Variante 2 ist von dem vorigen Autor geschrieben worden.

[0] http://www.mikrocontroller.net/articles/AVR_Eclipse

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.