Forum: Mikrocontroller und Digitale Elektronik JTAG oder debugWIRE


von Johannes S. (bengun)


Lesenswert?

Für ein Projekt suche ich einen µC den ich in der Schaltung( 
Motorsteuerung) programmieren und debuggen kann.
Mir steht ein JTAGICE mk2 zur Verfügung, in der Deviceliste finde ich 
nun unter Interface JTAG oder debugWIRE .
Wo ist da der Unterschied und was unkomplizierter?
Vielen Dank im Vorraus.

von Johannes M. (johnny-m)


Lesenswert?

Der Unterschied ist, dass DebugWire nur bei den kleinen AVRs mit wenig 
I/O-Pins anstelle von JTAG implementiert ist, da es nur einen I/O-Pin 
benötigt, JTAG aber 4 davon. JTAG ist aber eben deutlich 
leistungsfähiger, macht aber nur Sinn bei µCs, bei denen man auf 4 I/Os 
verzichten kann.

Dementsprechend wirst Du das Interface anhand des von Dir verwendeten 
Controllers auswählen müssen, eben je nachdem, welches er unterstützt.

von MNR (Gast)


Lesenswert?

>JTAG ist aber eben deutlich leistungsfähiger

Inwiefern? Was kann JTAG, was du mit DebugWire nicht kannst?

von Johannes S. (bengun)


Lesenswert?

Noch habe ich die freie Wahl des µC, da ich aber Neuling bin auf diesem 
Gebiet, sollte es möglichst einfach sein. Kann ich dann über ISP 
debuggen?

von Johannes M. (johnny-m)


Lesenswert?

MNR wrote:
>>JTAG ist aber eben deutlich leistungsfähiger
>
> Inwiefern? Was kann JTAG, was du mit DebugWire nicht kannst?
JTAG ist schneller...

Johannes Selk wrote:
> Noch habe ich die freie Wahl des µC, da ich aber Neuling bin auf diesem
> Gebiet, sollte es möglichst einfach sein. Kann ich dann über ISP
> debuggen?
Über ISP kann man nicht debuggen, nur programmieren.

von MNR (Gast)


Lesenswert?

>JTAG ist schneller...

Dann solltest du das auch schreiben. Deutlich leistungsfähiger klingt 
nach mehr Funktionalität, was definitiv nicht der Fall ist.

von Johannes M. (johnny-m)


Lesenswert?

Oh, da ist aber einer wirklich pingelig. Ein großes SORRY, dass ich 
mich SO unklar ausgedrückt habe.

von Johannes S. (bengun)


Lesenswert?

Wenn ich also beim Mega 16 die Anschlüsse Vcc, GND, TDI, TDO, TMS und 
TCK auf einen Pfostenstecker lege kann ich die Schaltung später mit dem 
JTAGICE mk2 debuggen.
Oder muss ich noch was bedenken.

von fabs (Gast)


Lesenswert?

wenn an den Pins sonst nix dran ist, musste nur sicher sein, dass die 
JTAGEN Fuse gesetzt ist.

Gruß
Fabian

von Hannes L. (hannes)


Lesenswert?

Schau doch einfach mal, wie es Andere machen:
http://www.pollin.de/shop/downloads/D810038B.PDF
Dieses Board unterstützt (auch) Mega32 und hat einen JTAG-Anschluss. Ein 
Schaltplan ist dabei.

...

von Johannes S. (bengun)


Lesenswert?

..so werde ich es mal probieren, vielen Dank....

von Bernd (Gast)


Lesenswert?

also gibt es wirklich nur den Geschwindigkeitsunterschied? ich meine mal 
irgendwo aufgeschnappt zu haben, dass DebugWIRE im Gegensatz zu JTAG nur 
"Befehle" durchführen kann ich auch die CPU kann. was auch immer es 
sonst noch geben soll...

von guest (Gast)


Lesenswert?

>also gibt es wirklich nur den Geschwindigkeitsunterschied? ich meine mal
>irgendwo aufgeschnappt zu haben, dass DebugWIRE im Gegensatz zu JTAG nur
>"Befehle" durchführen kann ich auch die CPU kann. was auch immer es
>sonst noch geben soll...

jedes setzen/löschen von breakpoints mit debugwire bringt ein 
neuschreiben des flashs mit sich. die entwicklung umfangreicherer 
projekte dürfte damit schwer fallen, ohne gefahr zulaufen, den µc 
"totzudebuggen". ein ernsthaftes debuggen mit debugwire in fertig 
aufgebauter/gelöteter zielhardware seh ich als absolutes nogo.

von spess53 (Gast)


Lesenswert?

Hi

>jedes setzen/löschen von breakpoints mit debugwire bringt ein
>neuschreiben des flashs mit sich. die entwicklung umfangreicherer
>projekte dürfte damit schwer fallen, ohne gefahr zulaufen, den µc
>"totzudebuggen". ein ernsthaftes debuggen mit debugwire in fertig
>aufgebauter/gelöteter zielhardware seh ich als absolutes nogo.

Bis aus die ATMega48...328 haben eigentlich nur ATTinys mit relativ 
kleinen Flashspeicher Debugwire. Um mit Debuggen die garantierten 10000 
Flashzyklen vollzubekommen muss man schon eine komplette Niete in Punkto 
Programmieren sein.

MfG Spess

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

>Um mit Debuggen die garantierten 10000
>Flashzyklen vollzubekommen muss man schon eine komplette Niete in Punkto
>Programmieren sein.

Ich habs schon geschafft ;) Eine RGB-LED-Matrix mit Animationen versorgt 
und alle paar Zeilen geflasht. Nach ca. 4 Monaten basteln musste ein 
zweiter M644 rein :P

von Peter D. (peda)


Lesenswert?

Nils S. schrieb:
> Ich habs schon geschafft ;) Eine RGB-LED-Matrix mit Animationen versorgt
> und alle paar Zeilen geflasht. Nach ca. 4 Monaten basteln musste ein
> zweiter M644 rein :P

Ich frage mich ganz entsetzt, wie kann man dafür 4 Monate und 10000 
Programmierzyklen brauchen.
Du hast doch nicht etwa jeden einzelnen Schritt hart kodiert?
Man schreib einmal das Ansteuerprogramm und gut is.

Die Animation selber ist dann nur ne Tabelle mit den Daten. Die würde 
ich sogar in nen externen seriellen EEPROM/Flash/SD-Card ablegen, dann 
kann man sie schnell wechseln.


Peter

von Hc Z. (mizch)


Lesenswert?

MNR schrieb:
>>JTAG ist schneller...
>
> Dann solltest du das auch schreiben. Deutlich leistungsfähiger klingt
> nach mehr Funktionalität, was definitiv nicht der Fall ist.

Doch:
1
Note  that  the debugWire environment is further limited, compared to JTAG.  It does not offer hardware breakpoints, so
2
all breakpoints have to be implemented as software breakpoints by  rewriting  flash  pages  using  BREAK  instructions.
3
(Software  breakpoints  are  currently  not  implemented  by avarice.)  Some memory spaces (fuse and lock bits) are not
4
accessible through the debugWire protocol.

(man avarice)

von eklige Tunke (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Nils S. schrieb:
>> Ich habs schon geschafft ;) Eine RGB-LED-Matrix mit Animationen versorgt
>> und alle paar Zeilen geflasht. Nach ca. 4 Monaten basteln musste ein
>> zweiter M644 rein :P
> Ich frage mich ganz entsetzt, wie kann man dafür 4 Monate und 10000
> Programmierzyklen brauchen.
> Du hast doch nicht etwa jeden einzelnen Schritt hart kodiert?
Klar, sonst wäre der nie auf 83-mal Flashen am Tag gekommen. ;-)
Mal im Ernst, vielleicht hat er Pech mit dem µC gehabt und die 10.000 
nie erreicht?
Vielleicht war der µC auch schon ordentlich von Vorgänger-Projekten 
vorbelastet?

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

>Ich frage mich ganz entsetzt, wie kann man dafür 4 Monate und 10000
>Programmierzyklen brauchen.
>Du hast doch nicht etwa jeden einzelnen Schritt hart kodiert?
>Man schreib einmal das Ansteuerprogramm und gut is.

>Die Animation selber ist dann nur ne Tabelle mit den Daten. Die würde
>ich sogar in nen externen seriellen EEPROM/Flash/SD-Card ablegen, dann
>kann man sie schnell wechseln.

Mittlerweile ist mir vieles klarer als am Anfang ;) Ich war froh nach 
zwei Wochen die LEDs am Laufen zu haben und die Animationen bestanden 
aus unzähligen Arrays und _delay_ms :), von UART, EEPs und sonstigen 
kaum Ahnung - Keine Hardware.
So ziemlich jede Änderung wollte überwacht sein und ob das nun 10000, 
8683 oder 11033 kann ich wirklich nicht mit bestimmtheit sagen...

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.