Forum: Mikrocontroller und Digitale Elektronik JTAG


von John (Gast)


Lesenswert?

Hi.
Ich habe ja nun schon oft was von dem JTAG gehört.
Kein mir einer kurz erklären, wie es arbeitet, für was ich es einsetze
und in welcher form ich den controller (Mega16) Damit überwachen kann.

Vielen Dank!
Gruß

von A.K. (Gast)


Lesenswert?

JTAG erlaubt es, zur Laufzeit den mehr oder minder vollständigen Zustand
des Prozessors auszulesen und evtl. auch zu modifizieren. Darin sind
auch diverse Debugging-Mechanismen enthalten, wie z.B.Breakpoints.

Dazu braucht's ein Interface (google: evertool) und AVR Studio oder
das äquivalente Dings im WinAVR (avarice oder so ähnlich). Und
natürlich einen AVR der's unterstützt, wie eben den Mega16.

Ach ja: Das Flash kann man damit natürlich auch programmieren. JTAG
ersetzt also ISP, benötigt aber anders als jenes 4 reservierte
Leitungen.

von A.K. (Gast)


Lesenswert?

Technisch gesehen ist es auch wiederum nichts anderes als SPI, mit dem
Interface als Master und dem Prozessor als Slave. Das Protokoll ist
freilich proprietär.

von John (Gast)


Lesenswert?

Danke für deine schnelle antwort!
Kann ich in meine Programme die ich mit WINAVR erstellt habe auch
direkte breakpoints setzen ?
Ich denke mal wenn man richtig damit umgehen kann, kann man sich
einiges an debugging zeit sparen. Oder lohnt es sich nicht wirklich das
teil zu beherrschen ?
Arbeitet das JTAG eigentlich einigermaßen in realtime ?

Gruß

von A.K. (Gast)


Lesenswert?

AVR Studio Debugging und WinAVR vertragen sich recht gut (mit -gdwarf-2
übersetzen).

Der µC läuft ganz normal, aber Einblick gibt's nur während der
Prozessor steht, weil angehalten oder Breakpoint und dergleichen. Bloss
hört natürlich die Welt nicht auf sich zu drehen, bloss weil der µC grad
steht, d.h. externe Geräte kriegen nichts davon mit und laufen evtl. auf
Timeouts oder andere Probleme. Aber das ist unvermeidlich.

Breakpoints sind Hardware - ein paar gibt's von Haus aus (3 oder so),
für mehr wird ad-hoc geflasht. Irgendwelche Data Watchpoints gibt's
auch, ich habe sie bisher aber nicht verwendet.

Ich finde es lohnt sich. Zumal es im Nachbau wenig kostet (Mega16,
MAX232, DB9, etwas Hühnerfutter). Wird seriell angeschlossen, also
evtl. USB/Ser-Konverter einplanen.

von Stefan May (Gast)


Lesenswert?

http://de.wikipedia.org/wiki/JTAG

Das war ursprünglich dazu gedacht, einen Chip zu testen. Da in der
Chipherstellung jeder Hersteller sein eigenes Testequipment entwickelt
hat, konnte man die eigenen Chips nicht in fremden Fabriken herstellen
lassen. Aus diesem Grunde wurde die Joint Test Action Group gegründet,
mit dem Ziel eine einheitliche Schnittstelle zu schaffen. Mit dieser
elektrischen Schnittstelle konnte dann eine Fabrik den Chip seines
Auftraggebers testen. Dabei nicht vergessen, daß viele kleine
Chipproduzenten überhaupt keine eigene Fab haben.

JTAG ist erst mal nichts anderes als eine elektrisch definierte
Schnittstelle, auf der Daten übertragen werden können. Was übertragen
wird, bleibt das Geheimnis des jeweiligen Chipherstellers. Man will
sich ja nicht in die Karten schauen lassen.

Später entdeckte man die Vorteile des JTAG auch in Mikroprozessoren und
CPLDs oder FPGAs. Dort wird es neben dem Testen des Chip auch für die
Programmierung desselben verwendet. Vorteil: Man benötigt nur einen
Adapter für ein und dieselbe Aufgabe. Leider haben die Hersteller hier
das Rad immer wieder neu erfunden und so gibt es unzählige Varianten
von JTAG-Adaptern.

Im den Mega16 kann man mit dem JTAG Interface seine Programme innerhalb
der Hardware debuggen. Das hat mehrere Vorteile. Zum einen ist das ganze
nicht simuliert, zum anderen hat man auch seine eigene Hardware, die man
so debuggen kann.

ciao, Stefan.

von Hannes (Gast)


Lesenswert?

@Stefan:
>>Im den Mega16 kann man mit dem JTAG Interface seine Programme
innerhalb
der Hardware debuggen

Was bedeutet "innerhalb der Hardware debuggen"?

MfG

von Stefan May (Gast)


Lesenswert?

Na Du lötest den Chip auf die Platine mit dem ganzen anderen Geraffel,
was Du so brauchst. Mit dem ISP-Adapter kannst Du jetzt nur
programmieren und hoffen, daß alles funktioniert. Wenn nicht, dann viel
Spaß beim raten, wo er gerade hängt. Mit JTAG kannst Du den Prozessor
anhalten, Register auslesen, Breakpoints setzen usw. Alles was man zum
debuggen so braucht. Und das ohne Simulation, sondern mit Deiner
Schaltung.

ciao, Stefan.

von John (Gast)


Lesenswert?

klingt ja hoch interessant ! In welchen formen kann man den breakpoints
setzen ? Gibt es eine art assembler befehl, der einen break auslöst ?
Oder wie kann ich die CPU anhalten ?

von A.K. (Gast)


Lesenswert?

Schon mal den AVR Studio Simulator angeworfen? Genau so. Nur eben als
Interface nicht den Simulator sondern ICE auswählen.

von John (Gast)


Lesenswert?

Gibt es auch eine möglickeit anzuzeigen, welcher c code gerade
ausgefügrt wird ?

also z.B.
Im AVR Studio:

-------wirte_mmc(a,c);
mov a, b
add a, 0x2
mul a, ax  <-- Breakpoint
mox b, c

...
(ist jetzt natürlich frei erfunden)
oder kann ich nur asm anzeigen ? dann ist es ja relativ schwer die
richtige stelle im Programm zu finden weil man sich an nicht
srientieren kann.

MfG

von A.K. (Gast)


Lesenswert?

Herrje, jetzt probier's halt mal aus.

Testprogramm mit WinAVR bauen. Im AVR Studio das ELF File laden, den
Debugger mit Simulator anwerfen und damit rumspielen. Notfalls sogar
mal Doku lesen. Beantwortet wohl mehr Fragen als Du hier stellen
kannst.

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.