www.mikrocontroller.net

Forum: Compiler & IDEs AVR Atmega128: Debugging unter Linux


Autor: draugdel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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:
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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: draugdel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: draugdel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: _CH_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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! 
:-)

Autor: C. H. (_ch_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
[EDIT]

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

Gruß,
Christian

Autor: draugdel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Rainer,

wir warten alle auf das schlechte Wetter :)

Gruß Dirk

Autor: Rainer K. (draugdel)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.