mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik avr-gdb mit einem avr dragon


Autor: sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich habe mir den dragon besorgt und wollte damit etwas experimentieren 
:-)

die ersten Veruche mit avrdude in ISP und JTAG Modus sind erfolgreich 
verlaufen, womit ich Hardwarefehler ausschliessen kann.
Dann war es Zeit den Debugger anzuwerfen.
avarice Version 2.6 runtergeladen,installiert und gestartet.
avarice -I -Patmega16 -d --dragon --jtag usb localhost:2424
Es scheint alles OK zu sein die LED am Dragon blinken und ein
Waiting for connection on port 2424.
ist zu sehen.
dann mal schnell in der zweiten Konsole avr-gdb (version 6.4) angeworfen
file main.elf
target remove :2424
load
b main
c
zu sehen ist Continuing. in der avarice Konsole Waiting for input. der 
Dragon blinkt vor sich hin, ende :-(
Es erscheint keine Eingabeaufforderung mehr der gdb bleibt hängen nur 
ein STRG/c hilft.

Kann mir jemand sagen, was ich falch mache ?
Es läuft alles auf Debian/GNU Linux Lenny

Gruß Sebastian

Autor: Manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
bei mir funktioniert der Dragon mit avarice2.6 und avr-gdb6.5 
(allerdings unter FreeBSD) ganz gut soweit. Ich gehe mal davon aus, das 
der Befehl den du eingegeben hast
target remote :2424
geheißen hat, und nicht "remove", oder?

Sobald das target angegeben und gestartet ist, sollte sich auch avarice 
melden.

Gruß
Manuel

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

Bewertung
0 lesenswert
nicht lesenswert
Du kannst AVaRICE mit -d starten, dann erzählt es dir, was es gerade
tut.

Autor: Sebastian Mazur (izaseba)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Euch für die Antworten,
ja klar heißt es remote, sorry, ich hab mich verschrieben...
und mit -d hab ich avarice auch gestartet.

Ich habe auch zu früh gemeckert, ich habe den M16 neu geflasht, und es 
ging auf einmal,komisch.

Eine Frage hab ich aber noch, wie kann ich mir den Zustand der Register 
angucken,ich meine PORTx PINx Timer usw. ?
Bei simulavr kann man mit simulavr-disp ein schönes Fenster erstellen, 
wo alle Zustände angezeigt werden, gibt es sowas auch für avarice?
Irgendwie sind die Infos im I-Net ziemlich knapp, oder ich bin da zu 
blöd zu suchen...
und die Ausführungszeit ? Geht es überhaupt, z.B. Zeit zwischen zwei 
Breaks ?

Gruß Sebastian


Autor: sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich hab mich doch zu früh gefreut :-(
Ich versuche ein Programm mit einem Timer Interrupt zu Debuggen, es 
klappt absolut nicht avraice habe ich mit dem -I Schalter gestartet und 
wenn ich avr-gdb starte,mit avraice verbinde startet das Programm im µC 
nicht wenn ich continue eintipe (ich habe keinen Breakpoint gesetzt!)
avraice meldet:
  command[0x08, 1]: 08
recv: 0x1b
recv: 0x23
recv: 0x00
recv: 0x01
recv: 0x00
recv: 0x00
recv: 0x00
recv: 0x0e
sDATA: reading 1 bytes
read:  80
recv: 0x52
recv: 0x3e
CRC OK
Got message seqno 35 (command_sequence == 35)
response: 80
Waiting for input.

avr-gdb hängt mit continuing. die LED am Dragon blinkt und das Programm 
im M16 läuft nicht.
Wenn ich den Dragon abklemme läuft der Mega immernoch nicht, es scheint, 
als ob da irgendwo ein break im flash gesetzt ist :-( , da hilft nur 
noch neu flashen...

Bin ich jetzt zu blöd den Debugger zu benutzen, oder wo ist der Hund 
begraben ?
Mit welchen Flags muß ich das Programm den kompilieren ?
ich habe -gstabs, ist das denn richtig ?

Ich hoffe, daß mir jemand helfen kann, weil ich keine Lust habe Windows 
zu installieren und mit AVRStudio zu arbeiten.

Gruß Sebastian

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

Bewertung
0 lesenswert
nicht lesenswert
Probier's bitte mal ohne dem "load", das ist wenig getestet.  Ich
bevorzuge zum Flashen allemal ein externes avrdude, erst danach
gehe ich mit avarice auf den Controller zum Debuggen.

In dem Modus, in dem du bist, kannst du übrigens mit ^C immer
unterbrechen (avarice wartet auf entweder eine Meldung vom GDB
oder eine vom ICE).  Wenn du GDB's Disassemblier-Funktionen
benutzt, zeigt er dir auch den rückgelesenen Code vom Target
an, nicht den von der Datei.  Da kannst du ja gucken, ob da was
verkorkst ist, wenn du Lust hast.

Autor: Sebastian Mazur (izaseba)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Wunsch wrote:
> Probier's bitte mal ohne dem "load", das ist wenig getestet.  Ich
> bevorzuge zum Flashen allemal ein externes avrdude, erst danach
> gehe ich mit avarice auf den Controller zum Debuggen.

O weh, das hätte ich wissen müssen...
Jetzt geht es freu, hab ich mit load, den AVR etwa neu beschrieben ?
Ich Trottel dachte es wandert in den Dragon...
Hab auch die manpage von avarice 20 mal studiert und keine Hilfe 
gefunden :-(, könnte man unter DEBUGGING WITH AVRAICE nicht den Weg 
beschreiben ?

> In dem Modus, in dem du bist, kannst du übrigens mit ^C immer
> unterbrechen (avarice wartet auf entweder eine Meldung vom GDB
> oder eine vom ICE).

Ja, hab ich auch gemacht, der hat dann aber schön in dem Interrupt
gesteckt
und hat immer sinnlose Variablenwerte geliefert...

>Wenn du GDB's Disassemblier-Funktionen
> benutzt, zeigt er dir auch den rückgelesenen Code vom Target
> an, nicht den von der Datei.  Da kannst du ja gucken, ob da was
> verkorkst ist, wenn du Lust hast.

Klar hab ich Lust, muß mir nur die Hilfeseiten von gdb genauer angucken, 
wie man es so macht...

Am sonsten vielen Dank Jörg, daß Du mir geholfen hast.

Gruß Sebastian

Autor: _CH_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

schön zu hören, dass es doch Leute gibt, die mit Linux und AVaRICE, 
avr-gdb etc arbeiten.
Ich wollte das vor einiger Zeit auch mal versuchen, hab's aber nicht 
hinbekommen und somit wieder in die Ecke geworfen...

Hätte nicht jemand von den "Erfolgreichen" Lust einen kleinen Artikel 
ins Wiki zu stellen? Wäre bestimmt nicht nur für mich interessant.

Im Netz findet man auch kein wirlich gutes HowTo - oder ich bin zu blöd 
zum Suchen.

Viele Grüße,
Christian

Autor: Sebastian Mazur (izaseba)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
CH wrote:
> Hallo,
>
> schön zu hören, dass es doch Leute gibt, die mit Linux und AVaRICE,
> avr-gdb etc arbeiten.
> Ich wollte das vor einiger Zeit auch mal versuchen, hab's aber nicht
> hinbekommen und somit wieder in die Ecke geworfen...
>
> Hätte nicht jemand von den "Erfolgreichen" Lust einen kleinen Artikel
> ins Wiki zu stellen? Wäre bestimmt nicht nur für mich interessant.
>
> Im Netz findet man auch kein wirlich gutes HowTo - oder ich bin zu blöd
> zum Suchen.
>
> Viele Grüße,
> Christian

Hallo Christian, und ich dachte schon, ich wäre alleine zu blöd :-)

Leider kann ich mich noch nicht als "Erfolgreich"
bezeichnen, es gibt noch viel zu tun, ich bin erstmal froh, das es 
klappt.
gdb ist sehr mächtig, dadurch auch nicht gerade einfach zu benutzen, mal 
schauen, wie ich ihm so Sachen entlocken kann, wie Portzustände, 
Programmcounter usw.

Gruß Sebastian

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.