Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Rasenmaehroboter fuer schwierige und grosse Gaerten im Test

Zeile 3: Zeile 3:
 
JTAG ist ein  standardisiertes Programmier- und Testinterface für digitale Schaltkreise. Eigentlich für programmierbare Logikbausteine entwickelt, erfreut sich der auch als IEEE 1149.1 bekannte Standard einer wachsenden Beliebtheit im Mikrocontroller-Markt.
 
JTAG ist ein  standardisiertes Programmier- und Testinterface für digitale Schaltkreise. Eigentlich für programmierbare Logikbausteine entwickelt, erfreut sich der auch als IEEE 1149.1 bekannte Standard einer wachsenden Beliebtheit im Mikrocontroller-Markt.
  
Viele neuere Atmel AVRs mit mehr als 30 Pins besitzen eine JTAG Schnittstelle. Die meisten (?) ARM Controller haben ein JTAG interface.
+
JTAG ermöglicht typischerweise 3 wesentliche Funktionen für die Entwicklung und Fertigung von Hardware, die mit einem µC bestückt ist.
JTAG ermöglicht 3 wesentliche Funktionen für die Entwicklung und Fertigung von Hardware, die mit einem megaAVR bestückt ist.
+
  
 
* Programmieren des Flash und EEproms unabhängig vom dem an der CPU anliegenden Clocks.
 
* Programmieren des Flash und EEproms unabhängig vom dem an der CPU anliegenden Clocks.
Zeile 19: Zeile 18:
 
Die interne Boundary Chain der CPU wird dazu benutzt, alle internen Register und Ports der CPU zu lesen und zu schreiben. Dadurch ist es möglich, jeden Pin der CPU fernzusteuern bzw. einzulesen. Durch entsprechendes Steuern der IO-Pins der CPU wird auf der Hardware (Board) ein bestimmtes Verhalten erzeugt, das dann über die IO-Pins wieder eingelesen werden kann. Da bei bestimmten Soll-Vorgaben durch PIN-Outputs auch eine bestimmte Reaktion der sonstigen Hardware erwartet werden muss, kann durch einlesen der Pins und anschliessendem Vergleich von Ist- und Sollwert auf Hardware Fehler des Boards geschlossen werden. Anhand des Schaltplans/Layouts und den auftretenden Fehlern ist dann sogar eine recht gute Bestimmung der Art des Fehlers und dessen Position auf dem Board möglich.
 
Die interne Boundary Chain der CPU wird dazu benutzt, alle internen Register und Ports der CPU zu lesen und zu schreiben. Dadurch ist es möglich, jeden Pin der CPU fernzusteuern bzw. einzulesen. Durch entsprechendes Steuern der IO-Pins der CPU wird auf der Hardware (Board) ein bestimmtes Verhalten erzeugt, das dann über die IO-Pins wieder eingelesen werden kann. Da bei bestimmten Soll-Vorgaben durch PIN-Outputs auch eine bestimmte Reaktion der sonstigen Hardware erwartet werden muss, kann durch einlesen der Pins und anschliessendem Vergleich von Ist- und Sollwert auf Hardware Fehler des Boards geschlossen werden. Anhand des Schaltplans/Layouts und den auftretenden Fehlern ist dann sogar eine recht gute Bestimmung der Art des Fehlers und dessen Position auf dem Board möglich.
  
 +
Im Prinzip könnte die selbe JATG Interface-Hardware für alle Chips ausreichen.  Praktisch funtioniert das allerdings nicht, denn für die meisten µCs ist nicht offengelegt, wie die einzelnen Funktione angesprochen werden.  Es wird also meistens µC-spezifische Software und als Folge davon auch µC-spezifische Hardware benötigt.
  
 
[[Bild:jtagavr.gif|center|framed|Beispiel eines Avr-JTAG Interface von Atmel]]
 
[[Bild:jtagavr.gif|center|framed|Beispiel eines Avr-JTAG Interface von Atmel]]
Zeile 25: Zeile 25:
 
==AVR JTAG==
 
==AVR JTAG==
 
Dieser Abschnitt befasst sich mit dem JTAG-Interface der AVR-Mikrocontroller von Atmel.
 
Dieser Abschnitt befasst sich mit dem JTAG-Interface der AVR-Mikrocontroller von Atmel.
 +
 +
Viele neuere Atmel AVRs mit mehr als 30 Pins besitzen eine JTAG Schnittstelle. Die meisten (?) ARM Controller haben ein JTAG interface.
 +
 
{{Ausbauwunsch|Debuggen per JTAG}}
 
{{Ausbauwunsch|Debuggen per JTAG}}
  
  
 
===JTAG-Programmer===
 
===JTAG-Programmer===
Die JTAG-Schnittstelle der AVRs war lange Zeit für Bastler eher uninteressant, da das nötige Programmiergerät, der JTAG ICE MKII, etwa 280€ kostet. Mitterweile hat Atmel jedoch ein Low-cost-Gerät auf dem Markt gebracht, das AVR Dragon, für etwa 80€. Es kann allerdings nur AVRs mit bis zu 32kB Programmspeicher debuggen. Neben der JTAG-Schnittstelle bietet es eine ISP-Schnittstelle sowie HV-Parallel-Programmierung. Angeschlossen wird es per USB. Das xc3sprog Projekt auf Sourceforge enthält eine weiterentwickelte Version "javr" (ursprünglich non Anton Erasmus) zum Programmieren einiger AVR Chip (Can128, Mega128) mit verschiedenen JTAG Adaptern unter Linux und Windows. Bauteile mit abweichenden Programmierparametern können im Sourcecode ergänzt werden.
+
Die JTAG-Schnittstelle der AVRs war lange Zeit für Bastler eher uninteressant, da das nötige Programmiergerät, der JTAG ICE MKII, etwa 280€ kostet. Mitterweile hat Atmel jedoch ein Low-cost-Gerät auf dem Markt gebracht, das AVR Dragon, für etwa 80€. Es kann allerdings nur AVRs mit bis zu 32kB Programmspeicher debuggen. Neben der JTAG-Schnittstelle bietet es eine ISP-Schnittstelle sowie HV-Parallel-Programmierung. Angeschlossen wird es per USB. Zum JTAG ICE MKII gibt es mittlerweilen auch billigere Nachbauten, und Bauanleitungen, die mit der original Software von Atmel laufen.
 +
 
 +
Das xc3sprog Projekt auf Sourceforge enthält eine weiterentwickelte Version "javr" (ursprünglich non Anton Erasmus) zum Programmieren einiger AVR Chip (Can128, Mega128) mit verschiedenen JTAG Adaptern unter Linux und Windows. Bauteile mit abweichenden Programmierparametern können im Sourcecode ergänzt werden.  
  
 
===Anschluss===
 
===Anschluss===

Version vom 27. Juli 2010, 21:30 Uhr

Der von der Joint Test Action Group entwickelte und häufig als ’JTAG Standard’ bezeichnete Standard IEEE 1149.1, wurde in der gesamten Industrie übernommen

JTAG ist ein standardisiertes Programmier- und Testinterface für digitale Schaltkreise. Eigentlich für programmierbare Logikbausteine entwickelt, erfreut sich der auch als IEEE 1149.1 bekannte Standard einer wachsenden Beliebtheit im Mikrocontroller-Markt.

JTAG ermöglicht typischerweise 3 wesentliche Funktionen für die Entwicklung und Fertigung von Hardware, die mit einem µC bestückt ist.

  • Programmieren des Flash und EEproms unabhängig vom dem an der CPU anliegenden Clocks.
  • Debuggen in der Schaltung (ICE) mit der original CPU ohne zusätzliche Spezial Fassungen JTAG Debugging bietet die Funktionen:
    • Breakpoint setzen/rücksetzen
    • Run/Stop
    • Single Step
    • Watches auf Variable setzen
    • Register und IO-Port view
  • Testen der CPU und des kompletten Ports über das Boundary Scan Feature der CPU. Dazu muss das Board nur Spannung haben, ein Programm in der CPU ist nicht notwendig. Nicht einmal der Oszillator muss dazu funktionieren.
Beispiel einer JTAG Schnittstelle

Die interne Boundary Chain der CPU wird dazu benutzt, alle internen Register und Ports der CPU zu lesen und zu schreiben. Dadurch ist es möglich, jeden Pin der CPU fernzusteuern bzw. einzulesen. Durch entsprechendes Steuern der IO-Pins der CPU wird auf der Hardware (Board) ein bestimmtes Verhalten erzeugt, das dann über die IO-Pins wieder eingelesen werden kann. Da bei bestimmten Soll-Vorgaben durch PIN-Outputs auch eine bestimmte Reaktion der sonstigen Hardware erwartet werden muss, kann durch einlesen der Pins und anschliessendem Vergleich von Ist- und Sollwert auf Hardware Fehler des Boards geschlossen werden. Anhand des Schaltplans/Layouts und den auftretenden Fehlern ist dann sogar eine recht gute Bestimmung der Art des Fehlers und dessen Position auf dem Board möglich.

Im Prinzip könnte die selbe JATG Interface-Hardware für alle Chips ausreichen. Praktisch funtioniert das allerdings nicht, denn für die meisten µCs ist nicht offengelegt, wie die einzelnen Funktione angesprochen werden. Es wird also meistens µC-spezifische Software und als Folge davon auch µC-spezifische Hardware benötigt.

Beispiel eines Avr-JTAG Interface von Atmel


AVR JTAG

Dieser Abschnitt befasst sich mit dem JTAG-Interface der AVR-Mikrocontroller von Atmel.

Viele neuere Atmel AVRs mit mehr als 30 Pins besitzen eine JTAG Schnittstelle. Die meisten (?) ARM Controller haben ein JTAG interface.

Dieser Artikel ist noch lange nicht vollständig. Der Auto/Initiator hofft das sich weitere User am Ausbau des Artikels beteiligen.

Das Ergänzen ist also ausdrücklich gewünscht! Besonders folgende Dinge würden noch fehlen:

Debuggen per JTAG



JTAG-Programmer

Die JTAG-Schnittstelle der AVRs war lange Zeit für Bastler eher uninteressant, da das nötige Programmiergerät, der JTAG ICE MKII, etwa 280€ kostet. Mitterweile hat Atmel jedoch ein Low-cost-Gerät auf dem Markt gebracht, das AVR Dragon, für etwa 80€. Es kann allerdings nur AVRs mit bis zu 32kB Programmspeicher debuggen. Neben der JTAG-Schnittstelle bietet es eine ISP-Schnittstelle sowie HV-Parallel-Programmierung. Angeschlossen wird es per USB. Zum JTAG ICE MKII gibt es mittlerweilen auch billigere Nachbauten, und Bauanleitungen, die mit der original Software von Atmel laufen.

Das xc3sprog Projekt auf Sourceforge enthält eine weiterentwickelte Version "javr" (ursprünglich non Anton Erasmus) zum Programmieren einiger AVR Chip (Can128, Mega128) mit verschiedenen JTAG Adaptern unter Linux und Windows. Bauteile mit abweichenden Programmierparametern können im Sourcecode ergänzt werden.

Anschluss

Atmel schlägt einen 10poligen Wannenstecker vor, wie er auch in den RN-Definitionen aufgenommen wurde. Die Leitungen werden gemäß dieser Tabelle mit den Pins TDI, TDO, TMS, TCK, RESET sowie der Versorgungsspannung am AVR verbunden:

Pin Signal AVR Pin
Pin 01 TCK TCK
Pin 02 GND GND
Pin 03 TDO TDO
Pin 04 VREF VCC
Pin 05 TMS TMS
Pin 06 NSRST RESET
Pin 07 VCC nicht verbunden
Pin 08 NTRST nicht verbunden
Pin 09 TDI TDI
Pin 10 GND GND

JTAG aktivieren/ deaktivieren

Um JTAG zu aktivieren, müssen die beiden Fusebits JTAGEN und OCDEN programmiert werden. Dies ist im Auslieferungszustand der AVRs bereits der Fall. Falls sie zuvor umprogrammiert wurde, müssen sie erst wieder über die ISP-Schnittstelle programmiert werden, bevor ein JTAG-Zugriff möglich ist.

Zu beachten ist jedoch, dass die Pins des JTAG-Interfaces am AVR jetzt nicht mehr als normale IOs genutzt werden können! Dies ist eine beliebte Anfängerfalle. Das Problem: "einige Pins an Port C funktionieren nicht!" taucht regelmäßig im Forum auf. Die Lösung ist es, das JTAG zu deaktivieren. Falls man es sowieso nicht nutzen will, schaltet man es über die Fusebits ab. Alternativ kann man es aber auch per Software deaktivieren. Dazu muss man das Bit JTD im Register MCUSR innerhalb von vier Takten zweimal setzen. Danach kann man die Pins im Programm wieder frei benutzen. Der JTAG-Programmer kann trotzdem noch eine Verbindung zum Programmieren (nicht zu Debuggen!) aufbauen, indem er den AVR über die NSRST-Leitung resettet.

Software zum Programmieren über JTAG

Dragon und JTAG ICE MKII werden über das AVRstudio angesprochen, das von Atmel kostenlos angeboten wird. Nachdem man über den "Connect"-Dialog das entsprechende Gerät ausgewählt hat, stellt man den "Programming Mode" (Registerkarte "Main") auf JTAG um.



Quellen

Siehe auch

Bezugsquellen

ATMEL AVR

  • Der offizielle ATMEL JTAG kann von verschiedenen Versandhäusern bestellt werden. (ca 280 €)
  • Es gibt einen Clone von Olimex für ca 75€. Diesen Clone gibt es für ein paar € mehr auch mit eingebauten USB/Seriell-Wandler.
  • Beide Clones werden für ca den halben Preis auch vom Elektronikladen vertrieben.
  • Man kann sich den JTAG auch selber bauen. Eine Anleitungen gibt es bei der TU Berlin, ScienceProg oder bei µController-Projects unter "Projekte". Kosten: < 10€.

Weblinks


LiFePO4 Speicher Test