Forum: Compiler & IDEs Debuggin mit Insight


von Florian R. (Firma: TU Wien) (frist)


Lesenswert?

Hallo,
ich hab grad erst angefangen mit der Thematik zu befassen, aber
immerhin laufen schon die ersten einfachen Programme auf einem
ATmega8515 im STK500, soweit alles sehr nett und das GCC Tutorial war
auch ein guter Einstieg. Genau so ein leichter Einstieg zum Thema
Debugging fehlt mir nun.

Gibt's irgend wo ein tutorial, das den Einsatz von Insight und GDB zum
"in circuit debugging" erläutert?

Grüße
Flo

PS: Gibt's eine Möglichkeit avrdude die Zusammenarbeit mit der
aktuellen Firmware (2.0 oder so) für das STK500 zu bewegen?

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


Lesenswert?

> Gibt's irgend wo ein tutorial, das den Einsatz von Insight und GDB
> zum "in circuit debugging" erläutert?

Das kann ich dir erstmal nicht sagen, ich benutze den GDB seit 15
Jahren, da hab' ich keinen Bedarf nach Insight oder so. ;-)

Anyway, du bist dir im Klaren, dass man für in-circuit debugging ein
JTAG ICE braucht und das das erst ab einem ATmega16 aufwärts
funktioniert?

> PS: Gibt's eine Möglichkeit avrdude die Zusammenarbeit mit der
> aktuellen Firmware (2.0 oder so) für das STK500 zu bewegen?

Ja, avrdude 5.0 ist kurz vorm Release.

von Florian R. (Firma: TU Wien) (frist)


Lesenswert?

Hallo Jörg,
danke für Deine Antwort.

>> Gibt's irgend wo ein tutorial, das den Einsatz von Insight und GDB
>> zum "in circuit debugging" erläutert?
>
> Das kann ich dir erstmal nicht sagen, ich benutze den GDB seit 15
> Jahren, da hab' ich keinen Bedarf nach Insight oder so. ;-)

Das ist sicher Geschmakssache, ich hätte nix gegen das GUI, aber im
Prinzi ist's egal und hatt eher weniger mit meinem Problem zu tun.

> Anyway, du bist dir im Klaren, dass man für in-circuit debugging ein
> JTAG ICE braucht und das das erst ab einem ATmega16 aufwärts
> funktioniert?

Ja, so im Prinzip. Nur gelinkt es mit nicht rauszufinden, was es damit
genau auf sich hat und wo wie ich’s auf dem Controller bekomme.

Also ich glaub im Prinzip ist mir das Konzept schon klar. Es geht ja um
remote debugging und auf dem Traget muss ja irgendeine Software laufen,
die mit dem remote debugger kommuniziert, das ist wohl JTAG.

>> PS: Gibt's eine Möglichkeit avrdude die Zusammenarbeit mit der
>> aktuellen Firmware (2.0 oder so) für das STK500 zu bewegen?
>
> Ja, avrdude 5.0 ist ku>rz vorm Release.

Ah, danke.

Grüße
Flo

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


Lesenswert?

> Das ist sicher Geschmakssache, ich hätte nix gegen das GUI, aber im
> Prinzi ist's egal und hatt eher weniger mit meinem Problem zu tun.

Naja, wie man mit dem GDB und avarice überhaupt klarkommt, ist in der
avarice-Doku beschrieben.  Wenn du das nicht findest, kann ich dir das
auch hier kurz skizzieren, aber bis dorthin hast du noch ein Stück des
Wegs vor dir...

>> Anyway, du bist dir im Klaren, dass man für in-circuit debugging
>> ein JTAG ICE braucht und das das erst ab einem ATmega16 aufwärts
>> funktioniert?

> Ja, so im Prinzip. Nur gelinkt es mit nicht rauszufinden, was es
damit
> genau auf sich hat und wo wie ichs auf dem Controller bekomme.

> Also ich glaub im Prinzip ist mir das Konzept schon klar. Es geht ja
> um remote debugging und auf dem Traget muss ja irgendeine Software
> laufen, die mit dem remote debugger kommuniziert, das ist wohl JTAG.

Nein, nicht Software, sondern Hardware.  Insofern musst nicht du es
,,auf den Controller bekommen'', sondern du brauchst:

. einen Controller, der eine JTAG-Engine besitzt; das sind praktisch
  alle ATmega >= 16 KiB ROM (Ausnahme: ATmega103, ATmega168)

. ein JTAG ICE

Letzteres ist eine kleine Box, die auf der einen Seite JTAG zum
Controller spricht und auf der anderen Seite (zum Host) ein serielles
Protokoll über RS-232 oder neuerdings auch über USB.  Auf der
Host-Seite sitzt als Mittler zwischen dem GDB und dem JTAG ICE dann
noch ein avarice-Prozess.

Das JTAG ICE gibt's in zwei Ausführungen.  Das alte (mark I) hatte
einen ATmega16, einen MAX232, ein paar Pegelwandler und einen 7805 zur
Stromversorgung via Steckernetzteil.  Davon gibt's Clones, die
deutlich preiswerter sind als das Atmel-Original, die lassen in der
Regel dann die Stromversorgung und die Pegelwandler weg und beziehen
die Energie direkt vom Target.  Typischerweise arbeiten die Clones so,
dass sie einen Bootloader besitzen und dann durch den Endanwender via
AVR Studio mit der Atmel-Firmware zu versehen sind.

Das neuere mark II (mkII) ist ein ganzes Stück aufwändiger gebaut, da
es nicht nur eine größere Firmware abkönnen soll, sondern auch das
neue 1-wire-Protokoll namens debugWire für die kleinen AVRs
unterstützt.  Da werkeln dann zwei ATmega128 drin, die Hostanbindung
und Stromversorgung kann alternativ zu RS-232 auch über USB erfolgen.

Meine Vermutung ist, dass man für neuere AVRs aber keinen Support mehr
fürs mkI bekommen wird, da die Firmware Anschlag voll ist.

Die originalen Atmel-ICEs sind recht preisintensiv.

von Florian R. (Firma: TU Wien) (frist)


Lesenswert?

Hallo Jörg

>>> Anyway, du bist dir im Klaren, dass man für in-circuit debugging
>>> ein JTAG ICE braucht und das das erst ab einem ATmega16 aufwärts
>>> funktioniert?
>
>> Ja, so im Prinzip. Nur gelinkt es mit nicht rauszufinden, was
>> es damit genau auf sich hat und wo wie ichs auf dem Controller
>> bekomme.

Tja, ich muss mich korrigieren, ich hab das Prinzip offensichtlich
nicht kapiert...

> Nein, nicht Software, sondern Hardware.

Das erklärt einiges.

> Insofern musst nicht du es ,,auf den Controller bekommen'', sondern

> du brauchst:
>
> . einen Controller, der eine JTAG-Engine besitzt; das sind
>   praktisch alle ATmega >= 16 KiB ROM (Ausnahme: ATmega103,
>   ATmega168)

Das hätte ich ja noch rumliegen...

>. ein JTAG ICE

... letzteres natürlich nicht. Mist.

>Letzteres ist eine kleine Box, die auf der einen Seite JTAG zum
>Controller spricht und auf der anderen Seite (zum Host) ein serielles
>Protokoll über RS-232 oder neuerdings auch über USB.  Auf der
>Host-Seite sitzt als Mittler zwischen dem GDB und dem JTAG ICE dann
>noch ein avarice-Prozess.

Danke für die Erklärung. Ich dachte das ginge in Software so wie remote
debugging mit zwei PCs

> Das JTAG ICE gibt's in zwei Ausführungen.  Das alte (mark I) hatte
> einen ATmega16, einen MAX232, ein paar Pegelwandler und einen 7805
> zur Stromversorgung via Steckernetzteil.

Mal sehen, was so was kostet.

> Davon gibt's Clones, die deutlich preiswerter sind als das
> Atmel-Original, die lassen in der Regel dann die Stromversorgung
> und die Pegelwandler weg und beziehen die Energie direkt vom
> Target.  Typischerweise arbeiten die Clones so, dass sie einen
> Bootloader besitzen und dann durch den Endanwender via AVR Studio
> mit der Atmel-Firmware zu versehen sind.

Hmm, vielleicht hab ich’s wieder nicht verstanden, aber da liest sich
jetzt so, als könnte ich einen ATmega16 in mein STK500 stecken, den
Bootloader drauf laden, dann meine Applikation und dann debugen. Dann
bräuchte ich doch keine weitere Hardware kaufen.

> Das neuere mark II (mkII) ist ein ganzes Stück aufwändiger gebaut,
> da es nicht nur eine größere Firmware abkönnen soll, sondern auch
> das neue 1-wire-Protokoll namens debugWire für die kleinen AVRs
> unterstützt.  Da werkeln dann zwei ATmega128 drin, die
> Hostanbindung und Stromversorgung kann alternativ zu RS-232 auch
> über USB erfolgen.

Die alte Version würde mir sicher reichen.

Grüße
Flo

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


Lesenswert?

Anfrage an den Sender Jerewan:

> Hmm, vielleicht hab ichs wieder nicht verstanden, aber da liest
> sich jetzt so, als könnte ich einen ATmega16 in mein STK500 stecken,
> den Bootloader drauf laden, dann meine Applikation und dann
> debugen. Dann bräuchte ich doch keine weitere Hardware kaufen.

,,Im Prinzip, ja, aber...''

Wenn du dieses STK500+ATmega16 als JTAG ICE benutzen willst, kannst du
es natürlich nicht gleichzeitig als Target zum Debuggen nehmen.  Das
JTAG ICE sitzt ja zwischen Target und Host als separates Gerät.

Sinnvoller ist es wahrscheinlich, einen ATmega16+MAX232 auf einer
Lochrasterplatine oder so als JTAG ICE zu konfigurieren.  Ich weiß
nicht, ob's die Schaltpläne vom sogenannten BootICE noch gibt.

Alternativ gibt's die Clones kommerziell von Olimex oder von ECROS
als
ICE-Cube.

von Florian R. (Firma: TU Wien) (frist)


Lesenswert?

Hallo Jörg

>> Hmm, vielleicht hab ich s wieder nicht verstanden, aber da liest
>> sich jetzt so, als könnte ich einen ATmega16 in mein STK500
>> stecken, den Bootloader drauf laden, dann meine Applikation und
>> dann debugen. Dann bräuchte ich doch keine weitere Hardware kaufen.
>
> ,,Im Prinzip, ja, aber...''
>
> Wenn du dieses STK500+ATmega16 als JTAG ICE benutzen willst, kannst
> du es natürlich nicht gleichzeitig als Target zum Debuggen nehmen.
> Das JTAG ICE sitzt ja zwischen Target und Host als separates Gerät.

Ok, verstehe. Ich brauch zwei Controller.

> Sinnvoller ist es wahrscheinlich, einen ATmega16+MAX232 auf einer
> Lochrasterplatine oder so als JTAG ICE zu konfigurieren.  Ich weiß
> nicht, ob's die Schaltpläne vom sogenannten BootICE noch gibt.

Ja, scheint’s noch zu geben, hab zumindest einen Schaltplan gefunden,
aber da ist’s glaub ich gescheiter eine fertige Lösung zu kaufen, das
spart Zeit.

> Alternativ gibt's die Clones kommerziell von Olimex oder von ECROS
> als ICE-Cube.

Schau ich mir mal an, danke. Scheint so um die 40 EUR zu kosten, geht
eigentlich.

Sieht mir aber dann doch alles zu kompliziert aus, da bleib ich
vielleicht beim „UART-Debugging“ das ist ja ganz einfach, auch wenn’s
nicht wirklich viel mit Debugging zu tun hat.

Grüße
Flo

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


Lesenswert?

> Sieht mir aber dann doch alles zu kompliziert aus, da bleib ich
> vielleicht beim "UART-Debugging" das ist ja ganz einfach, auch
> wenn's nicht wirklich viel mit Debugging zu tun hat.

Klar, solange dir das genügt, nur zu.  Aber irgendwann kann es einem
auch mal richtig Zeit sparen, wenn man ,,in die Applikation
reingucken'' kann.

Solange man mit paar UART-Messages auskommt, nehme ich das auch
lieber,
zumal Einzelschritte mit dem ICE doch ein Stück langwieriger sind.

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.