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


von sebastian (Gast)


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.
1
avarice -I -Patmega16 -d --dragon --jtag usb localhost:2424
Es scheint alles OK zu sein die LED am Dragon blinken und ein
1
Waiting for connection on port 2424.
ist zu sehen.
dann mal schnell in der zweiten Konsole avr-gdb (version 6.4) angeworfen
1
file main.elf
2
target remove :2424
3
load
4
b main
5
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

von Manuel (Gast)


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

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


Lesenswert?

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

von Sebastian M. (izaseba)


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


von sebastian (Gast)


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:
1
  command[0x08, 1]: 08
2
recv: 0x1b
3
recv: 0x23
4
recv: 0x00
5
recv: 0x01
6
recv: 0x00
7
recv: 0x00
8
recv: 0x00
9
recv: 0x0e
10
sDATA: reading 1 bytes
11
read:  80
12
recv: 0x52
13
recv: 0x3e
14
CRC OK
15
Got message seqno 35 (command_sequence == 35)
16
response: 80
17
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

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


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.

von Sebastian M. (izaseba)


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

von _CH_ (Gast)


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

von Sebastian M. (izaseba)


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

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.