AVR Atmega128: Debugging unter Linux

Gast #640884
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
Angehängte Dateien:
Moderator Persönliche Seite #640900
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.
Gast #641464
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
Gast #641663
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
Gast #641937
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! 
:-)
Gast #642278
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren