Frank (Diskussion | Beiträge) K |
(→Weblinks) |
||
(11 dazwischenliegende Versionen von 9 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | 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 | + | 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 aber leider ist JTAG nicht gleich JTAG - wie man nun fälschlicherweise annehmen könnte. Das ist der Grund dafür warum jeder Halbleiterhersteller seine eignen JTAG-Adapter herstellt. JTAG ist ursprünglich nur zum automatischen Test von programmierbaren Logik-Bausteinen wie CPLD, FPGA, EPLD usw. entwickelt worden. Damit kann der Gerätehersteller die ordnungsgemäße Funktion seiner Schaltung bei eingebautem Chip in der Serienfertigung testen. Mit dem immer grösser werdenen Verbreitungsgrad von Mikrocontroller bekamen diese zunächst nur eine Testfunktion - analog zur CPLD verpasst - später wurde dazu noch die Programmierfunktion ergänzt. Damit war es nun möglich, sowohl PLD, FPGA als auch Mikrocontroller über die gleiche Schnittstelle zu programmieren und im Anschluss zu testen. |
+ | Die Firmware-Entwickler hatten zu dieser Zeit nicht die Möglichkeit, die geschriebene Firmware im Zielsystem in Echtzeit zu testen. Einzig Software-Simulatoren waren verfügbar. Das Zeitverhalten der Peripherie konnte leider nur den Idealzustand simulieren. In der Entwicklung komplexer System hat man es jedoch oft mit unvorhergesehen Situationen zutun die zu unerwartetem Verhalten der Firmware führt, die in der Simulation nicht auftreten. Um diese Situation zu Meistern wurde in den Mikrocontrollern die ON-Chip-Debug Schnittstelle implementiert und ebenfalls über das JTAG-Interface durchgeführt. | ||
− | JTAG | + | Damit ermöglicht das JTAG-Interface 3 wesentliche Funktionen die für die Entwicklung und Fertigung von Hardware mit einem Mikrocontroller entwickelt wurden. |
− | + | '''*''' Programmieren des Flash und EEproms '''abhängig''' vom der an der CPU anliegenden Taktfrequenz. | |
− | + | ||
+ | '''*''' 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. Die Steuerung der Pins des Mikrocontrollers wird durch das JTAG-Interface und seinem steuernden Testprogramm. | ||
+ | |||
+ | '''*''' 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 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
[[Bild:jtagsignale.gif|right|framed|Beispiel einer JTAG Schnittstelle]] | [[Bild:jtagsignale.gif|right|framed|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. | 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 JTAG 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]] | ||
+ | |||
+ | |||
+ | ==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. | ||
+ | Die kleineren AVR's benutzen neuerdings ein anderes Interface zur Programmierung und Debuggen. Es nennt sich Debug-Wire und ist eine Eindraht-Schnittstelle die mit Hilfe des /RESET-Aschlusses der CPU benutzt werden kann. Das DW-Protokoll ist bi-direktional seriell. | ||
+ | |||
+ | {{Ausbauwunsch|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 380€ kostet. Es gibt seit längerem AVR-JTAGICE zum Selbstbau. Der Preis beschränkt sich auf einen ATMEGA16, Max232 und einen Quarz. Das Internet bietet viele Baubeschreibung zu diesem JTAG-Adapter. Leider funktioniert dieses JTAG-Interface nur noch in der AVR-Studio 4.x. Die aktuelle Version 5 unterstützt diesen Adapter nicht mehr. Man kann jedoch mit AVRDUDE und anderen Umgebungen wie Eclipse/AVR-Chaintools weiterhin damit arbeiten. Für den Anfang wird dieser AVRJTAG-MK1 ausreichen. | ||
+ | Mitterweile hat Atmel jedoch ein Low-cost-Gerät auf dem Markt gebracht, das AVR Dragon, für etwa 80€. Der Dragon wird solo - also ohne Kabel oder Anschlussleitungen geliefert. Bis vor kurzem konnte mit diesem Board maximal 32KB großer Flash-Speicher debugged werden. Diese Grenze scheint mit dem AVR-Studio 5 und dem verbundenen Firmware-Update aufgehoben zu sein. Weiter lässt sich mit ihm XMEGA's programmieren und debuggen da er ebenfalls 1.8V - 5.0V Umgebungen unterstützt. | ||
+ | Neben der JTAG-Schnittstelle bietet es eine ISP-Schnittstelle, DebugWire, PDI sowie High-Voltage-Parallel-Programmierung. Die HV-Parallel-Programmierung wird immer dann wichtig wenn man mal die SPI-Fuse des Mikrocontrollers versehendlich gelöscht hat. Dann lässt sich der AVR nur noch über die parallele Programmierung wiederbeleben. | ||
+ | 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. | ||
+ | Atmel hat seit Frühjahr 2011 ein weiteres Mitglied der Debugger-Familie spendiert. Der JTAGICE-MK3 - ist so klein wie 2 Streichholzschachteln und wird über die USB-Schnitstelle mit dem Computer verbunden. Das JTAG-Interface ist als 10-Pin Half-Pitch-Wannenstecker (1.27mm Raster) ausgeführt. Das Kabel ist ebenfalls sehr dünn und starr. Es ist von seiner Ausführung identisch mit dem eines PATA2-Festplattenkabel eines PC's. Leider sind die Pfostensteckverbinder 2x5 - 1.27mm nicht einfach zu beschaffen und dazu noch unverhältnismäßig teuer. Conrad-Electronic führt sie und will € 2.50 pro Stück haben (Januar 2012). | ||
+ | '''Der AVRJTAG-MK3 wird nicht vom AVR-Studio4.xx unterstützt.''' Erst AVR-Studio5 unterstützt diesen Debugger. Der Preis für diesen Debugger (01/2012)liegt bei ca € 200.- und das Gerät enthält nur einen AT32 der sowohl die Schnittstelle zum USB als auch zu JTAG bedient. Der JTAG-Interface Takt kann bis zu 7.5Mhz eingestellt werden. Das ist für Mikrocontroller ab 30Mhz CPU-Takt nutzbar (JTAG-Clock = 1/4 * CPU-Clock). Zum Vergleich - der AVRJTAGICE-MK2 kostet ca. €120.- mehr, enthält 2 x ATMEGA128, kann per RS232 und USB angeschlossen werden - der JTAG-Takt bleibt jedoch bei 3.5Mhz | ||
+ | |||
+ | 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#JTAG_Stecker|RN-Definitionen]] aufgenommen wurde. Die Leitungen werden gemäß dieser Tabelle mit den Pins TDI, TDO, TMS, TCK, RESET sowie der Versorgungsspannung am AVR verbunden: | ||
+ | |||
+ | {| style="text-align:center;" {{Blauetabelle}} | ||
+ | |- | ||
+ | | 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 [[Avr#Die_Fusebits|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== | ==Quellen== | ||
− | * http://www.jtag.com/ | + | * http://www.jtag.com/ |
* Diverse Atmel Datenblätter | * Diverse Atmel Datenblätter | ||
* ELAB JTAG Interface | * ELAB JTAG Interface | ||
Zeile 32: | Zeile 92: | ||
* [[Atmel]] | * [[Atmel]] | ||
* [[On Chip Debugging]] | * [[On Chip Debugging]] | ||
+ | * [[RN-Definitionen#JTAG_Stecker|Empfohlene Standard Steckerbelegung für JTAG]] | ||
+ | * [[Hinweise zum Nachbau des JTAG ICE]] | ||
+ | |||
+ | ==Bezugsquellen== | ||
+ | ===ATMEL AVR=== | ||
+ | * Der offizielle ATMEL JTAG kann von verschiedenen Versandhäusern bestellt werden. (ca 280 €) | ||
+ | * Es gibt einen Clone von [http://shop.olimex.eu/product_info.php?products_id=259 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 [http://elmicro.com/de/avrjtag.html Elektronikladen]oder [http://thinkembedded.ch/AVR:::21.html Thinkembedded Webshop Schweiz] vertrieben. | ||
+ | * Man kann sich den JTAG auch selber bauen. Eine Anleitungen gibt es bei der TU [http://www.emsp.tu-berlin.de/lehre/Projekt-Elektronik/tools/AVR_JTAG Berlin], [http://www.scienceprog.com/build-your-own-avr-jtagice-clone/ ScienceProg] oder bei [http://www.uc-projects.com/ µController-Projects] unter "Projekte". Kosten: < 10€. | ||
==Weblinks== | ==Weblinks== | ||
− | * http://www.jtag.com/ | + | * http://www.jtag.com/ |
+ | * http://www.atmel.com/webdoc/jtagicemkii/index.html (Der oben im Bild dargestellte ICE) | ||
+ | * http://www.atmel.com/webdoc/atmelice/index.html (Atmel-ICE für SAM und AVR) | ||
+ | * http://www.atmel.com/webdoc/jtagice3/index.html (Atmel-ICE für AVR) | ||
[[Kategorie:Microcontroller]] | [[Kategorie:Microcontroller]] | ||
[[Kategorie:Grundlagen]] | [[Kategorie:Grundlagen]] |
Aktuelle Version vom 27. September 2015, 17:51 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 aber leider ist JTAG nicht gleich JTAG - wie man nun fälschlicherweise annehmen könnte. Das ist der Grund dafür warum jeder Halbleiterhersteller seine eignen JTAG-Adapter herstellt. JTAG ist ursprünglich nur zum automatischen Test von programmierbaren Logik-Bausteinen wie CPLD, FPGA, EPLD usw. entwickelt worden. Damit kann der Gerätehersteller die ordnungsgemäße Funktion seiner Schaltung bei eingebautem Chip in der Serienfertigung testen. Mit dem immer grösser werdenen Verbreitungsgrad von Mikrocontroller bekamen diese zunächst nur eine Testfunktion - analog zur CPLD verpasst - später wurde dazu noch die Programmierfunktion ergänzt. Damit war es nun möglich, sowohl PLD, FPGA als auch Mikrocontroller über die gleiche Schnittstelle zu programmieren und im Anschluss zu testen. Die Firmware-Entwickler hatten zu dieser Zeit nicht die Möglichkeit, die geschriebene Firmware im Zielsystem in Echtzeit zu testen. Einzig Software-Simulatoren waren verfügbar. Das Zeitverhalten der Peripherie konnte leider nur den Idealzustand simulieren. In der Entwicklung komplexer System hat man es jedoch oft mit unvorhergesehen Situationen zutun die zu unerwartetem Verhalten der Firmware führt, die in der Simulation nicht auftreten. Um diese Situation zu Meistern wurde in den Mikrocontrollern die ON-Chip-Debug Schnittstelle implementiert und ebenfalls über das JTAG-Interface durchgeführt.
Damit ermöglicht das JTAG-Interface 3 wesentliche Funktionen die für die Entwicklung und Fertigung von Hardware mit einem Mikrocontroller entwickelt wurden.
* Programmieren des Flash und EEproms abhängig vom der an der CPU anliegenden Taktfrequenz.
* 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. Die Steuerung der Pins des Mikrocontrollers wird durch das JTAG-Interface und seinem steuernden Testprogramm.
* 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
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 JTAG 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.
Inhaltsverzeichnis
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. Die kleineren AVR's benutzen neuerdings ein anderes Interface zur Programmierung und Debuggen. Es nennt sich Debug-Wire und ist eine Eindraht-Schnittstelle die mit Hilfe des /RESET-Aschlusses der CPU benutzt werden kann. Das DW-Protokoll ist bi-direktional seriell.
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 380€ kostet. Es gibt seit längerem AVR-JTAGICE zum Selbstbau. Der Preis beschränkt sich auf einen ATMEGA16, Max232 und einen Quarz. Das Internet bietet viele Baubeschreibung zu diesem JTAG-Adapter. Leider funktioniert dieses JTAG-Interface nur noch in der AVR-Studio 4.x. Die aktuelle Version 5 unterstützt diesen Adapter nicht mehr. Man kann jedoch mit AVRDUDE und anderen Umgebungen wie Eclipse/AVR-Chaintools weiterhin damit arbeiten. Für den Anfang wird dieser AVRJTAG-MK1 ausreichen. Mitterweile hat Atmel jedoch ein Low-cost-Gerät auf dem Markt gebracht, das AVR Dragon, für etwa 80€. Der Dragon wird solo - also ohne Kabel oder Anschlussleitungen geliefert. Bis vor kurzem konnte mit diesem Board maximal 32KB großer Flash-Speicher debugged werden. Diese Grenze scheint mit dem AVR-Studio 5 und dem verbundenen Firmware-Update aufgehoben zu sein. Weiter lässt sich mit ihm XMEGA's programmieren und debuggen da er ebenfalls 1.8V - 5.0V Umgebungen unterstützt. Neben der JTAG-Schnittstelle bietet es eine ISP-Schnittstelle, DebugWire, PDI sowie High-Voltage-Parallel-Programmierung. Die HV-Parallel-Programmierung wird immer dann wichtig wenn man mal die SPI-Fuse des Mikrocontrollers versehendlich gelöscht hat. Dann lässt sich der AVR nur noch über die parallele Programmierung wiederbeleben. 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. Atmel hat seit Frühjahr 2011 ein weiteres Mitglied der Debugger-Familie spendiert. Der JTAGICE-MK3 - ist so klein wie 2 Streichholzschachteln und wird über die USB-Schnitstelle mit dem Computer verbunden. Das JTAG-Interface ist als 10-Pin Half-Pitch-Wannenstecker (1.27mm Raster) ausgeführt. Das Kabel ist ebenfalls sehr dünn und starr. Es ist von seiner Ausführung identisch mit dem eines PATA2-Festplattenkabel eines PC's. Leider sind die Pfostensteckverbinder 2x5 - 1.27mm nicht einfach zu beschaffen und dazu noch unverhältnismäßig teuer. Conrad-Electronic führt sie und will € 2.50 pro Stück haben (Januar 2012). Der AVRJTAG-MK3 wird nicht vom AVR-Studio4.xx unterstützt. Erst AVR-Studio5 unterstützt diesen Debugger. Der Preis für diesen Debugger (01/2012)liegt bei ca € 200.- und das Gerät enthält nur einen AT32 der sowohl die Schnittstelle zum USB als auch zu JTAG bedient. Der JTAG-Interface Takt kann bis zu 7.5Mhz eingestellt werden. Das ist für Mikrocontroller ab 30Mhz CPU-Takt nutzbar (JTAG-Clock = 1/4 * CPU-Clock). Zum Vergleich - der AVRJTAGICE-MK2 kostet ca. €120.- mehr, enthält 2 x ATMEGA128, kann per RS232 und USB angeschlossen werden - der JTAG-Takt bleibt jedoch bei 3.5Mhz
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
- http://www.jtag.com/
- Diverse Atmel Datenblätter
- ELAB JTAG Interface
Siehe auch
- Avr
- Atmel
- On Chip Debugging
- Empfohlene Standard Steckerbelegung für JTAG
- Hinweise zum Nachbau des JTAG ICE
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 Elektronikladenoder Thinkembedded Webshop Schweiz 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
- http://www.jtag.com/
- http://www.atmel.com/webdoc/jtagicemkii/index.html (Der oben im Bild dargestellte ICE)
- http://www.atmel.com/webdoc/atmelice/index.html (Atmel-ICE für SAM und AVR)
- http://www.atmel.com/webdoc/jtagice3/index.html (Atmel-ICE für AVR)