<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ralfiboy</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ralfiboy"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Ralfiboy"/>
	<updated>2026-04-10T21:56:54Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94759</id>
		<title>JTAG</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94759"/>
		<updated>2017-01-05T18:44:04Z</updated>

		<summary type="html">&lt;p&gt;Ralfiboy: /* ARM JTAG */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;J&#039;&#039;&#039;oint &#039;&#039;&#039;T&#039;&#039;&#039;est &#039;&#039;&#039;A&#039;&#039;&#039;ction &#039;&#039;&#039;G&#039;&#039;&#039;roup, entwickelte den Standard IEEE 1149.1. Das JTAG-Protokoll ermöglicht das Programmieren, Debuggen und Testen von ICs, [[Prozessor]]en und [[FPGA]]s direkt in der Schaltung.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2737 AVR JTAGICE] (gelegentlich auch &#039;&#039;JTAGICE mkI&#039;&#039; genannt) von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3353 AVR JTAGICE mkII] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=17213&amp;amp;category_id=163&amp;amp;family_id=682&amp;amp;subfamily_id=2138 AVR JTAGICE 3] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/tools/ATATMEL-ICE.aspx ATMEL-ICE] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3891 AVR Dragon] von Atmel.&lt;br /&gt;
** [http://www.atmel.com/dyn/resources/prod_documents/doc8112.pdf AVR077: Opto Isolated Emulation for the DebugWIRE] (auch für AVR JTAGICE mkII nützlich)&lt;br /&gt;
* [http://gandalf.arubi.uni-kl.de/avr_projects/evertool/index.html Evertool und Evertool light] von Martin Thomas. Evertool unterstützt JTAG analog zu AVR JTAGICE und [[ISP]] nach [[STK500]] Protokoll. Evertool light nur JTAG. &lt;br /&gt;
* [http://aquaticus.info/jtag JTAG for AVR processors] bei Aquaticus ROV. (Englisch)&lt;br /&gt;
* [http://www.olimex.com/dev/avr-jtag.html AVR-JTAG] und [http://www.olimex.com/dev/avr-usb-jtag.html AVR-USB-JTAG] von [http://www.olimex.com/dev/index.html Olimex] (kommerziell). Alternativer Lieferant ist der [http://elmicro.com/de/avrjtag.html Elektronikladen].&lt;br /&gt;
* [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/35 AVR-JTAG] und [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/52 AVR-USB-JTAG] von [http://www.gadgetPool.de gadgetPool] (kommerziell)&lt;br /&gt;
* [http://www.floppyspongeonline.com/automation/isojtagisp/isojtagisp.php IsoJtagISP] und [http://www.floppyspongeonline.com/automation/isojtag/isojtag.php IsoJTAG] von Floppy Sponge Automation ([[USB]], optisch isoliert). Hier eine modifizierte Version von [http://www.madwizard.org/electronics/projects/avrjtag Madwizard].&lt;br /&gt;
* [http://www.ere.co.th/(gs5afz55q5idyyn0a1ibkl45)/default.aspx?RedirectPage=Products&amp;amp;RedirectPage1=ProductsDetail&amp;amp;ProductID=56 JTAGAVRU1] (AVR JTAGICE kompatibel, USB, 1.8-5.5V) (existiert wohl nicht mehr ?)&lt;br /&gt;
* [http://www.avrfreaks.net/index.php?module=Freaks%20Tools&amp;amp;func=viewItem&amp;amp;item_id=630 JTAGcable II] (AVR JTAGICE kompatibel, USB, 1.8-6 V)&lt;br /&gt;
* [http://www.miklobit.com/JTAG_TWICE.530+B6Jkw9Mw__.0.html MB-JTAG-TWICE] (AVR JTAGICE kompatibel, RS232, 2.7-5.5V, +ISP STK500v2) - Free update to version compatible with AVR JTAG MKII (coming soon)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Programmer und Debugger für USB (MKI) &lt;br /&gt;
* link tot 20100521 [http://www.paktek-shop.de/epages/61807596.sf/de_DE/?ObjectPath=/Shops/61807596/Categories/Produkte/AVR-Programmer]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pinout AVR-JTAG ===&lt;br /&gt;
&lt;br /&gt;
AVR benutzt einen 10poligen IDC-Stecker mit 2,54 mm Pinabstand und folgendem Pinout:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE mkII&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| (frei) || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| Vcc || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bemerkungen:&lt;br /&gt;
&lt;br /&gt;
* VTref &#039;&#039;muss&#039;&#039; beschaltet werden, von dieser Spannung werden die Pegelwandler des JTAG-ICE gespeist, und das ICE weigert sich zu arbeiten wenn keine Spannung anliegt&lt;br /&gt;
* nTRST wird vom JTAG ICE nicht benutzt, soll aber aus Kompatibilität mit anderen JTAG-Implementierungen frei bleiben&lt;br /&gt;
* Pin 7 war in der ersten Version des Atmel JTAG ICE als &#039;&#039;Vsupply&#039;&#039; bezeichnet und diente dort der Speisung des JTAG ICE aus der Zielhardware&lt;br /&gt;
* nSRST muss nicht zwingend an &#039;&#039;/RESET&#039;&#039; des AVR gelegt werden; wenn er fehlt,  kann das JTAG ICE eine schlafende CPU nicht wecken oder mit einem Controller arbeiten, dessen JTAG-Schnittstelle von der Software außer Betrieb genommen worden ist (Bit &#039;&#039;JTD&#039;&#039; im Register &#039;&#039;MCUCSR&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
AVR-JTAG lässt sich mit anderen JTAG-Implementierungen (oder weiteren AVRs) zu einer &#039;&#039;daisy chain&#039;&#039; verketten; dabei schiebt jeder AVR 4 Bits.&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
=== USB Anschluss auf Basis des FTDI FT2232 ===&lt;br /&gt;
Diese Adapter funktionieren mit Opensource-Tools wie OpenOCD (ARM-Debugger), xc3sprog (Xilinx Programmer), urjtag (generisches JTAG-Tool), gojtag, etc. Manchmal sind leichte Anpassungen des Source nötig. Bei einigen Adaptern ist auch die serielle Schnittstelle (3.3V-Level) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
* [http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/usbjtag/usbjtag.html USB to JTAG Interface] von Hubert Högl, Schaltplan&lt;br /&gt;
* [http://www.embedded-projects.net/index.php?page_id=175 USB JTAG Interface für usbprog und OpenOCD] von Benedikt Sauter (Zurzeit gibt es Bausätze für 22€. Der Adapter ist ein Universaladapter der mit verschiedenen Firmwares zu verschiedenen Geräte werden kann. Pläne, Quelltexte usw... Open Source!!!)&lt;br /&gt;
* [http://www.amontec.com/ Amontec] JTAGkey, JTAGkey-Tiny - Firma Amontec existiert nicht mehr, JTAGbox von Bitrelle ist abwärtskompatibel zu JTAGkey, JTAGkey-2, etc.&lt;br /&gt;
* [http://section5.ch/icebear ICEbear] ICEbear (Plus|Light) JTAG adapter, spezielle Unterstützung für Flashen/Debuggen von Analog Devices Blackfin-Plattformen.&lt;br /&gt;
* [http://www.luminarymicro.com/products/ekk-lm3s811_evaluation_kit.html EKK-LM3S811] von LMI. Auf dem Testboard ist ein &amp;quot;on-board&amp;quot; JTAG-Adapter, der zu Ansteuerung des LM3S811 auf dem Board genutzt wird, aber auch an externe Controller angeschlossen werden kann. (Alle LMI Testboards verfügen über den JTAG Ein- und Ausgang.)&lt;br /&gt;
*[http://www.segger.com/cms/jlink.html SEGGER J-Link] sehr professioneller schneller JTAG Adapter. Für nichtkommerziellen Einsatz gibt es den J-Link Edu schon für 50€.&lt;br /&gt;
* [http://www.olimex.com/dev/arm-usb-ocd.html ARM-USB-OCD] von Olimex&lt;br /&gt;
* [http://www.signalyzer.com/ Xverve Signalyzer Tool]&lt;br /&gt;
* [http://bitrelle.wordpress.com/jtagbox/ Bitrelle JTAGbox] läuft mit OpenOCD, galvanisch vom Target getrennt&lt;br /&gt;
&lt;br /&gt;
=== Parallelport-Anschluss (Wiggler und Wiggler-&amp;quot;kompatibel&amp;quot;) ===&lt;br /&gt;
* [http://www.macraigor.com/hwproducts.htm Macraigor] Original Wiggler&lt;br /&gt;
* [http://www.olimex.com/dev/arm-jtag.html Olimex ARM-JTAG] Wiggler-Nachbau&lt;br /&gt;
* [http://www.k9spud.com/jtag/ k9spud Wiggler-Schaltplan]&lt;br /&gt;
* [http://web.archive.org/web/20060411074457/http://bbs.circuitcellar.com/phpBB2/viewtopic.php?p=10059&amp;amp; bigakis Wiggler-Schaltplan] (74HC244 Levelshifter, BC547 Transistor zum Invertieren)(&#039;&#039;&#039;Webarchiv-Link&#039;&#039;&#039;,Orginal gelöscht)&lt;br /&gt;
* [http://wiki.openwrt.org/doc/hardware/port.jtag.cables Wiggler Schaltplan] von OpenWRT (ebenfalls mit 74HC244). &lt;br /&gt;
* [http://www.st.com/stonline/products/literature/um/12322.pdf ST FlashLink JTAG Programming Cable] STM Application-Note&lt;br /&gt;
&lt;br /&gt;
Man findet einige Schaltpläne für Wiggler-Nachbauten im Netz. Nicht alle sind identisch. Der original Schaltplan von Macraigor ist meines (M. Thomas) Wissens nicht verfügbar. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vollständige&amp;quot; Belegung des Wiggler-Clones von Olimex (Quelle: sparkfun-Forum)&lt;br /&gt;
* DB25.2 → INVERSE → JTAG.15 (NTRST) (mthomas: hier ist wohl nSRST gemeint)&lt;br /&gt;
* DB25.3 → JTAG.7 (TMS)&lt;br /&gt;
* DB25.4 → JTAG.9 (TCK)&lt;br /&gt;
* DB25.5 → JTAG.5 (TDI)&lt;br /&gt;
* DB25.6 → JTAG.3 (TRST)&lt;br /&gt;
* DB25.9 → VCC for the Level shifter i.e. JTAG enable/disable&lt;br /&gt;
* DB25.11 ← JTAG.13 (TDO)&lt;br /&gt;
* DB25.13 ← Target VCC sense (only when JTAG is enabled i.e. DB26.9 = 1) &lt;br /&gt;
&lt;br /&gt;
DB25.18, DB25.19, DB25.20, DB25.21, DB25.22, DB25.23, DB25.24, DB25.25 werden mit GND verbunden.&lt;br /&gt;
&lt;br /&gt;
Soll das Wiggler-Interface auch mit der Software ocdremote von Macraigor genutzt werden, ist eine Brücke zwischen zwischen DB25.8 und DB25.15 einzubauen. ocdremote ab (ca.) Version 2.06 erkennt daran das original Wiggler und auch einen mit der Brücke ausgestattenen Nachbau. Nutzt man zur Ansteuerung andere Software (z.&amp;amp;nbsp;B. OpenOCD oder H-JTAG) wird diese Verbindung nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
Man beachte die Beschaltung von SRST und TRST: &lt;br /&gt;
&lt;br /&gt;
Üblicherweise wird Pin DB25.2 des Druckeranschlusses über eine Inverterschaltung (NPN Transistor) mit dem Reset-Pin des ARM-Controllers verbunden (&#039;&#039;&#039;nSRST&#039;&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
Pin DB25.6 des Druckeranschlusses wird über Levelshifter direkt mit dem &#039;&#039;&#039;TRST&#039;&#039;&#039;-Pin des Controllers verbunden. In manchen Schaltplänen findet man auch für TRST einen Inverter, aber dies scheint eher unüblich. &lt;br /&gt;
&lt;br /&gt;
Bei den sonstigen Pinbelegungen herrscht weitestgehend Einigkeit. Man muss lediglich Levelshifter ([[Pegelwandler]]) zwischenschalten, um zwischen den 5V des Druckeranschlusses und der Spannung des Controllers (üblicherweise 3,3V) zu &amp;quot;übersetzen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Allein ein 74HC244 als Levelshifter, wie in vielen Schaltungen verwendet, ist nicht ideal. Der Baustein wird dabei mit 3,3V aus der Zielschaltung betrieben und die Anpassung an die nominell 5V vom Druckerport an die 3,3V des HC244 erfolgt entweder durch Spannungsteiler oder durch Strombegrenzungswiderstände und die internen Überspannungsschutzdioden. Das Ausgangssignal TDO zurück zum Druckeranschluss ist maximal 3,3V. Beides nicht optimal aber es funktioniert zumindest meistens. Aufwändigere Schaltungen, wie z.&amp;amp;nbsp;B. der Olimex Wiggler-Nachbau (&amp;quot;ARM-JTAG&amp;quot;), nutzen eine Kombination aus einem 74AC244 und einem 74LCX244.&lt;br /&gt;
&lt;br /&gt;
=== sonstige ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ARM-JTAG-COOCOX/ ARM-JTAG-COOCOX], CoLinkEX Nachbau von Olimex, unterstützt JTAG sowie SWD&lt;br /&gt;
** [http://www.coocox.org/colinkEx.htm unterstützte uC]&lt;br /&gt;
** unterstütze IDEs: [http://www.keil.com/arm/mdk.asp Keil MDK-ARM 4.03] oder neuer, [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR Embedded Workbench 5.xx] oder neuer sowie die [http://www.coocox.org/CooCox_CoIDE.htm CooCox CoIDE]&lt;br /&gt;
&lt;br /&gt;
* Abatron BDI2000&lt;br /&gt;
* [http://www.amontec.com/index.shtml Amontec] JTAG Accelerator, Chameleon POD&lt;br /&gt;
* AZ-Electronics&lt;br /&gt;
* JtagConnection&lt;br /&gt;
* [http://www.lauterbach.de/mindex.html Lauterbach] Trace&lt;br /&gt;
* Macraigor Systems LLS&lt;br /&gt;
* Peedi&lt;br /&gt;
* Rowley Associates CrossConnect&lt;br /&gt;
&lt;br /&gt;
=== Anschlussbelegung ===&lt;br /&gt;
&lt;br /&gt;
Auf Evaluation-Boards verschiedener Hersteller (z.&amp;amp;nbsp;B. Atmel, IAR, Keil, Olimex) ist die JTAG-Schnittstelle über einen 20-poligen Wannenstecker (2·10, Raster 2,54mm) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 NC  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 nTRST&lt;br /&gt;
 | 4 GND &lt;br /&gt;
 |-&lt;br /&gt;
 | 5 TDI&lt;br /&gt;
 | 6 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 TMS&lt;br /&gt;
 | 8 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 TCK&lt;br /&gt;
 | 10 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 11 GND&lt;br /&gt;
 | 12 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 13 TDO&lt;br /&gt;
 | 14 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 15 nRESET/nSRST&lt;br /&gt;
 | 16 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 17 NC&lt;br /&gt;
 | 18 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 19 NC&lt;br /&gt;
 | 20 GND&lt;br /&gt;
 |-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Neuerdings propagiert ARM eine sehr kompakte Variante mit 2·5 Pins in einem 1,27 mm Raster:&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 RTCK&lt;br /&gt;
 | 8 TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GND&lt;br /&gt;
 | 10 nRESET/nSRST&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Daneben existiert noch eine weniger gebräuchliche aber dokumentierte Variante mit 14 Polen (2·7). &lt;br /&gt;
&lt;br /&gt;
Bei fertigen Geräten, für die keine Schaltpläne vorliegen, muss man sich die herstellerspezifische Anschlussbelegung anhand des Datenblatts des verwendeten Controllers und mittels Messgerät selbst ermitteln.&lt;br /&gt;
&lt;br /&gt;
=== Cortex Debug Connectors von ARM ===&lt;br /&gt;
&lt;br /&gt;
[http://infocenter.arm.com/help/topic/com.arm.doc.faqs/attached/13634/cortex_debug_connectors.pdf In diesem PDF Dokument hat ARM die Anschlussbelegung für Cortex-Prozessoren definiert.]&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 SWDIO/TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 SWDCLK/TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 SWO/TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 Key (kein Pin)&lt;br /&gt;
 | 8 NC/TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GNDDetect&lt;br /&gt;
 | 10 nRESET&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Der 10-polige JTAG Stecker von mmvisual (ARM, Cortex, Seriell kombiniert) ===&lt;br /&gt;
mmvisual hat mit dieser Steckerbelegung die Standard JTAG Schnittstelle erweitert:&lt;br /&gt;
&lt;br /&gt;
Ich habe einen 10-poligen Debug-Stecker entworfen, der alle Varianten sowie einen [[UART]]-Anschluss enthält und die Pins optimal angeordnet sind. Mit diesem Stecker können ARM7/9 und Cortex CPUs programmiert werden. An allen JTAG-Steckervarianten fehlen leider Funktionen, bzw. die Pins waren nicht optimal angeordnet. Daher habe ich den &amp;quot;perfekten&amp;quot; Stecker designt der viele Funktionen beinhaltet.&lt;br /&gt;
&lt;br /&gt;
[[bild:jtag-debug-port10.png]]&lt;br /&gt;
&lt;br /&gt;
==== Die Funktionen ====&lt;br /&gt;
* JTAG&lt;br /&gt;
* SWD&lt;br /&gt;
* Debug-UART-Anschluss (verbunden mit einem freien UART vom [[STM32]]) (alternativ ein MAX232 Chip dazwischen schalten)&lt;br /&gt;
* Weniger Platzbedarf auf der Platine (Standard-JTAG 20 Polig)&lt;br /&gt;
* Über 4-Poligen Würfel kann der UART benutzt werden (Pin 7/8/9/10)&lt;br /&gt;
* Es kann ein Jumper gesteckt werden für eine Option (Pin 9/10) ohne dass es sich mit dem RS232 Chip beißt (sofern er eingebaut wurde)&lt;br /&gt;
* Über einen 5-Poligen einreihigen Stecker kann SWD verwendet werden (Pin 1/3/5/7/9)&lt;br /&gt;
* den ganzen Stecker braucht es nur, wenn man den herkömmlichen JTAG nutzen möchte.&lt;br /&gt;
* Kurzschlussschutz, da GND und +3V3 nicht gegenüber liegen&lt;br /&gt;
&lt;br /&gt;
In all meinen Projekten verwende ich nur noch diese Anordnung, denn sie ist einfach praktisch. Alles drauf und die Pins sind perfekt angeordnet für jede Art der Anwendung.&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist der UART 1 ([[STM32]]) benutzt mit den Pins PA9/PA10. Wenn die Boot-Pins auf einen separaten Jumper-Block gelegt werden, so könnte auch mit der ST Software ein Flash Update durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Hier die Erklärung warum es die BOOT-Pins nicht auf dem JTAG-Stecker benötigt. Ich habe mir einen eigenen Bootloader geschrieben, der kommt ohne das&lt;br /&gt;
Interne Boot-ROM (und ohne die BOOT-Pins) aus. Ich habe den in die ersten 8KB Flash programmiert.&lt;br /&gt;
* Das PC-Programm senden über den UART den Befehl &amp;quot;GoTo Bootloader&amp;quot;, damit wird mein Bootloader angesprungen.&lt;br /&gt;
* Dann sendet das PC Programm die Update-Daten.&lt;br /&gt;
* Wenn fertig, dann geht es zurück in die Applikation.&lt;br /&gt;
* Der Bootloader ist immer beim Einschalten des Boards aktiv. Sobald eine Tastenkombination gedrückt wird, bleibt er &amp;quot;hängen&amp;quot; und irgend welche LEDs blinken. Also wenn das Flash &amp;quot;Zerschossen&amp;quot; sein sollte kann man mit einem Restart/Tasten den Bootloader aktivieren und erneut den Update ausführen.&lt;br /&gt;
* Der ST eigene Bootloader hat mir nicht gefallen, weil da keine LED&#039;s Blinken und dem User sagen, &amp;quot;Hallo ich lebe und bin im Bootloader&amp;quot;.&lt;br /&gt;
* Wenn die Tasten beim Einschalten nicht gedrückt werden, dann springt der Bootloader in die Applikation&lt;br /&gt;
* Der Bootloader kann jeden beliebigen UART nutzen.&lt;br /&gt;
&lt;br /&gt;
==== Die Adapterplatine ====&lt;br /&gt;
Mit der Adapterplatine kann von dem 10-poligen Stecker auf einen 20-poligen Standard JTAG Stecker verbunden werden. Zusätzlich ist hier ein TTL/V24 Wandler integriert um die UART Signale auf V24 um zu setzen. Hier kann der Schaltplan/Layout geladen werden: [[Datei:10-Pol-JTAG.zip]]&lt;br /&gt;
Die Platine ist 33×19mm klein.&lt;br /&gt;
&lt;br /&gt;
=== 10-pin JTAG im 20&#039;tel-Zoll Raster ===&lt;br /&gt;
&lt;br /&gt;
* Forumsbeitrag [http://www.mikrocontroller.net/topic/188659#1836129 &amp;quot;neuer JTAG-Stecker für ARM&amp;quot;]&lt;br /&gt;
* [http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm Keil ULINK2] (und Pinouts anderer JTAG-Stecker)&lt;br /&gt;
&lt;br /&gt;
== MSP430 JTAG ==&lt;br /&gt;
&lt;br /&gt;
Anschluß an Parallelport: &lt;br /&gt;
* [http://elmicro.com/files/olimex/msp430-jtag-d.pdf Olimex MSP430 JTAG (PDF)] bzw. ([http://www.olimex.com/dev/images/msp430-jtag-d-sch.gif (GIF)]). Siehe auch Diskussion im [http://www.mikrocontroller.net/topic/57208#442620 Forum].&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/90754#776070 Forumsbeitrag] mit Anhang eines chinesischen? Schaltplans (PDF)&lt;br /&gt;
&lt;br /&gt;
Anschluß an USB/Seriell:&lt;br /&gt;
* [http://goodfet.sourceforge.net/ GoodFET] von Travis Goodspeed. The GoodFET is an open source tool for programming microcontrollers and memories by [[SPI]], [[I2C]], JTAG ([[MSP430]], [[ARM]]), and a slew of vendor-proprietary protocols. (Stub für [http://events.ccc.de/congress/2009/Fahrplan/events/3490.en.html 26C3 Vortrag])&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Für Xilinx&lt;br /&gt;
** [http://www.freewebs.com/lykos1986/cpldprogrammer.htm Xilinx JTAG programmer] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.embedded-projects.net/index.php?page_id=157 Xilinx JTAG XSVF Player mit USBprog] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter Xilinx Platform Cable I Nachbau] - Nachbau des Originalem Xilinx Platform Cable I (DLC9)&lt;br /&gt;
** [http://warmcat.com/milksop/cheaptag.html Cheaptag] - Xilinx Parallel Jtag programming cable&lt;br /&gt;
** [http://embdev.net/topic/139121#new XSVF Player FTDI Bitbang] - XSVF Player with FTDI Bitbang mode&lt;br /&gt;
** [https://play.google.com/store/apps/details?id=com.wesche.xsvf XSVF Player FTDI Bitbang for Android] - XSVF Player with FTDI Bitbang mode for Android&lt;br /&gt;
&lt;br /&gt;
* Für Altera&lt;br /&gt;
** [http://translate.google.com/translate?js=n&amp;amp;prev=_t&amp;amp;hl=en&amp;amp;ie=UTF-8&amp;amp;layout=2&amp;amp;eotf=1&amp;amp;sl=auto&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Fmarsohod.org%2Findex.php%2Fourblog%2F11-blog%2F163-marsblaster Marsblaster] für Altera FPGA, serieller Port&lt;br /&gt;
** [http://www.altera.com/literature/ug/ug_bbii.pdf ALTERA ByteBlaster]&lt;br /&gt;
** [http://www.entner-electronics.com/tl/index.php/eeblaster.html EEBlaster], sehr günstig, kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
** [http://www.pyroelectro.com/tutorials/byteblaster/index.html Build A ByteBlaster] bei www.pyroelectro.com&lt;br /&gt;
** [http://www.ixo.de/info/usb_jtag/ USB-JTAG-Adapter], kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
&lt;br /&gt;
* ColdFire BDM Pod&lt;br /&gt;
** [http://forums.freescale.com/t5/68K-ColdFire-reg-Microprocessors/TBLCF-open-source-debugging-cable/m-p/7543 TBLCF open source debugging cable]&lt;br /&gt;
** [http://www.rockbox.org/wiki/IriverBDM IriverBDM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- VERALTETE LINKS - PRODUKTE WERDEN DORT NICHT GEFUNDEN&lt;br /&gt;
* FCPU-X Platform Cable USB JTAG cable&lt;br /&gt;
** Bezugsquelle (DE): [http://www.vht-impex-shop.de/product_info.php?info=p786_HW-USB-platform-cable--FCPU-X-platform-cable-similar-to-HW-USB-Kabel-for-Xilinx-evaluation-boards-etc-.html&amp;amp;XTCsid=e613a7119493deac52e83e9038ce131a http://www.vht-impex-shop.de]&lt;br /&gt;
** Bezugsquelle (US): [http://www.celeritous.com/estore/index.php?main_page=product_info&amp;amp;cPath=1&amp;amp;products_id=129 http://www.celeritous.com] &lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Universal JTAG Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Versaloon ===&lt;br /&gt;
&lt;br /&gt;
[http://www.versaloon.com/ Versaloon] is a full-opensource multi-functional platform based on generic USB_TO_XXX protocol, which can now support more than 10 kinds of interfaces including [[ISP]], [[JTAG]], SWD, [[SPI]], [[IIC]] and so on. Programming is supported for: &lt;br /&gt;
* STM8 support(SWIM)&lt;br /&gt;
* STM32 support(ISP/JTAG/SWD) siehe auch Forumbeitrag von Bingo [http://www.mikrocontroller.net/topic/202785]&lt;br /&gt;
* LPC1000 support(ISP/JTAG/SWD)&lt;br /&gt;
* LM3S support(JTAG/SWD)&lt;br /&gt;
* AT91SAM3 support(JTAG/SWD)&lt;br /&gt;
* AT89S5X support(ISP)&lt;br /&gt;
* PSOC1 support(ISSP)&lt;br /&gt;
* MSP430(without TEST) support(JTAG)&lt;br /&gt;
* C8051F support(C2/JTAG)&lt;br /&gt;
* AVR8 support(ISP/JTAG)&lt;br /&gt;
* LPC900 support(ICP)&lt;br /&gt;
* HCS08 support(BDM)&lt;br /&gt;
* HCS12(X) support(BDM)&lt;br /&gt;
* SVF support(JTAG)&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [[AVR-Studio]] (Windows)&lt;br /&gt;
* [[GDB]] in Verbindung mit [http://avarice.sourceforge.net/ AVaRICE] und AVR JTAGICE kompatibler Hardware. (Linux)&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [http://openocd.org OpenOCD] - kostenlose Open Source Software, Debug Monitor für GDB (läuft als Server mit eigenem TCP/IP Socket, mit dem sich GDB einfach verbinden lässt), unterstützt zur Zeit 190 verschiedene Prozessoren&lt;br /&gt;
* [[GDB]] bzw. Insight und auf die ARM JTAG Hardware abgestimmte GDB-Server (OCDRemote, [http://openocd.berlios.de/ OpenOCD], BDI2000, Peedi)&lt;br /&gt;
* [http://www.hjtag.com/ H-JTAG] und RDI-kompatible Debugger (SDT2.51, ADS1.2, RealView and IAR)&lt;br /&gt;
* Herstellerspezifische Software z.&amp;amp;nbsp;B. von Lauterbach&lt;br /&gt;
* Komplette kostenlose Open Source Toolchain [https://bitrelle.files.wordpress.com/2012/05/bitrelle_programming_eclipse.pdf Eclipse-GDB-OpenOCD], läuft auf Linux/Windows/Mac, unterstützt alle  Prozessortypen, die von OpenOCD unterstützt werden&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Altera: Quartus Programmer (quartus_pgm)&lt;br /&gt;
* Lattice: ToDo... (Lattice setzt seit 2011 auf die JTAG-Funktionalität des FT2232 und benötigt daher keine speziellen USB-JTAG-Adapter mehr)&lt;br /&gt;
* Xilinx: Impact, xc3sprog, ...&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Tools ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.topjtag.com TopJTAG]: boundary-scan software for circuit debugging and flash programming.&lt;br /&gt;
* [http://www.ricreations.com/index.html Universal Scan]&lt;br /&gt;
* [http://urjtag.org UrJTAG]: Kommandozeilentool für Boundary Scan, FPGA und CPLD und Speicher lesen und schreiben u.v.a.m., Nachfolger von openwince JTAG Tools.&lt;br /&gt;
* [http://www.gojtag.com/ goJTAG]: graphisches Boundary-Scan-Tool zum manuellen Durchtesten von Verbindungen, besonders für Nicht-JTAG-Experten geeignet. Obwohl in Java geschrieben, funktioniert es nur unter Windows. Funktioniert im Prinzip mit allen FT2232(H) basierten Adaptern.&lt;br /&gt;
* [http://andreas-weschenfelder.de.vu FT2232 BoundaryScan Tool]: free boundary-scan software for flash programming [S29GL128N, S29GL256N, S29GL512N, M25PX16, M25PX32, M25PX64, etc ].&lt;br /&gt;
&amp;lt;!-- link tot 20100521 * [http://www.rsn-tech.demon.co.uk/pjtag/pjtag.html Pesonal JTAG]: halbfertiges Hobbyprojekt, ist bissel buggy, aber kleine Sachen gehen damit. --&amp;gt;&lt;br /&gt;
* [http://www.blunk-electronic.de/products.html]: boundary scan test system M-1 for board and system testing, runs on Linux, open source, no licensing ! Read more on http://www.blunk-electronic.de/products.html&lt;br /&gt;
&lt;br /&gt;
= Weblinks =&lt;br /&gt;
&lt;br /&gt;
*Debugging the Linux kernel with JTAG] von Alexander Sirotkin [http://www.embedded.com/design/operating-systems/4207333/Debugging-the-Linux-kernel-with-JTAG] (LPC3250 mit FemtoLinux, OpenOCD)&lt;br /&gt;
*[http://hri.sourceforge.net/tools/jtag_faq_org.html JTAG FAQ] auf sourceforge.net&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR]]&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:FPGA und Co]]&lt;br /&gt;
[[Kategorie:Datenübertragung]]&lt;/div&gt;</summary>
		<author><name>Ralfiboy</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94758</id>
		<title>JTAG</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94758"/>
		<updated>2017-01-05T18:42:01Z</updated>

		<summary type="html">&lt;p&gt;Ralfiboy: /* ARM JTAG */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;J&#039;&#039;&#039;oint &#039;&#039;&#039;T&#039;&#039;&#039;est &#039;&#039;&#039;A&#039;&#039;&#039;ction &#039;&#039;&#039;G&#039;&#039;&#039;roup, entwickelte den Standard IEEE 1149.1. Das JTAG-Protokoll ermöglicht das Programmieren, Debuggen und Testen von ICs, [[Prozessor]]en und [[FPGA]]s direkt in der Schaltung.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2737 AVR JTAGICE] (gelegentlich auch &#039;&#039;JTAGICE mkI&#039;&#039; genannt) von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3353 AVR JTAGICE mkII] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=17213&amp;amp;category_id=163&amp;amp;family_id=682&amp;amp;subfamily_id=2138 AVR JTAGICE 3] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/tools/ATATMEL-ICE.aspx ATMEL-ICE] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3891 AVR Dragon] von Atmel.&lt;br /&gt;
** [http://www.atmel.com/dyn/resources/prod_documents/doc8112.pdf AVR077: Opto Isolated Emulation for the DebugWIRE] (auch für AVR JTAGICE mkII nützlich)&lt;br /&gt;
* [http://gandalf.arubi.uni-kl.de/avr_projects/evertool/index.html Evertool und Evertool light] von Martin Thomas. Evertool unterstützt JTAG analog zu AVR JTAGICE und [[ISP]] nach [[STK500]] Protokoll. Evertool light nur JTAG. &lt;br /&gt;
* [http://aquaticus.info/jtag JTAG for AVR processors] bei Aquaticus ROV. (Englisch)&lt;br /&gt;
* [http://www.olimex.com/dev/avr-jtag.html AVR-JTAG] und [http://www.olimex.com/dev/avr-usb-jtag.html AVR-USB-JTAG] von [http://www.olimex.com/dev/index.html Olimex] (kommerziell). Alternativer Lieferant ist der [http://elmicro.com/de/avrjtag.html Elektronikladen].&lt;br /&gt;
* [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/35 AVR-JTAG] und [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/52 AVR-USB-JTAG] von [http://www.gadgetPool.de gadgetPool] (kommerziell)&lt;br /&gt;
* [http://www.floppyspongeonline.com/automation/isojtagisp/isojtagisp.php IsoJtagISP] und [http://www.floppyspongeonline.com/automation/isojtag/isojtag.php IsoJTAG] von Floppy Sponge Automation ([[USB]], optisch isoliert). Hier eine modifizierte Version von [http://www.madwizard.org/electronics/projects/avrjtag Madwizard].&lt;br /&gt;
* [http://www.ere.co.th/(gs5afz55q5idyyn0a1ibkl45)/default.aspx?RedirectPage=Products&amp;amp;RedirectPage1=ProductsDetail&amp;amp;ProductID=56 JTAGAVRU1] (AVR JTAGICE kompatibel, USB, 1.8-5.5V) (existiert wohl nicht mehr ?)&lt;br /&gt;
* [http://www.avrfreaks.net/index.php?module=Freaks%20Tools&amp;amp;func=viewItem&amp;amp;item_id=630 JTAGcable II] (AVR JTAGICE kompatibel, USB, 1.8-6 V)&lt;br /&gt;
* [http://www.miklobit.com/JTAG_TWICE.530+B6Jkw9Mw__.0.html MB-JTAG-TWICE] (AVR JTAGICE kompatibel, RS232, 2.7-5.5V, +ISP STK500v2) - Free update to version compatible with AVR JTAG MKII (coming soon)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Programmer und Debugger für USB (MKI) &lt;br /&gt;
* link tot 20100521 [http://www.paktek-shop.de/epages/61807596.sf/de_DE/?ObjectPath=/Shops/61807596/Categories/Produkte/AVR-Programmer]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pinout AVR-JTAG ===&lt;br /&gt;
&lt;br /&gt;
AVR benutzt einen 10poligen IDC-Stecker mit 2,54 mm Pinabstand und folgendem Pinout:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE mkII&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| (frei) || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| Vcc || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bemerkungen:&lt;br /&gt;
&lt;br /&gt;
* VTref &#039;&#039;muss&#039;&#039; beschaltet werden, von dieser Spannung werden die Pegelwandler des JTAG-ICE gespeist, und das ICE weigert sich zu arbeiten wenn keine Spannung anliegt&lt;br /&gt;
* nTRST wird vom JTAG ICE nicht benutzt, soll aber aus Kompatibilität mit anderen JTAG-Implementierungen frei bleiben&lt;br /&gt;
* Pin 7 war in der ersten Version des Atmel JTAG ICE als &#039;&#039;Vsupply&#039;&#039; bezeichnet und diente dort der Speisung des JTAG ICE aus der Zielhardware&lt;br /&gt;
* nSRST muss nicht zwingend an &#039;&#039;/RESET&#039;&#039; des AVR gelegt werden; wenn er fehlt,  kann das JTAG ICE eine schlafende CPU nicht wecken oder mit einem Controller arbeiten, dessen JTAG-Schnittstelle von der Software außer Betrieb genommen worden ist (Bit &#039;&#039;JTD&#039;&#039; im Register &#039;&#039;MCUCSR&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
AVR-JTAG lässt sich mit anderen JTAG-Implementierungen (oder weiteren AVRs) zu einer &#039;&#039;daisy chain&#039;&#039; verketten; dabei schiebt jeder AVR 4 Bits.&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
=== USB Anschluss auf Basis des FTDI FT2232 ===&lt;br /&gt;
Diese Adapter funktionieren mit Opensource-Tools wie OpenOCD (ARM-Debugger), xc3sprog (Xilinx Programmer), urjtag (generisches JTAG-Tool), gojtag, etc. Manchmal sind leichte Anpassungen des Source nötig. Bei einigen Adaptern ist auch die serielle Schnittstelle (3.3V-Level) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
* [http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/usbjtag/usbjtag.html USB to JTAG Interface] von Hubert Högl, Schaltplan&lt;br /&gt;
* [http://www.embedded-projects.net/index.php?page_id=175 USB JTAG Interface für usbprog und OpenOCD] von Benedikt Sauter (Zurzeit gibt es Bausätze für 22€. Der Adapter ist ein Universaladapter der mit verschiedenen Firmwares zu verschiedenen Geräte werden kann. Pläne, Quelltexte usw... Open Source!!!)&lt;br /&gt;
* [http://www.amontec.com/ Amontec] JTAGkey, JTAGkey-Tiny - Firma Amontec existiert nicht mehr, JTAGbox von Bitrelle ist abwärtskompatibel zu JTAGkey, JTAGkey-2, etc.&lt;br /&gt;
* [http://section5.ch/icebear ICEbear] ICEbear (Plus|Light) JTAG adapter, spezielle Unterstützung für Flashen/Debuggen von Analog Devices Blackfin-Plattformen.&lt;br /&gt;
* [http://www.luminarymicro.com/products/ekk-lm3s811_evaluation_kit.html EKK-LM3S811] von LMI. Auf dem Testboard ist ein &amp;quot;on-board&amp;quot; JTAG-Adapter, der zu Ansteuerung des LM3S811 auf dem Board genutzt wird, aber auch an externe Controller angeschlossen werden kann. (Alle LMI Testboards verfügen über den JTAG Ein- und Ausgang.)&lt;br /&gt;
*[http://www.segger.com/cms/jlink.html SEGGER J-Link] sehr professioneller schneller JTAG Adapter. Für nichtkommerziellen Einsatz gibt es den J-Link Edu schon für 50€.&lt;br /&gt;
* [http://www.olimex.com/dev/arm-usb-ocd.html ARM-USB-OCD] von Olimex&lt;br /&gt;
* [http://www.signalyzer.com/ Xverve Signalyzer Tool]&lt;br /&gt;
* [http://bitrelle.wordpress.com/jtagbox/ Bitrelle JTAGbox] läuft mit OpenOCD, galvanisch vom Target getrennt&lt;br /&gt;
&lt;br /&gt;
=== Parallelport-Anschluss (Wiggler und Wiggler-&amp;quot;kompatibel&amp;quot;) ===&lt;br /&gt;
* [http://www.macraigor.com/hwproducts.htm Macraigor] Original Wiggler&lt;br /&gt;
* [http://www.olimex.com/dev/arm-jtag.html Olimex ARM-JTAG] Wiggler-Nachbau&lt;br /&gt;
* [http://www.k9spud.com/jtag/ k9spud Wiggler-Schaltplan]&lt;br /&gt;
* [http://web.archive.org/web/20060411074457/http://bbs.circuitcellar.com/phpBB2/viewtopic.php?p=10059&amp;amp; bigakis Wiggler-Schaltplan] (74HC244 Levelshifter, BC547 Transistor zum Invertieren)(&#039;&#039;&#039;Webarchiv-Link&#039;&#039;&#039;,Orginal gelöscht)&lt;br /&gt;
* [http://wiki.openwrt.org/doc/hardware/port.jtag.cables Wiggler Schaltplan] von OpenWRT (ebenfalls mit 74HC244). &lt;br /&gt;
* [http://www.st.com/stonline/products/literature/um/12322.pdf ST FlashLink JTAG Programming Cable] STM Application-Note&lt;br /&gt;
&lt;br /&gt;
Man findet einige Schaltpläne für Wiggler-Nachbauten im Netz. Nicht alle sind identisch. Der original Schaltplan von Macraigor ist meines (M. Thomas) Wissens nicht verfügbar. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vollständige&amp;quot; Belegung des Wiggler-Clones von Olimex (Quelle: sparkfun-Forum)&lt;br /&gt;
* DB25.2 → INVERSE → JTAG.15 (NTRST) (mthomas: hier ist wohl nSRST gemeint)&lt;br /&gt;
* DB25.3 → JTAG.7 (TMS)&lt;br /&gt;
* DB25.4 → JTAG.9 (TCK)&lt;br /&gt;
* DB25.5 → JTAG.5 (TDI)&lt;br /&gt;
* DB25.6 → JTAG.3 (TRST)&lt;br /&gt;
* DB25.9 → VCC for the Level shifter i.e. JTAG enable/disable&lt;br /&gt;
* DB25.11 ← JTAG.13 (TDO)&lt;br /&gt;
* DB25.13 ← Target VCC sense (only when JTAG is enabled i.e. DB26.9 = 1) &lt;br /&gt;
&lt;br /&gt;
DB25.18, DB25.19, DB25.20, DB25.21, DB25.22, DB25.23, DB25.24, DB25.25 werden mit GND verbunden.&lt;br /&gt;
&lt;br /&gt;
Soll das Wiggler-Interface auch mit der Software ocdremote von Macraigor genutzt werden, ist eine Brücke zwischen zwischen DB25.8 und DB25.15 einzubauen. ocdremote ab (ca.) Version 2.06 erkennt daran das original Wiggler und auch einen mit der Brücke ausgestattenen Nachbau. Nutzt man zur Ansteuerung andere Software (z.&amp;amp;nbsp;B. OpenOCD oder H-JTAG) wird diese Verbindung nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
Man beachte die Beschaltung von SRST und TRST: &lt;br /&gt;
&lt;br /&gt;
Üblicherweise wird Pin DB25.2 des Druckeranschlusses über eine Inverterschaltung (NPN Transistor) mit dem Reset-Pin des ARM-Controllers verbunden (&#039;&#039;&#039;nSRST&#039;&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
Pin DB25.6 des Druckeranschlusses wird über Levelshifter direkt mit dem &#039;&#039;&#039;TRST&#039;&#039;&#039;-Pin des Controllers verbunden. In manchen Schaltplänen findet man auch für TRST einen Inverter, aber dies scheint eher unüblich. &lt;br /&gt;
&lt;br /&gt;
Bei den sonstigen Pinbelegungen herrscht weitestgehend Einigkeit. Man muss lediglich Levelshifter ([[Pegelwandler]]) zwischenschalten, um zwischen den 5V des Druckeranschlusses und der Spannung des Controllers (üblicherweise 3,3V) zu &amp;quot;übersetzen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Allein ein 74HC244 als Levelshifter, wie in vielen Schaltungen verwendet, ist nicht ideal. Der Baustein wird dabei mit 3,3V aus der Zielschaltung betrieben und die Anpassung an die nominell 5V vom Druckerport an die 3,3V des HC244 erfolgt entweder durch Spannungsteiler oder durch Strombegrenzungswiderstände und die internen Überspannungsschutzdioden. Das Ausgangssignal TDO zurück zum Druckeranschluss ist maximal 3,3V. Beides nicht optimal aber es funktioniert zumindest meistens. Aufwändigere Schaltungen, wie z.&amp;amp;nbsp;B. der Olimex Wiggler-Nachbau (&amp;quot;ARM-JTAG&amp;quot;), nutzen eine Kombination aus einem 74AC244 und einem 74LCX244.&lt;br /&gt;
&lt;br /&gt;
=== sonstige ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ARM-JTAG-COOCOX/ ARM-JTAG-COOCOX], CoLinkEX Nachbau von Olimex, unterstützt JTAG sowie SWD&lt;br /&gt;
** [http://www.coocox.org/colinkEx.htm unterstützte uC]&lt;br /&gt;
** unterstütze IDEs: [http://www.keil.com/arm/mdk.asp Keil MDK-ARM 4.03] oder neuer, [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR Embedded Workbench 5.xx] oder neuer sowie die [http://www.coocox.org/CooCox_CoIDE.htm CooCox CoIDE]&lt;br /&gt;
&lt;br /&gt;
* Abatron BDI2000&lt;br /&gt;
* [http://www.amontec.com/index.shtml Amontec] JTAG Accelerator, Chameleon POD&lt;br /&gt;
* AZ-Electronics&lt;br /&gt;
* JtagConnection&lt;br /&gt;
* [http://www.lauterbach.de/mindex.html Lauterbach] Trace&lt;br /&gt;
* Macraigor Systems LLS&lt;br /&gt;
* Peedi&lt;br /&gt;
* Rowley Associates CrossConnect&lt;br /&gt;
&lt;br /&gt;
=== Anschlussbelegung ===&lt;br /&gt;
&lt;br /&gt;
Auf Evaluation-Boards verschiedener Hersteller (z.&amp;amp;nbsp;B. Atmel, IAR, Keil, Olimex) ist die JTAG-Schnittstelle über einen 20-poligen Wannenstecker (2·10, Raster 2,54mm) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 NC  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 nTRST&lt;br /&gt;
 | 4 GND &lt;br /&gt;
 |-&lt;br /&gt;
 | 5 TDI&lt;br /&gt;
 | 6 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 TMS&lt;br /&gt;
 | 8 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 TCK&lt;br /&gt;
 | 10 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 11 GND&lt;br /&gt;
 | 12 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 13 TDO&lt;br /&gt;
 | 14 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 15 nRESET/nSRST&lt;br /&gt;
 | 16 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 17 NC&lt;br /&gt;
 | 18 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 19 NC&lt;br /&gt;
 | 20 GND&lt;br /&gt;
 |-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Neuerdings propagiert ARM eine sehr kompakte Variante mit 2·5 Pins in einem 1,27 mm Raster:&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 RTCK&lt;br /&gt;
 | 8 TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GND&lt;br /&gt;
 | 10 nRESET/nSRST&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Daneben existiert noch eine weniger gebräuchliche aber dokumentierte Variante mit 14 Polen (2·7). &lt;br /&gt;
&lt;br /&gt;
Bei fertigen Geräten, für die keine Schaltpläne vorliegen, muss man sich die herstellerspezifische Anschlussbelegung anhand des Datenblatts des verwendeten Controllers und mittels Messgerät selbst ermitteln.&lt;br /&gt;
&lt;br /&gt;
=== Cortex Debug Connectors von ARM ===&lt;br /&gt;
&lt;br /&gt;
[http://infocenter.arm.com/help/topic/com.arm.doc.faqs/attached/13634/cortex_debug_connectors.pdf In diesem PDF Dokument hat ARM die Anschlussbelegung für Cortex-Prozessoren definiert.]&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 SWDIO/TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 SWDCLK/TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 SWO/TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 Key (kein Pin)&lt;br /&gt;
 | 8 NC/TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GNDDetect&lt;br /&gt;
 | 10 nRESET&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Der 10-polige JTAG Stecker von mmvisual (ARM, Cortex, Seriell kombiniert) ===&lt;br /&gt;
mmvisual hat mit dieser Steckerbelegung die Standard JTAG Schnittstelle erweitert:&lt;br /&gt;
&lt;br /&gt;
Ich habe einen 10-poligen Debug-Stecker entworfen, der alle Varianten sowie einen [[UART]]-Anschluss enthält und die Pins optimal angeordnet sind. Mit diesem Stecker können ARM7/9 und Cortex CPUs programmiert werden. An allen JTAG-Steckervarianten fehlen leider Funktionen, bzw. die Pins waren nicht optimal angeordnet. Daher habe ich den &amp;quot;perfekten&amp;quot; Stecker designt der viele Funktionen beinhaltet.&lt;br /&gt;
&lt;br /&gt;
[[bild:jtag-debug-port10.png]]&lt;br /&gt;
&lt;br /&gt;
==== Die Funktionen ====&lt;br /&gt;
* JTAG&lt;br /&gt;
* SWD&lt;br /&gt;
* Debug-UART-Anschluss (verbunden mit einem freien UART vom [[STM32]]) (alternativ ein MAX232 Chip dazwischen schalten)&lt;br /&gt;
* Weniger Platzbedarf auf der Platine (Standard-JTAG 20 Polig)&lt;br /&gt;
* Über 4-Poligen Würfel kann der UART benutzt werden (Pin 7/8/9/10)&lt;br /&gt;
* Es kann ein Jumper gesteckt werden für eine Option (Pin 9/10) ohne dass es sich mit dem RS232 Chip beißt (sofern er eingebaut wurde)&lt;br /&gt;
* Über einen 5-Poligen einreihigen Stecker kann SWD verwendet werden (Pin 1/3/5/7/9)&lt;br /&gt;
* den ganzen Stecker braucht es nur, wenn man den herkömmlichen JTAG nutzen möchte.&lt;br /&gt;
* Kurzschlussschutz, da GND und +3V3 nicht gegenüber liegen&lt;br /&gt;
&lt;br /&gt;
In all meinen Projekten verwende ich nur noch diese Anordnung, denn sie ist einfach praktisch. Alles drauf und die Pins sind perfekt angeordnet für jede Art der Anwendung.&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist der UART 1 ([[STM32]]) benutzt mit den Pins PA9/PA10. Wenn die Boot-Pins auf einen separaten Jumper-Block gelegt werden, so könnte auch mit der ST Software ein Flash Update durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Hier die Erklärung warum es die BOOT-Pins nicht auf dem JTAG-Stecker benötigt. Ich habe mir einen eigenen Bootloader geschrieben, der kommt ohne das&lt;br /&gt;
Interne Boot-ROM (und ohne die BOOT-Pins) aus. Ich habe den in die ersten 8KB Flash programmiert.&lt;br /&gt;
* Das PC-Programm senden über den UART den Befehl &amp;quot;GoTo Bootloader&amp;quot;, damit wird mein Bootloader angesprungen.&lt;br /&gt;
* Dann sendet das PC Programm die Update-Daten.&lt;br /&gt;
* Wenn fertig, dann geht es zurück in die Applikation.&lt;br /&gt;
* Der Bootloader ist immer beim Einschalten des Boards aktiv. Sobald eine Tastenkombination gedrückt wird, bleibt er &amp;quot;hängen&amp;quot; und irgend welche LEDs blinken. Also wenn das Flash &amp;quot;Zerschossen&amp;quot; sein sollte kann man mit einem Restart/Tasten den Bootloader aktivieren und erneut den Update ausführen.&lt;br /&gt;
* Der ST eigene Bootloader hat mir nicht gefallen, weil da keine LED&#039;s Blinken und dem User sagen, &amp;quot;Hallo ich lebe und bin im Bootloader&amp;quot;.&lt;br /&gt;
* Wenn die Tasten beim Einschalten nicht gedrückt werden, dann springt der Bootloader in die Applikation&lt;br /&gt;
* Der Bootloader kann jeden beliebigen UART nutzen.&lt;br /&gt;
&lt;br /&gt;
==== Die Adapterplatine ====&lt;br /&gt;
Mit der Adapterplatine kann von dem 10-poligen Stecker auf einen 20-poligen Standard JTAG Stecker verbunden werden. Zusätzlich ist hier ein TTL/V24 Wandler integriert um die UART Signale auf V24 um zu setzen. Hier kann der Schaltplan/Layout geladen werden: [[Datei:10-Pol-JTAG.zip]]&lt;br /&gt;
Die Platine ist 33×19mm klein.&lt;br /&gt;
&lt;br /&gt;
=== 10-pin JTAG im 20&#039;tel-Zoll Raster ===&lt;br /&gt;
&lt;br /&gt;
* Forumsbeitrag [http://www.mikrocontroller.net/topic/188659#1836129 &amp;quot;neuer JTAG-Stecker für ARM&amp;quot;]&lt;br /&gt;
* [http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm Keil ULINK2] (und Pinouts anderer JTAG-Stecker)&lt;br /&gt;
&lt;br /&gt;
== MSP430 JTAG ==&lt;br /&gt;
&lt;br /&gt;
Anschluß an Parallelport: &lt;br /&gt;
* [http://elmicro.com/files/olimex/msp430-jtag-d.pdf Olimex MSP430 JTAG (PDF)] bzw. ([http://www.olimex.com/dev/images/msp430-jtag-d-sch.gif (GIF)]). Siehe auch Diskussion im [http://www.mikrocontroller.net/topic/57208#442620 Forum].&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/90754#776070 Forumsbeitrag] mit Anhang eines chinesischen? Schaltplans (PDF)&lt;br /&gt;
&lt;br /&gt;
Anschluß an USB/Seriell:&lt;br /&gt;
* [http://goodfet.sourceforge.net/ GoodFET] von Travis Goodspeed. The GoodFET is an open source tool for programming microcontrollers and memories by [[SPI]], [[I2C]], JTAG ([[MSP430]], [[ARM]]), and a slew of vendor-proprietary protocols. (Stub für [http://events.ccc.de/congress/2009/Fahrplan/events/3490.en.html 26C3 Vortrag])&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Für Xilinx&lt;br /&gt;
** [http://www.freewebs.com/lykos1986/cpldprogrammer.htm Xilinx JTAG programmer] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.embedded-projects.net/index.php?page_id=157 Xilinx JTAG XSVF Player mit USBprog] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter Xilinx Platform Cable I Nachbau] - Nachbau des Originalem Xilinx Platform Cable I (DLC9)&lt;br /&gt;
** [http://warmcat.com/milksop/cheaptag.html Cheaptag] - Xilinx Parallel Jtag programming cable&lt;br /&gt;
** [http://embdev.net/topic/139121#new XSVF Player FTDI Bitbang] - XSVF Player with FTDI Bitbang mode&lt;br /&gt;
** [https://play.google.com/store/apps/details?id=com.wesche.xsvf XSVF Player FTDI Bitbang for Android] - XSVF Player with FTDI Bitbang mode for Android&lt;br /&gt;
&lt;br /&gt;
* Für Altera&lt;br /&gt;
** [http://translate.google.com/translate?js=n&amp;amp;prev=_t&amp;amp;hl=en&amp;amp;ie=UTF-8&amp;amp;layout=2&amp;amp;eotf=1&amp;amp;sl=auto&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Fmarsohod.org%2Findex.php%2Fourblog%2F11-blog%2F163-marsblaster Marsblaster] für Altera FPGA, serieller Port&lt;br /&gt;
** [http://www.altera.com/literature/ug/ug_bbii.pdf ALTERA ByteBlaster]&lt;br /&gt;
** [http://www.entner-electronics.com/tl/index.php/eeblaster.html EEBlaster], sehr günstig, kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
** [http://www.pyroelectro.com/tutorials/byteblaster/index.html Build A ByteBlaster] bei www.pyroelectro.com&lt;br /&gt;
** [http://www.ixo.de/info/usb_jtag/ USB-JTAG-Adapter], kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
&lt;br /&gt;
* ColdFire BDM Pod&lt;br /&gt;
** [http://forums.freescale.com/t5/68K-ColdFire-reg-Microprocessors/TBLCF-open-source-debugging-cable/m-p/7543 TBLCF open source debugging cable]&lt;br /&gt;
** [http://www.rockbox.org/wiki/IriverBDM IriverBDM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- VERALTETE LINKS - PRODUKTE WERDEN DORT NICHT GEFUNDEN&lt;br /&gt;
* FCPU-X Platform Cable USB JTAG cable&lt;br /&gt;
** Bezugsquelle (DE): [http://www.vht-impex-shop.de/product_info.php?info=p786_HW-USB-platform-cable--FCPU-X-platform-cable-similar-to-HW-USB-Kabel-for-Xilinx-evaluation-boards-etc-.html&amp;amp;XTCsid=e613a7119493deac52e83e9038ce131a http://www.vht-impex-shop.de]&lt;br /&gt;
** Bezugsquelle (US): [http://www.celeritous.com/estore/index.php?main_page=product_info&amp;amp;cPath=1&amp;amp;products_id=129 http://www.celeritous.com] &lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Universal JTAG Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Versaloon ===&lt;br /&gt;
&lt;br /&gt;
[http://www.versaloon.com/ Versaloon] is a full-opensource multi-functional platform based on generic USB_TO_XXX protocol, which can now support more than 10 kinds of interfaces including [[ISP]], [[JTAG]], SWD, [[SPI]], [[IIC]] and so on. Programming is supported for: &lt;br /&gt;
* STM8 support(SWIM)&lt;br /&gt;
* STM32 support(ISP/JTAG/SWD) siehe auch Forumbeitrag von Bingo [http://www.mikrocontroller.net/topic/202785]&lt;br /&gt;
* LPC1000 support(ISP/JTAG/SWD)&lt;br /&gt;
* LM3S support(JTAG/SWD)&lt;br /&gt;
* AT91SAM3 support(JTAG/SWD)&lt;br /&gt;
* AT89S5X support(ISP)&lt;br /&gt;
* PSOC1 support(ISSP)&lt;br /&gt;
* MSP430(without TEST) support(JTAG)&lt;br /&gt;
* C8051F support(C2/JTAG)&lt;br /&gt;
* AVR8 support(ISP/JTAG)&lt;br /&gt;
* LPC900 support(ICP)&lt;br /&gt;
* HCS08 support(BDM)&lt;br /&gt;
* HCS12(X) support(BDM)&lt;br /&gt;
* SVF support(JTAG)&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [[AVR-Studio]] (Windows)&lt;br /&gt;
* [[GDB]] in Verbindung mit [http://avarice.sourceforge.net/ AVaRICE] und AVR JTAGICE kompatibler Hardware. (Linux)&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [http://openocd.org OpenOCD] - kostenlose Open Source Software, Debug Monitor für GDB (läuft als Server mit eigenem TCP/IP Socket), unterstützt zur Zeit 190 verschiedene Prozessoren&lt;br /&gt;
* [[GDB]] bzw. Insight und auf die ARM JTAG Hardware abgestimmte GDB-Server (OCDRemote, [http://openocd.berlios.de/ OpenOCD], BDI2000, Peedi)&lt;br /&gt;
* [http://www.hjtag.com/ H-JTAG] und RDI-kompatible Debugger (SDT2.51, ADS1.2, RealView and IAR)&lt;br /&gt;
* Herstellerspezifische Software z.&amp;amp;nbsp;B. von Lauterbach&lt;br /&gt;
* Komplette kostenlose Open Source Toolchain [https://bitrelle.files.wordpress.com/2012/05/bitrelle_programming_eclipse.pdf Eclipse-GDB-OpenOCD], läuft auf Linux/Windows/Mac, unterstützt alle  Prozessortypen, die von OpenOCD unterstützt werden&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Altera: Quartus Programmer (quartus_pgm)&lt;br /&gt;
* Lattice: ToDo... (Lattice setzt seit 2011 auf die JTAG-Funktionalität des FT2232 und benötigt daher keine speziellen USB-JTAG-Adapter mehr)&lt;br /&gt;
* Xilinx: Impact, xc3sprog, ...&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Tools ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.topjtag.com TopJTAG]: boundary-scan software for circuit debugging and flash programming.&lt;br /&gt;
* [http://www.ricreations.com/index.html Universal Scan]&lt;br /&gt;
* [http://urjtag.org UrJTAG]: Kommandozeilentool für Boundary Scan, FPGA und CPLD und Speicher lesen und schreiben u.v.a.m., Nachfolger von openwince JTAG Tools.&lt;br /&gt;
* [http://www.gojtag.com/ goJTAG]: graphisches Boundary-Scan-Tool zum manuellen Durchtesten von Verbindungen, besonders für Nicht-JTAG-Experten geeignet. Obwohl in Java geschrieben, funktioniert es nur unter Windows. Funktioniert im Prinzip mit allen FT2232(H) basierten Adaptern.&lt;br /&gt;
* [http://andreas-weschenfelder.de.vu FT2232 BoundaryScan Tool]: free boundary-scan software for flash programming [S29GL128N, S29GL256N, S29GL512N, M25PX16, M25PX32, M25PX64, etc ].&lt;br /&gt;
&amp;lt;!-- link tot 20100521 * [http://www.rsn-tech.demon.co.uk/pjtag/pjtag.html Pesonal JTAG]: halbfertiges Hobbyprojekt, ist bissel buggy, aber kleine Sachen gehen damit. --&amp;gt;&lt;br /&gt;
* [http://www.blunk-electronic.de/products.html]: boundary scan test system M-1 for board and system testing, runs on Linux, open source, no licensing ! Read more on http://www.blunk-electronic.de/products.html&lt;br /&gt;
&lt;br /&gt;
= Weblinks =&lt;br /&gt;
&lt;br /&gt;
*Debugging the Linux kernel with JTAG] von Alexander Sirotkin [http://www.embedded.com/design/operating-systems/4207333/Debugging-the-Linux-kernel-with-JTAG] (LPC3250 mit FemtoLinux, OpenOCD)&lt;br /&gt;
*[http://hri.sourceforge.net/tools/jtag_faq_org.html JTAG FAQ] auf sourceforge.net&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR]]&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:FPGA und Co]]&lt;br /&gt;
[[Kategorie:Datenübertragung]]&lt;/div&gt;</summary>
		<author><name>Ralfiboy</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94757</id>
		<title>JTAG</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94757"/>
		<updated>2017-01-05T18:40:19Z</updated>

		<summary type="html">&lt;p&gt;Ralfiboy: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;J&#039;&#039;&#039;oint &#039;&#039;&#039;T&#039;&#039;&#039;est &#039;&#039;&#039;A&#039;&#039;&#039;ction &#039;&#039;&#039;G&#039;&#039;&#039;roup, entwickelte den Standard IEEE 1149.1. Das JTAG-Protokoll ermöglicht das Programmieren, Debuggen und Testen von ICs, [[Prozessor]]en und [[FPGA]]s direkt in der Schaltung.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2737 AVR JTAGICE] (gelegentlich auch &#039;&#039;JTAGICE mkI&#039;&#039; genannt) von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3353 AVR JTAGICE mkII] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=17213&amp;amp;category_id=163&amp;amp;family_id=682&amp;amp;subfamily_id=2138 AVR JTAGICE 3] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/tools/ATATMEL-ICE.aspx ATMEL-ICE] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3891 AVR Dragon] von Atmel.&lt;br /&gt;
** [http://www.atmel.com/dyn/resources/prod_documents/doc8112.pdf AVR077: Opto Isolated Emulation for the DebugWIRE] (auch für AVR JTAGICE mkII nützlich)&lt;br /&gt;
* [http://gandalf.arubi.uni-kl.de/avr_projects/evertool/index.html Evertool und Evertool light] von Martin Thomas. Evertool unterstützt JTAG analog zu AVR JTAGICE und [[ISP]] nach [[STK500]] Protokoll. Evertool light nur JTAG. &lt;br /&gt;
* [http://aquaticus.info/jtag JTAG for AVR processors] bei Aquaticus ROV. (Englisch)&lt;br /&gt;
* [http://www.olimex.com/dev/avr-jtag.html AVR-JTAG] und [http://www.olimex.com/dev/avr-usb-jtag.html AVR-USB-JTAG] von [http://www.olimex.com/dev/index.html Olimex] (kommerziell). Alternativer Lieferant ist der [http://elmicro.com/de/avrjtag.html Elektronikladen].&lt;br /&gt;
* [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/35 AVR-JTAG] und [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/52 AVR-USB-JTAG] von [http://www.gadgetPool.de gadgetPool] (kommerziell)&lt;br /&gt;
* [http://www.floppyspongeonline.com/automation/isojtagisp/isojtagisp.php IsoJtagISP] und [http://www.floppyspongeonline.com/automation/isojtag/isojtag.php IsoJTAG] von Floppy Sponge Automation ([[USB]], optisch isoliert). Hier eine modifizierte Version von [http://www.madwizard.org/electronics/projects/avrjtag Madwizard].&lt;br /&gt;
* [http://www.ere.co.th/(gs5afz55q5idyyn0a1ibkl45)/default.aspx?RedirectPage=Products&amp;amp;RedirectPage1=ProductsDetail&amp;amp;ProductID=56 JTAGAVRU1] (AVR JTAGICE kompatibel, USB, 1.8-5.5V) (existiert wohl nicht mehr ?)&lt;br /&gt;
* [http://www.avrfreaks.net/index.php?module=Freaks%20Tools&amp;amp;func=viewItem&amp;amp;item_id=630 JTAGcable II] (AVR JTAGICE kompatibel, USB, 1.8-6 V)&lt;br /&gt;
* [http://www.miklobit.com/JTAG_TWICE.530+B6Jkw9Mw__.0.html MB-JTAG-TWICE] (AVR JTAGICE kompatibel, RS232, 2.7-5.5V, +ISP STK500v2) - Free update to version compatible with AVR JTAG MKII (coming soon)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Programmer und Debugger für USB (MKI) &lt;br /&gt;
* link tot 20100521 [http://www.paktek-shop.de/epages/61807596.sf/de_DE/?ObjectPath=/Shops/61807596/Categories/Produkte/AVR-Programmer]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pinout AVR-JTAG ===&lt;br /&gt;
&lt;br /&gt;
AVR benutzt einen 10poligen IDC-Stecker mit 2,54 mm Pinabstand und folgendem Pinout:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE mkII&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| (frei) || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| Vcc || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bemerkungen:&lt;br /&gt;
&lt;br /&gt;
* VTref &#039;&#039;muss&#039;&#039; beschaltet werden, von dieser Spannung werden die Pegelwandler des JTAG-ICE gespeist, und das ICE weigert sich zu arbeiten wenn keine Spannung anliegt&lt;br /&gt;
* nTRST wird vom JTAG ICE nicht benutzt, soll aber aus Kompatibilität mit anderen JTAG-Implementierungen frei bleiben&lt;br /&gt;
* Pin 7 war in der ersten Version des Atmel JTAG ICE als &#039;&#039;Vsupply&#039;&#039; bezeichnet und diente dort der Speisung des JTAG ICE aus der Zielhardware&lt;br /&gt;
* nSRST muss nicht zwingend an &#039;&#039;/RESET&#039;&#039; des AVR gelegt werden; wenn er fehlt,  kann das JTAG ICE eine schlafende CPU nicht wecken oder mit einem Controller arbeiten, dessen JTAG-Schnittstelle von der Software außer Betrieb genommen worden ist (Bit &#039;&#039;JTD&#039;&#039; im Register &#039;&#039;MCUCSR&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
AVR-JTAG lässt sich mit anderen JTAG-Implementierungen (oder weiteren AVRs) zu einer &#039;&#039;daisy chain&#039;&#039; verketten; dabei schiebt jeder AVR 4 Bits.&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
=== USB Anschluss auf Basis des FTDI FT2232 ===&lt;br /&gt;
Diese Adapter funktionieren mit Opensource-Tools wie OpenOCD (ARM-Debugger), xc3sprog (Xilinx Programmer), urjtag (generisches JTAG-Tool), gojtag, etc. Manchmal sind leichte Anpassungen des Source nötig. Bei einigen Adaptern ist auch die serielle Schnittstelle (3.3V-Level) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
* [http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/usbjtag/usbjtag.html USB to JTAG Interface] von Hubert Högl, Schaltplan&lt;br /&gt;
* [http://www.embedded-projects.net/index.php?page_id=175 USB JTAG Interface für usbprog und OpenOCD] von Benedikt Sauter (Zurzeit gibt es Bausätze für 22€. Der Adapter ist ein Universaladapter der mit verschiedenen Firmwares zu verschiedenen Geräte werden kann. Pläne, Quelltexte usw... Open Source!!!)&lt;br /&gt;
* [http://www.amontec.com/ Amontec] JTAGkey, JTAGkey-Tiny - Firma Amontec existiert nicht mehr, JTAGbox von Bitrelle ist abwärtskompatibel zu JTAGkey, JTAGkey-2, etc.&lt;br /&gt;
* [http://section5.ch/icebear ICEbear] ICEbear (Plus|Light) JTAG adapter, spezielle Unterstützung für Flashen/Debuggen von Analog Devices Blackfin-Plattformen.&lt;br /&gt;
* [http://www.luminarymicro.com/products/ekk-lm3s811_evaluation_kit.html EKK-LM3S811] von LMI. Auf dem Testboard ist ein &amp;quot;on-board&amp;quot; JTAG-Adapter, der zu Ansteuerung des LM3S811 auf dem Board genutzt wird, aber auch an externe Controller angeschlossen werden kann. (Alle LMI Testboards verfügen über den JTAG Ein- und Ausgang.)&lt;br /&gt;
*[http://www.segger.com/cms/jlink.html SEGGER J-Link] sehr professioneller schneller JTAG Adapter. Für nichtkommerziellen Einsatz gibt es den J-Link Edu schon für 50€.&lt;br /&gt;
* [http://www.olimex.com/dev/arm-usb-ocd.html ARM-USB-OCD] von Olimex&lt;br /&gt;
* [http://www.signalyzer.com/ Xverve Signalyzer Tool]&lt;br /&gt;
* [http://bitrelle.wordpress.com/jtagbox/ Bitrelle JTAGbox] läuft mit OpenOCD, galvanisch vom Target getrennt&lt;br /&gt;
&lt;br /&gt;
=== Parallelport-Anschluss (Wiggler und Wiggler-&amp;quot;kompatibel&amp;quot;) ===&lt;br /&gt;
* [http://www.macraigor.com/hwproducts.htm Macraigor] Original Wiggler&lt;br /&gt;
* [http://www.olimex.com/dev/arm-jtag.html Olimex ARM-JTAG] Wiggler-Nachbau&lt;br /&gt;
* [http://www.k9spud.com/jtag/ k9spud Wiggler-Schaltplan]&lt;br /&gt;
* [http://web.archive.org/web/20060411074457/http://bbs.circuitcellar.com/phpBB2/viewtopic.php?p=10059&amp;amp; bigakis Wiggler-Schaltplan] (74HC244 Levelshifter, BC547 Transistor zum Invertieren)(&#039;&#039;&#039;Webarchiv-Link&#039;&#039;&#039;,Orginal gelöscht)&lt;br /&gt;
* [http://wiki.openwrt.org/doc/hardware/port.jtag.cables Wiggler Schaltplan] von OpenWRT (ebenfalls mit 74HC244). &lt;br /&gt;
* [http://www.st.com/stonline/products/literature/um/12322.pdf ST FlashLink JTAG Programming Cable] STM Application-Note&lt;br /&gt;
&lt;br /&gt;
Man findet einige Schaltpläne für Wiggler-Nachbauten im Netz. Nicht alle sind identisch. Der original Schaltplan von Macraigor ist meines (M. Thomas) Wissens nicht verfügbar. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vollständige&amp;quot; Belegung des Wiggler-Clones von Olimex (Quelle: sparkfun-Forum)&lt;br /&gt;
* DB25.2 → INVERSE → JTAG.15 (NTRST) (mthomas: hier ist wohl nSRST gemeint)&lt;br /&gt;
* DB25.3 → JTAG.7 (TMS)&lt;br /&gt;
* DB25.4 → JTAG.9 (TCK)&lt;br /&gt;
* DB25.5 → JTAG.5 (TDI)&lt;br /&gt;
* DB25.6 → JTAG.3 (TRST)&lt;br /&gt;
* DB25.9 → VCC for the Level shifter i.e. JTAG enable/disable&lt;br /&gt;
* DB25.11 ← JTAG.13 (TDO)&lt;br /&gt;
* DB25.13 ← Target VCC sense (only when JTAG is enabled i.e. DB26.9 = 1) &lt;br /&gt;
&lt;br /&gt;
DB25.18, DB25.19, DB25.20, DB25.21, DB25.22, DB25.23, DB25.24, DB25.25 werden mit GND verbunden.&lt;br /&gt;
&lt;br /&gt;
Soll das Wiggler-Interface auch mit der Software ocdremote von Macraigor genutzt werden, ist eine Brücke zwischen zwischen DB25.8 und DB25.15 einzubauen. ocdremote ab (ca.) Version 2.06 erkennt daran das original Wiggler und auch einen mit der Brücke ausgestattenen Nachbau. Nutzt man zur Ansteuerung andere Software (z.&amp;amp;nbsp;B. OpenOCD oder H-JTAG) wird diese Verbindung nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
Man beachte die Beschaltung von SRST und TRST: &lt;br /&gt;
&lt;br /&gt;
Üblicherweise wird Pin DB25.2 des Druckeranschlusses über eine Inverterschaltung (NPN Transistor) mit dem Reset-Pin des ARM-Controllers verbunden (&#039;&#039;&#039;nSRST&#039;&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
Pin DB25.6 des Druckeranschlusses wird über Levelshifter direkt mit dem &#039;&#039;&#039;TRST&#039;&#039;&#039;-Pin des Controllers verbunden. In manchen Schaltplänen findet man auch für TRST einen Inverter, aber dies scheint eher unüblich. &lt;br /&gt;
&lt;br /&gt;
Bei den sonstigen Pinbelegungen herrscht weitestgehend Einigkeit. Man muss lediglich Levelshifter ([[Pegelwandler]]) zwischenschalten, um zwischen den 5V des Druckeranschlusses und der Spannung des Controllers (üblicherweise 3,3V) zu &amp;quot;übersetzen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Allein ein 74HC244 als Levelshifter, wie in vielen Schaltungen verwendet, ist nicht ideal. Der Baustein wird dabei mit 3,3V aus der Zielschaltung betrieben und die Anpassung an die nominell 5V vom Druckerport an die 3,3V des HC244 erfolgt entweder durch Spannungsteiler oder durch Strombegrenzungswiderstände und die internen Überspannungsschutzdioden. Das Ausgangssignal TDO zurück zum Druckeranschluss ist maximal 3,3V. Beides nicht optimal aber es funktioniert zumindest meistens. Aufwändigere Schaltungen, wie z.&amp;amp;nbsp;B. der Olimex Wiggler-Nachbau (&amp;quot;ARM-JTAG&amp;quot;), nutzen eine Kombination aus einem 74AC244 und einem 74LCX244.&lt;br /&gt;
&lt;br /&gt;
=== sonstige ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ARM-JTAG-COOCOX/ ARM-JTAG-COOCOX], CoLinkEX Nachbau von Olimex, unterstützt JTAG sowie SWD&lt;br /&gt;
** [http://www.coocox.org/colinkEx.htm unterstützte uC]&lt;br /&gt;
** unterstütze IDEs: [http://www.keil.com/arm/mdk.asp Keil MDK-ARM 4.03] oder neuer, [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR Embedded Workbench 5.xx] oder neuer sowie die [http://www.coocox.org/CooCox_CoIDE.htm CooCox CoIDE]&lt;br /&gt;
&lt;br /&gt;
* Abatron BDI2000&lt;br /&gt;
* [http://www.amontec.com/index.shtml Amontec] JTAG Accelerator, Chameleon POD&lt;br /&gt;
* AZ-Electronics&lt;br /&gt;
* JtagConnection&lt;br /&gt;
* [http://www.lauterbach.de/mindex.html Lauterbach] Trace&lt;br /&gt;
* Macraigor Systems LLS&lt;br /&gt;
* Peedi&lt;br /&gt;
* Rowley Associates CrossConnect&lt;br /&gt;
&lt;br /&gt;
=== Anschlussbelegung ===&lt;br /&gt;
&lt;br /&gt;
Auf Evaluation-Boards verschiedener Hersteller (z.&amp;amp;nbsp;B. Atmel, IAR, Keil, Olimex) ist die JTAG-Schnittstelle über einen 20-poligen Wannenstecker (2·10, Raster 2,54mm) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 NC  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 nTRST&lt;br /&gt;
 | 4 GND &lt;br /&gt;
 |-&lt;br /&gt;
 | 5 TDI&lt;br /&gt;
 | 6 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 TMS&lt;br /&gt;
 | 8 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 TCK&lt;br /&gt;
 | 10 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 11 GND&lt;br /&gt;
 | 12 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 13 TDO&lt;br /&gt;
 | 14 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 15 nRESET/nSRST&lt;br /&gt;
 | 16 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 17 NC&lt;br /&gt;
 | 18 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 19 NC&lt;br /&gt;
 | 20 GND&lt;br /&gt;
 |-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Neuerdings propagiert ARM eine sehr kompakte Variante mit 2·5 Pins in einem 1,27 mm Raster:&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 RTCK&lt;br /&gt;
 | 8 TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GND&lt;br /&gt;
 | 10 nRESET/nSRST&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Daneben existiert noch eine weniger gebräuchliche aber dokumentierte Variante mit 14 Polen (2·7). &lt;br /&gt;
&lt;br /&gt;
Bei fertigen Geräten, für die keine Schaltpläne vorliegen, muss man sich die herstellerspezifische Anschlussbelegung anhand des Datenblatts des verwendeten Controllers und mittels Messgerät selbst ermitteln.&lt;br /&gt;
&lt;br /&gt;
=== Cortex Debug Connectors von ARM ===&lt;br /&gt;
&lt;br /&gt;
[http://infocenter.arm.com/help/topic/com.arm.doc.faqs/attached/13634/cortex_debug_connectors.pdf In diesem PDF Dokument hat ARM die Anschlussbelegung für Cortex-Prozessoren definiert.]&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 SWDIO/TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 SWDCLK/TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 SWO/TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 Key (kein Pin)&lt;br /&gt;
 | 8 NC/TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GNDDetect&lt;br /&gt;
 | 10 nRESET&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Der 10-polige JTAG Stecker von mmvisual (ARM, Cortex, Seriell kombiniert) ===&lt;br /&gt;
mmvisual hat mit dieser Steckerbelegung die Standard JTAG Schnittstelle erweitert:&lt;br /&gt;
&lt;br /&gt;
Ich habe einen 10-poligen Debug-Stecker entworfen, der alle Varianten sowie einen [[UART]]-Anschluss enthält und die Pins optimal angeordnet sind. Mit diesem Stecker können ARM7/9 und Cortex CPUs programmiert werden. An allen JTAG-Steckervarianten fehlen leider Funktionen, bzw. die Pins waren nicht optimal angeordnet. Daher habe ich den &amp;quot;perfekten&amp;quot; Stecker designt der viele Funktionen beinhaltet.&lt;br /&gt;
&lt;br /&gt;
[[bild:jtag-debug-port10.png]]&lt;br /&gt;
&lt;br /&gt;
==== Die Funktionen ====&lt;br /&gt;
* JTAG&lt;br /&gt;
* SWD&lt;br /&gt;
* Debug-UART-Anschluss (verbunden mit einem freien UART vom [[STM32]]) (alternativ ein MAX232 Chip dazwischen schalten)&lt;br /&gt;
* Weniger Platzbedarf auf der Platine (Standard-JTAG 20 Polig)&lt;br /&gt;
* Über 4-Poligen Würfel kann der UART benutzt werden (Pin 7/8/9/10)&lt;br /&gt;
* Es kann ein Jumper gesteckt werden für eine Option (Pin 9/10) ohne dass es sich mit dem RS232 Chip beißt (sofern er eingebaut wurde)&lt;br /&gt;
* Über einen 5-Poligen einreihigen Stecker kann SWD verwendet werden (Pin 1/3/5/7/9)&lt;br /&gt;
* den ganzen Stecker braucht es nur, wenn man den herkömmlichen JTAG nutzen möchte.&lt;br /&gt;
* Kurzschlussschutz, da GND und +3V3 nicht gegenüber liegen&lt;br /&gt;
&lt;br /&gt;
In all meinen Projekten verwende ich nur noch diese Anordnung, denn sie ist einfach praktisch. Alles drauf und die Pins sind perfekt angeordnet für jede Art der Anwendung.&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist der UART 1 ([[STM32]]) benutzt mit den Pins PA9/PA10. Wenn die Boot-Pins auf einen separaten Jumper-Block gelegt werden, so könnte auch mit der ST Software ein Flash Update durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Hier die Erklärung warum es die BOOT-Pins nicht auf dem JTAG-Stecker benötigt. Ich habe mir einen eigenen Bootloader geschrieben, der kommt ohne das&lt;br /&gt;
Interne Boot-ROM (und ohne die BOOT-Pins) aus. Ich habe den in die ersten 8KB Flash programmiert.&lt;br /&gt;
* Das PC-Programm senden über den UART den Befehl &amp;quot;GoTo Bootloader&amp;quot;, damit wird mein Bootloader angesprungen.&lt;br /&gt;
* Dann sendet das PC Programm die Update-Daten.&lt;br /&gt;
* Wenn fertig, dann geht es zurück in die Applikation.&lt;br /&gt;
* Der Bootloader ist immer beim Einschalten des Boards aktiv. Sobald eine Tastenkombination gedrückt wird, bleibt er &amp;quot;hängen&amp;quot; und irgend welche LEDs blinken. Also wenn das Flash &amp;quot;Zerschossen&amp;quot; sein sollte kann man mit einem Restart/Tasten den Bootloader aktivieren und erneut den Update ausführen.&lt;br /&gt;
* Der ST eigene Bootloader hat mir nicht gefallen, weil da keine LED&#039;s Blinken und dem User sagen, &amp;quot;Hallo ich lebe und bin im Bootloader&amp;quot;.&lt;br /&gt;
* Wenn die Tasten beim Einschalten nicht gedrückt werden, dann springt der Bootloader in die Applikation&lt;br /&gt;
* Der Bootloader kann jeden beliebigen UART nutzen.&lt;br /&gt;
&lt;br /&gt;
==== Die Adapterplatine ====&lt;br /&gt;
Mit der Adapterplatine kann von dem 10-poligen Stecker auf einen 20-poligen Standard JTAG Stecker verbunden werden. Zusätzlich ist hier ein TTL/V24 Wandler integriert um die UART Signale auf V24 um zu setzen. Hier kann der Schaltplan/Layout geladen werden: [[Datei:10-Pol-JTAG.zip]]&lt;br /&gt;
Die Platine ist 33×19mm klein.&lt;br /&gt;
&lt;br /&gt;
=== 10-pin JTAG im 20&#039;tel-Zoll Raster ===&lt;br /&gt;
&lt;br /&gt;
* Forumsbeitrag [http://www.mikrocontroller.net/topic/188659#1836129 &amp;quot;neuer JTAG-Stecker für ARM&amp;quot;]&lt;br /&gt;
* [http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm Keil ULINK2] (und Pinouts anderer JTAG-Stecker)&lt;br /&gt;
&lt;br /&gt;
== MSP430 JTAG ==&lt;br /&gt;
&lt;br /&gt;
Anschluß an Parallelport: &lt;br /&gt;
* [http://elmicro.com/files/olimex/msp430-jtag-d.pdf Olimex MSP430 JTAG (PDF)] bzw. ([http://www.olimex.com/dev/images/msp430-jtag-d-sch.gif (GIF)]). Siehe auch Diskussion im [http://www.mikrocontroller.net/topic/57208#442620 Forum].&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/90754#776070 Forumsbeitrag] mit Anhang eines chinesischen? Schaltplans (PDF)&lt;br /&gt;
&lt;br /&gt;
Anschluß an USB/Seriell:&lt;br /&gt;
* [http://goodfet.sourceforge.net/ GoodFET] von Travis Goodspeed. The GoodFET is an open source tool for programming microcontrollers and memories by [[SPI]], [[I2C]], JTAG ([[MSP430]], [[ARM]]), and a slew of vendor-proprietary protocols. (Stub für [http://events.ccc.de/congress/2009/Fahrplan/events/3490.en.html 26C3 Vortrag])&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Für Xilinx&lt;br /&gt;
** [http://www.freewebs.com/lykos1986/cpldprogrammer.htm Xilinx JTAG programmer] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.embedded-projects.net/index.php?page_id=157 Xilinx JTAG XSVF Player mit USBprog] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter Xilinx Platform Cable I Nachbau] - Nachbau des Originalem Xilinx Platform Cable I (DLC9)&lt;br /&gt;
** [http://warmcat.com/milksop/cheaptag.html Cheaptag] - Xilinx Parallel Jtag programming cable&lt;br /&gt;
** [http://embdev.net/topic/139121#new XSVF Player FTDI Bitbang] - XSVF Player with FTDI Bitbang mode&lt;br /&gt;
** [https://play.google.com/store/apps/details?id=com.wesche.xsvf XSVF Player FTDI Bitbang for Android] - XSVF Player with FTDI Bitbang mode for Android&lt;br /&gt;
&lt;br /&gt;
* Für Altera&lt;br /&gt;
** [http://translate.google.com/translate?js=n&amp;amp;prev=_t&amp;amp;hl=en&amp;amp;ie=UTF-8&amp;amp;layout=2&amp;amp;eotf=1&amp;amp;sl=auto&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Fmarsohod.org%2Findex.php%2Fourblog%2F11-blog%2F163-marsblaster Marsblaster] für Altera FPGA, serieller Port&lt;br /&gt;
** [http://www.altera.com/literature/ug/ug_bbii.pdf ALTERA ByteBlaster]&lt;br /&gt;
** [http://www.entner-electronics.com/tl/index.php/eeblaster.html EEBlaster], sehr günstig, kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
** [http://www.pyroelectro.com/tutorials/byteblaster/index.html Build A ByteBlaster] bei www.pyroelectro.com&lt;br /&gt;
** [http://www.ixo.de/info/usb_jtag/ USB-JTAG-Adapter], kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
&lt;br /&gt;
* ColdFire BDM Pod&lt;br /&gt;
** [http://forums.freescale.com/t5/68K-ColdFire-reg-Microprocessors/TBLCF-open-source-debugging-cable/m-p/7543 TBLCF open source debugging cable]&lt;br /&gt;
** [http://www.rockbox.org/wiki/IriverBDM IriverBDM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- VERALTETE LINKS - PRODUKTE WERDEN DORT NICHT GEFUNDEN&lt;br /&gt;
* FCPU-X Platform Cable USB JTAG cable&lt;br /&gt;
** Bezugsquelle (DE): [http://www.vht-impex-shop.de/product_info.php?info=p786_HW-USB-platform-cable--FCPU-X-platform-cable-similar-to-HW-USB-Kabel-for-Xilinx-evaluation-boards-etc-.html&amp;amp;XTCsid=e613a7119493deac52e83e9038ce131a http://www.vht-impex-shop.de]&lt;br /&gt;
** Bezugsquelle (US): [http://www.celeritous.com/estore/index.php?main_page=product_info&amp;amp;cPath=1&amp;amp;products_id=129 http://www.celeritous.com] &lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Universal JTAG Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Versaloon ===&lt;br /&gt;
&lt;br /&gt;
[http://www.versaloon.com/ Versaloon] is a full-opensource multi-functional platform based on generic USB_TO_XXX protocol, which can now support more than 10 kinds of interfaces including [[ISP]], [[JTAG]], SWD, [[SPI]], [[IIC]] and so on. Programming is supported for: &lt;br /&gt;
* STM8 support(SWIM)&lt;br /&gt;
* STM32 support(ISP/JTAG/SWD) siehe auch Forumbeitrag von Bingo [http://www.mikrocontroller.net/topic/202785]&lt;br /&gt;
* LPC1000 support(ISP/JTAG/SWD)&lt;br /&gt;
* LM3S support(JTAG/SWD)&lt;br /&gt;
* AT91SAM3 support(JTAG/SWD)&lt;br /&gt;
* AT89S5X support(ISP)&lt;br /&gt;
* PSOC1 support(ISSP)&lt;br /&gt;
* MSP430(without TEST) support(JTAG)&lt;br /&gt;
* C8051F support(C2/JTAG)&lt;br /&gt;
* AVR8 support(ISP/JTAG)&lt;br /&gt;
* LPC900 support(ICP)&lt;br /&gt;
* HCS08 support(BDM)&lt;br /&gt;
* HCS12(X) support(BDM)&lt;br /&gt;
* SVF support(JTAG)&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [[AVR-Studio]] (Windows)&lt;br /&gt;
* [[GDB]] in Verbindung mit [http://avarice.sourceforge.net/ AVaRICE] und AVR JTAGICE kompatibler Hardware. (Linux)&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
* OpenOCD - kostenlose Open Source Software, Debug Monitor für GDB (läuft als Server mit eigenem TCP/IP Socket), unterstützt zur Zeit 190 verschiedene Prozessoren&lt;br /&gt;
* [[GDB]] bzw. Insight und auf die ARM JTAG Hardware abgestimmte GDB-Server (OCDRemote, [http://openocd.berlios.de/ OpenOCD], BDI2000, Peedi)&lt;br /&gt;
* [http://www.hjtag.com/ H-JTAG] und RDI-kompatible Debugger (SDT2.51, ADS1.2, RealView and IAR)&lt;br /&gt;
* Herstellerspezifische Software z.&amp;amp;nbsp;B. von Lauterbach&lt;br /&gt;
* Komplette kostenlose Open Source Toolchain [https://bitrelle.files.wordpress.com/2012/05/bitrelle_programming_eclipse.pdf Eclipse-GDB-OpenOCD], läuft auf Linux/Windows/Mac, unterstützt alle  Prozessortypen, die von OpenOCD unterstützt werden&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Altera: Quartus Programmer (quartus_pgm)&lt;br /&gt;
* Lattice: ToDo... (Lattice setzt seit 2011 auf die JTAG-Funktionalität des FT2232 und benötigt daher keine speziellen USB-JTAG-Adapter mehr)&lt;br /&gt;
* Xilinx: Impact, xc3sprog, ...&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Tools ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.topjtag.com TopJTAG]: boundary-scan software for circuit debugging and flash programming.&lt;br /&gt;
* [http://www.ricreations.com/index.html Universal Scan]&lt;br /&gt;
* [http://urjtag.org UrJTAG]: Kommandozeilentool für Boundary Scan, FPGA und CPLD und Speicher lesen und schreiben u.v.a.m., Nachfolger von openwince JTAG Tools.&lt;br /&gt;
* [http://www.gojtag.com/ goJTAG]: graphisches Boundary-Scan-Tool zum manuellen Durchtesten von Verbindungen, besonders für Nicht-JTAG-Experten geeignet. Obwohl in Java geschrieben, funktioniert es nur unter Windows. Funktioniert im Prinzip mit allen FT2232(H) basierten Adaptern.&lt;br /&gt;
* [http://andreas-weschenfelder.de.vu FT2232 BoundaryScan Tool]: free boundary-scan software for flash programming [S29GL128N, S29GL256N, S29GL512N, M25PX16, M25PX32, M25PX64, etc ].&lt;br /&gt;
&amp;lt;!-- link tot 20100521 * [http://www.rsn-tech.demon.co.uk/pjtag/pjtag.html Pesonal JTAG]: halbfertiges Hobbyprojekt, ist bissel buggy, aber kleine Sachen gehen damit. --&amp;gt;&lt;br /&gt;
* [http://www.blunk-electronic.de/products.html]: boundary scan test system M-1 for board and system testing, runs on Linux, open source, no licensing ! Read more on http://www.blunk-electronic.de/products.html&lt;br /&gt;
&lt;br /&gt;
= Weblinks =&lt;br /&gt;
&lt;br /&gt;
*Debugging the Linux kernel with JTAG] von Alexander Sirotkin [http://www.embedded.com/design/operating-systems/4207333/Debugging-the-Linux-kernel-with-JTAG] (LPC3250 mit FemtoLinux, OpenOCD)&lt;br /&gt;
*[http://hri.sourceforge.net/tools/jtag_faq_org.html JTAG FAQ] auf sourceforge.net&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR]]&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:FPGA und Co]]&lt;br /&gt;
[[Kategorie:Datenübertragung]]&lt;/div&gt;</summary>
		<author><name>Ralfiboy</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94756</id>
		<title>JTAG</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94756"/>
		<updated>2017-01-05T18:32:53Z</updated>

		<summary type="html">&lt;p&gt;Ralfiboy: /* USB Anschluss auf Basis des FTDI FT2232 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;J&#039;&#039;&#039;oint &#039;&#039;&#039;T&#039;&#039;&#039;est &#039;&#039;&#039;A&#039;&#039;&#039;ction &#039;&#039;&#039;G&#039;&#039;&#039;roup, entwickelte den Standard IEEE 1149.1. Das JTAG-Protokoll ermöglicht das Programmieren, Debuggen und Testen von ICs, [[Prozessor]]en und [[FPGA]]s direkt in der Schaltung.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2737 AVR JTAGICE] (gelegentlich auch &#039;&#039;JTAGICE mkI&#039;&#039; genannt) von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3353 AVR JTAGICE mkII] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=17213&amp;amp;category_id=163&amp;amp;family_id=682&amp;amp;subfamily_id=2138 AVR JTAGICE 3] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/tools/ATATMEL-ICE.aspx ATMEL-ICE] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3891 AVR Dragon] von Atmel.&lt;br /&gt;
** [http://www.atmel.com/dyn/resources/prod_documents/doc8112.pdf AVR077: Opto Isolated Emulation for the DebugWIRE] (auch für AVR JTAGICE mkII nützlich)&lt;br /&gt;
* [http://gandalf.arubi.uni-kl.de/avr_projects/evertool/index.html Evertool und Evertool light] von Martin Thomas. Evertool unterstützt JTAG analog zu AVR JTAGICE und [[ISP]] nach [[STK500]] Protokoll. Evertool light nur JTAG. &lt;br /&gt;
* [http://aquaticus.info/jtag JTAG for AVR processors] bei Aquaticus ROV. (Englisch)&lt;br /&gt;
* [http://www.olimex.com/dev/avr-jtag.html AVR-JTAG] und [http://www.olimex.com/dev/avr-usb-jtag.html AVR-USB-JTAG] von [http://www.olimex.com/dev/index.html Olimex] (kommerziell). Alternativer Lieferant ist der [http://elmicro.com/de/avrjtag.html Elektronikladen].&lt;br /&gt;
* [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/35 AVR-JTAG] und [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/52 AVR-USB-JTAG] von [http://www.gadgetPool.de gadgetPool] (kommerziell)&lt;br /&gt;
* [http://www.floppyspongeonline.com/automation/isojtagisp/isojtagisp.php IsoJtagISP] und [http://www.floppyspongeonline.com/automation/isojtag/isojtag.php IsoJTAG] von Floppy Sponge Automation ([[USB]], optisch isoliert). Hier eine modifizierte Version von [http://www.madwizard.org/electronics/projects/avrjtag Madwizard].&lt;br /&gt;
* [http://www.ere.co.th/(gs5afz55q5idyyn0a1ibkl45)/default.aspx?RedirectPage=Products&amp;amp;RedirectPage1=ProductsDetail&amp;amp;ProductID=56 JTAGAVRU1] (AVR JTAGICE kompatibel, USB, 1.8-5.5V) (existiert wohl nicht mehr ?)&lt;br /&gt;
* [http://www.avrfreaks.net/index.php?module=Freaks%20Tools&amp;amp;func=viewItem&amp;amp;item_id=630 JTAGcable II] (AVR JTAGICE kompatibel, USB, 1.8-6 V)&lt;br /&gt;
* [http://www.miklobit.com/JTAG_TWICE.530+B6Jkw9Mw__.0.html MB-JTAG-TWICE] (AVR JTAGICE kompatibel, RS232, 2.7-5.5V, +ISP STK500v2) - Free update to version compatible with AVR JTAG MKII (coming soon)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Programmer und Debugger für USB (MKI) &lt;br /&gt;
* link tot 20100521 [http://www.paktek-shop.de/epages/61807596.sf/de_DE/?ObjectPath=/Shops/61807596/Categories/Produkte/AVR-Programmer]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pinout AVR-JTAG ===&lt;br /&gt;
&lt;br /&gt;
AVR benutzt einen 10poligen IDC-Stecker mit 2,54 mm Pinabstand und folgendem Pinout:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE mkII&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| (frei) || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| Vcc || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bemerkungen:&lt;br /&gt;
&lt;br /&gt;
* VTref &#039;&#039;muss&#039;&#039; beschaltet werden, von dieser Spannung werden die Pegelwandler des JTAG-ICE gespeist, und das ICE weigert sich zu arbeiten wenn keine Spannung anliegt&lt;br /&gt;
* nTRST wird vom JTAG ICE nicht benutzt, soll aber aus Kompatibilität mit anderen JTAG-Implementierungen frei bleiben&lt;br /&gt;
* Pin 7 war in der ersten Version des Atmel JTAG ICE als &#039;&#039;Vsupply&#039;&#039; bezeichnet und diente dort der Speisung des JTAG ICE aus der Zielhardware&lt;br /&gt;
* nSRST muss nicht zwingend an &#039;&#039;/RESET&#039;&#039; des AVR gelegt werden; wenn er fehlt,  kann das JTAG ICE eine schlafende CPU nicht wecken oder mit einem Controller arbeiten, dessen JTAG-Schnittstelle von der Software außer Betrieb genommen worden ist (Bit &#039;&#039;JTD&#039;&#039; im Register &#039;&#039;MCUCSR&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
AVR-JTAG lässt sich mit anderen JTAG-Implementierungen (oder weiteren AVRs) zu einer &#039;&#039;daisy chain&#039;&#039; verketten; dabei schiebt jeder AVR 4 Bits.&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
=== USB Anschluss auf Basis des FTDI FT2232 ===&lt;br /&gt;
Diese Adapter funktionieren mit Opensource-Tools wie OpenOCD (ARM-Debugger), xc3sprog (Xilinx Programmer), urjtag (generisches JTAG-Tool), gojtag, etc. Manchmal sind leichte Anpassungen des Source nötig. Bei einigen Adaptern ist auch die serielle Schnittstelle (3.3V-Level) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
* [http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/usbjtag/usbjtag.html USB to JTAG Interface] von Hubert Högl, Schaltplan&lt;br /&gt;
* [http://www.embedded-projects.net/index.php?page_id=175 USB JTAG Interface für usbprog und OpenOCD] von Benedikt Sauter (Zurzeit gibt es Bausätze für 22€. Der Adapter ist ein Universaladapter der mit verschiedenen Firmwares zu verschiedenen Geräte werden kann. Pläne, Quelltexte usw... Open Source!!!)&lt;br /&gt;
* [http://www.amontec.com/ Amontec] JTAGkey, JTAGkey-Tiny - Firma Amontec existiert nicht mehr, JTAGbox von Bitrelle ist abwärtskompatibel zu JTAGkey, JTAGkey-2, etc.&lt;br /&gt;
* [http://section5.ch/icebear ICEbear] ICEbear (Plus|Light) JTAG adapter, spezielle Unterstützung für Flashen/Debuggen von Analog Devices Blackfin-Plattformen.&lt;br /&gt;
* [http://www.luminarymicro.com/products/ekk-lm3s811_evaluation_kit.html EKK-LM3S811] von LMI. Auf dem Testboard ist ein &amp;quot;on-board&amp;quot; JTAG-Adapter, der zu Ansteuerung des LM3S811 auf dem Board genutzt wird, aber auch an externe Controller angeschlossen werden kann. (Alle LMI Testboards verfügen über den JTAG Ein- und Ausgang.)&lt;br /&gt;
*[http://www.segger.com/cms/jlink.html SEGGER J-Link] sehr professioneller schneller JTAG Adapter. Für nichtkommerziellen Einsatz gibt es den J-Link Edu schon für 50€.&lt;br /&gt;
* [http://www.olimex.com/dev/arm-usb-ocd.html ARM-USB-OCD] von Olimex&lt;br /&gt;
* [http://www.signalyzer.com/ Xverve Signalyzer Tool]&lt;br /&gt;
* [http://bitrelle.wordpress.com/jtagbox/ Bitrelle JTAGbox] läuft mit OpenOCD, galvanisch vom Target getrennt&lt;br /&gt;
&lt;br /&gt;
=== Parallelport-Anschluss (Wiggler und Wiggler-&amp;quot;kompatibel&amp;quot;) ===&lt;br /&gt;
* [http://www.macraigor.com/hwproducts.htm Macraigor] Original Wiggler&lt;br /&gt;
* [http://www.olimex.com/dev/arm-jtag.html Olimex ARM-JTAG] Wiggler-Nachbau&lt;br /&gt;
* [http://www.k9spud.com/jtag/ k9spud Wiggler-Schaltplan]&lt;br /&gt;
* [http://web.archive.org/web/20060411074457/http://bbs.circuitcellar.com/phpBB2/viewtopic.php?p=10059&amp;amp; bigakis Wiggler-Schaltplan] (74HC244 Levelshifter, BC547 Transistor zum Invertieren)(&#039;&#039;&#039;Webarchiv-Link&#039;&#039;&#039;,Orginal gelöscht)&lt;br /&gt;
* [http://wiki.openwrt.org/doc/hardware/port.jtag.cables Wiggler Schaltplan] von OpenWRT (ebenfalls mit 74HC244). &lt;br /&gt;
* [http://www.st.com/stonline/products/literature/um/12322.pdf ST FlashLink JTAG Programming Cable] STM Application-Note&lt;br /&gt;
&lt;br /&gt;
Man findet einige Schaltpläne für Wiggler-Nachbauten im Netz. Nicht alle sind identisch. Der original Schaltplan von Macraigor ist meines (M. Thomas) Wissens nicht verfügbar. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vollständige&amp;quot; Belegung des Wiggler-Clones von Olimex (Quelle: sparkfun-Forum)&lt;br /&gt;
* DB25.2 → INVERSE → JTAG.15 (NTRST) (mthomas: hier ist wohl nSRST gemeint)&lt;br /&gt;
* DB25.3 → JTAG.7 (TMS)&lt;br /&gt;
* DB25.4 → JTAG.9 (TCK)&lt;br /&gt;
* DB25.5 → JTAG.5 (TDI)&lt;br /&gt;
* DB25.6 → JTAG.3 (TRST)&lt;br /&gt;
* DB25.9 → VCC for the Level shifter i.e. JTAG enable/disable&lt;br /&gt;
* DB25.11 ← JTAG.13 (TDO)&lt;br /&gt;
* DB25.13 ← Target VCC sense (only when JTAG is enabled i.e. DB26.9 = 1) &lt;br /&gt;
&lt;br /&gt;
DB25.18, DB25.19, DB25.20, DB25.21, DB25.22, DB25.23, DB25.24, DB25.25 werden mit GND verbunden.&lt;br /&gt;
&lt;br /&gt;
Soll das Wiggler-Interface auch mit der Software ocdremote von Macraigor genutzt werden, ist eine Brücke zwischen zwischen DB25.8 und DB25.15 einzubauen. ocdremote ab (ca.) Version 2.06 erkennt daran das original Wiggler und auch einen mit der Brücke ausgestattenen Nachbau. Nutzt man zur Ansteuerung andere Software (z.&amp;amp;nbsp;B. OpenOCD oder H-JTAG) wird diese Verbindung nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
Man beachte die Beschaltung von SRST und TRST: &lt;br /&gt;
&lt;br /&gt;
Üblicherweise wird Pin DB25.2 des Druckeranschlusses über eine Inverterschaltung (NPN Transistor) mit dem Reset-Pin des ARM-Controllers verbunden (&#039;&#039;&#039;nSRST&#039;&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
Pin DB25.6 des Druckeranschlusses wird über Levelshifter direkt mit dem &#039;&#039;&#039;TRST&#039;&#039;&#039;-Pin des Controllers verbunden. In manchen Schaltplänen findet man auch für TRST einen Inverter, aber dies scheint eher unüblich. &lt;br /&gt;
&lt;br /&gt;
Bei den sonstigen Pinbelegungen herrscht weitestgehend Einigkeit. Man muss lediglich Levelshifter ([[Pegelwandler]]) zwischenschalten, um zwischen den 5V des Druckeranschlusses und der Spannung des Controllers (üblicherweise 3,3V) zu &amp;quot;übersetzen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Allein ein 74HC244 als Levelshifter, wie in vielen Schaltungen verwendet, ist nicht ideal. Der Baustein wird dabei mit 3,3V aus der Zielschaltung betrieben und die Anpassung an die nominell 5V vom Druckerport an die 3,3V des HC244 erfolgt entweder durch Spannungsteiler oder durch Strombegrenzungswiderstände und die internen Überspannungsschutzdioden. Das Ausgangssignal TDO zurück zum Druckeranschluss ist maximal 3,3V. Beides nicht optimal aber es funktioniert zumindest meistens. Aufwändigere Schaltungen, wie z.&amp;amp;nbsp;B. der Olimex Wiggler-Nachbau (&amp;quot;ARM-JTAG&amp;quot;), nutzen eine Kombination aus einem 74AC244 und einem 74LCX244.&lt;br /&gt;
&lt;br /&gt;
=== sonstige ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ARM-JTAG-COOCOX/ ARM-JTAG-COOCOX], CoLinkEX Nachbau von Olimex, unterstützt JTAG sowie SWD&lt;br /&gt;
** [http://www.coocox.org/colinkEx.htm unterstützte uC]&lt;br /&gt;
** unterstütze IDEs: [http://www.keil.com/arm/mdk.asp Keil MDK-ARM 4.03] oder neuer, [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR Embedded Workbench 5.xx] oder neuer sowie die [http://www.coocox.org/CooCox_CoIDE.htm CooCox CoIDE]&lt;br /&gt;
&lt;br /&gt;
* Abatron BDI2000&lt;br /&gt;
* [http://www.amontec.com/index.shtml Amontec] JTAG Accelerator, Chameleon POD&lt;br /&gt;
* AZ-Electronics&lt;br /&gt;
* JtagConnection&lt;br /&gt;
* [http://www.lauterbach.de/mindex.html Lauterbach] Trace&lt;br /&gt;
* Macraigor Systems LLS&lt;br /&gt;
* Peedi&lt;br /&gt;
* Rowley Associates CrossConnect&lt;br /&gt;
&lt;br /&gt;
=== Anschlussbelegung ===&lt;br /&gt;
&lt;br /&gt;
Auf Evaluation-Boards verschiedener Hersteller (z.&amp;amp;nbsp;B. Atmel, IAR, Keil, Olimex) ist die JTAG-Schnittstelle über einen 20-poligen Wannenstecker (2·10, Raster 2,54mm) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 NC  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 nTRST&lt;br /&gt;
 | 4 GND &lt;br /&gt;
 |-&lt;br /&gt;
 | 5 TDI&lt;br /&gt;
 | 6 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 TMS&lt;br /&gt;
 | 8 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 TCK&lt;br /&gt;
 | 10 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 11 GND&lt;br /&gt;
 | 12 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 13 TDO&lt;br /&gt;
 | 14 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 15 nRESET/nSRST&lt;br /&gt;
 | 16 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 17 NC&lt;br /&gt;
 | 18 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 19 NC&lt;br /&gt;
 | 20 GND&lt;br /&gt;
 |-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Neuerdings propagiert ARM eine sehr kompakte Variante mit 2·5 Pins in einem 1,27 mm Raster:&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 RTCK&lt;br /&gt;
 | 8 TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GND&lt;br /&gt;
 | 10 nRESET/nSRST&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Daneben existiert noch eine weniger gebräuchliche aber dokumentierte Variante mit 14 Polen (2·7). &lt;br /&gt;
&lt;br /&gt;
Bei fertigen Geräten, für die keine Schaltpläne vorliegen, muss man sich die herstellerspezifische Anschlussbelegung anhand des Datenblatts des verwendeten Controllers und mittels Messgerät selbst ermitteln.&lt;br /&gt;
&lt;br /&gt;
=== Cortex Debug Connectors von ARM ===&lt;br /&gt;
&lt;br /&gt;
[http://infocenter.arm.com/help/topic/com.arm.doc.faqs/attached/13634/cortex_debug_connectors.pdf In diesem PDF Dokument hat ARM die Anschlussbelegung für Cortex-Prozessoren definiert.]&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 SWDIO/TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 SWDCLK/TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 SWO/TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 Key (kein Pin)&lt;br /&gt;
 | 8 NC/TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GNDDetect&lt;br /&gt;
 | 10 nRESET&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Der 10-polige JTAG Stecker von mmvisual (ARM, Cortex, Seriell kombiniert) ===&lt;br /&gt;
mmvisual hat mit dieser Steckerbelegung die Standard JTAG Schnittstelle erweitert:&lt;br /&gt;
&lt;br /&gt;
Ich habe einen 10-poligen Debug-Stecker entworfen, der alle Varianten sowie einen [[UART]]-Anschluss enthält und die Pins optimal angeordnet sind. Mit diesem Stecker können ARM7/9 und Cortex CPUs programmiert werden. An allen JTAG-Steckervarianten fehlen leider Funktionen, bzw. die Pins waren nicht optimal angeordnet. Daher habe ich den &amp;quot;perfekten&amp;quot; Stecker designt der viele Funktionen beinhaltet.&lt;br /&gt;
&lt;br /&gt;
[[bild:jtag-debug-port10.png]]&lt;br /&gt;
&lt;br /&gt;
==== Die Funktionen ====&lt;br /&gt;
* JTAG&lt;br /&gt;
* SWD&lt;br /&gt;
* Debug-UART-Anschluss (verbunden mit einem freien UART vom [[STM32]]) (alternativ ein MAX232 Chip dazwischen schalten)&lt;br /&gt;
* Weniger Platzbedarf auf der Platine (Standard-JTAG 20 Polig)&lt;br /&gt;
* Über 4-Poligen Würfel kann der UART benutzt werden (Pin 7/8/9/10)&lt;br /&gt;
* Es kann ein Jumper gesteckt werden für eine Option (Pin 9/10) ohne dass es sich mit dem RS232 Chip beißt (sofern er eingebaut wurde)&lt;br /&gt;
* Über einen 5-Poligen einreihigen Stecker kann SWD verwendet werden (Pin 1/3/5/7/9)&lt;br /&gt;
* den ganzen Stecker braucht es nur, wenn man den herkömmlichen JTAG nutzen möchte.&lt;br /&gt;
* Kurzschlussschutz, da GND und +3V3 nicht gegenüber liegen&lt;br /&gt;
&lt;br /&gt;
In all meinen Projekten verwende ich nur noch diese Anordnung, denn sie ist einfach praktisch. Alles drauf und die Pins sind perfekt angeordnet für jede Art der Anwendung.&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist der UART 1 ([[STM32]]) benutzt mit den Pins PA9/PA10. Wenn die Boot-Pins auf einen separaten Jumper-Block gelegt werden, so könnte auch mit der ST Software ein Flash Update durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Hier die Erklärung warum es die BOOT-Pins nicht auf dem JTAG-Stecker benötigt. Ich habe mir einen eigenen Bootloader geschrieben, der kommt ohne das&lt;br /&gt;
Interne Boot-ROM (und ohne die BOOT-Pins) aus. Ich habe den in die ersten 8KB Flash programmiert.&lt;br /&gt;
* Das PC-Programm senden über den UART den Befehl &amp;quot;GoTo Bootloader&amp;quot;, damit wird mein Bootloader angesprungen.&lt;br /&gt;
* Dann sendet das PC Programm die Update-Daten.&lt;br /&gt;
* Wenn fertig, dann geht es zurück in die Applikation.&lt;br /&gt;
* Der Bootloader ist immer beim Einschalten des Boards aktiv. Sobald eine Tastenkombination gedrückt wird, bleibt er &amp;quot;hängen&amp;quot; und irgend welche LEDs blinken. Also wenn das Flash &amp;quot;Zerschossen&amp;quot; sein sollte kann man mit einem Restart/Tasten den Bootloader aktivieren und erneut den Update ausführen.&lt;br /&gt;
* Der ST eigene Bootloader hat mir nicht gefallen, weil da keine LED&#039;s Blinken und dem User sagen, &amp;quot;Hallo ich lebe und bin im Bootloader&amp;quot;.&lt;br /&gt;
* Wenn die Tasten beim Einschalten nicht gedrückt werden, dann springt der Bootloader in die Applikation&lt;br /&gt;
* Der Bootloader kann jeden beliebigen UART nutzen.&lt;br /&gt;
&lt;br /&gt;
==== Die Adapterplatine ====&lt;br /&gt;
Mit der Adapterplatine kann von dem 10-poligen Stecker auf einen 20-poligen Standard JTAG Stecker verbunden werden. Zusätzlich ist hier ein TTL/V24 Wandler integriert um die UART Signale auf V24 um zu setzen. Hier kann der Schaltplan/Layout geladen werden: [[Datei:10-Pol-JTAG.zip]]&lt;br /&gt;
Die Platine ist 33×19mm klein.&lt;br /&gt;
&lt;br /&gt;
=== 10-pin JTAG im 20&#039;tel-Zoll Raster ===&lt;br /&gt;
&lt;br /&gt;
* Forumsbeitrag [http://www.mikrocontroller.net/topic/188659#1836129 &amp;quot;neuer JTAG-Stecker für ARM&amp;quot;]&lt;br /&gt;
* [http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm Keil ULINK2] (und Pinouts anderer JTAG-Stecker)&lt;br /&gt;
&lt;br /&gt;
== MSP430 JTAG ==&lt;br /&gt;
&lt;br /&gt;
Anschluß an Parallelport: &lt;br /&gt;
* [http://elmicro.com/files/olimex/msp430-jtag-d.pdf Olimex MSP430 JTAG (PDF)] bzw. ([http://www.olimex.com/dev/images/msp430-jtag-d-sch.gif (GIF)]). Siehe auch Diskussion im [http://www.mikrocontroller.net/topic/57208#442620 Forum].&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/90754#776070 Forumsbeitrag] mit Anhang eines chinesischen? Schaltplans (PDF)&lt;br /&gt;
&lt;br /&gt;
Anschluß an USB/Seriell:&lt;br /&gt;
* [http://goodfet.sourceforge.net/ GoodFET] von Travis Goodspeed. The GoodFET is an open source tool for programming microcontrollers and memories by [[SPI]], [[I2C]], JTAG ([[MSP430]], [[ARM]]), and a slew of vendor-proprietary protocols. (Stub für [http://events.ccc.de/congress/2009/Fahrplan/events/3490.en.html 26C3 Vortrag])&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Für Xilinx&lt;br /&gt;
** [http://www.freewebs.com/lykos1986/cpldprogrammer.htm Xilinx JTAG programmer] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.embedded-projects.net/index.php?page_id=157 Xilinx JTAG XSVF Player mit USBprog] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter Xilinx Platform Cable I Nachbau] - Nachbau des Originalem Xilinx Platform Cable I (DLC9)&lt;br /&gt;
** [http://warmcat.com/milksop/cheaptag.html Cheaptag] - Xilinx Parallel Jtag programming cable&lt;br /&gt;
** [http://embdev.net/topic/139121#new XSVF Player FTDI Bitbang] - XSVF Player with FTDI Bitbang mode&lt;br /&gt;
** [https://play.google.com/store/apps/details?id=com.wesche.xsvf XSVF Player FTDI Bitbang for Android] - XSVF Player with FTDI Bitbang mode for Android&lt;br /&gt;
&lt;br /&gt;
* Für Altera&lt;br /&gt;
** [http://translate.google.com/translate?js=n&amp;amp;prev=_t&amp;amp;hl=en&amp;amp;ie=UTF-8&amp;amp;layout=2&amp;amp;eotf=1&amp;amp;sl=auto&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Fmarsohod.org%2Findex.php%2Fourblog%2F11-blog%2F163-marsblaster Marsblaster] für Altera FPGA, serieller Port&lt;br /&gt;
** [http://www.altera.com/literature/ug/ug_bbii.pdf ALTERA ByteBlaster]&lt;br /&gt;
** [http://www.entner-electronics.com/tl/index.php/eeblaster.html EEBlaster], sehr günstig, kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
** [http://www.pyroelectro.com/tutorials/byteblaster/index.html Build A ByteBlaster] bei www.pyroelectro.com&lt;br /&gt;
** [http://www.ixo.de/info/usb_jtag/ USB-JTAG-Adapter], kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
&lt;br /&gt;
* ColdFire BDM Pod&lt;br /&gt;
** [http://forums.freescale.com/t5/68K-ColdFire-reg-Microprocessors/TBLCF-open-source-debugging-cable/m-p/7543 TBLCF open source debugging cable]&lt;br /&gt;
** [http://www.rockbox.org/wiki/IriverBDM IriverBDM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- VERALTETE LINKS - PRODUKTE WERDEN DORT NICHT GEFUNDEN&lt;br /&gt;
* FCPU-X Platform Cable USB JTAG cable&lt;br /&gt;
** Bezugsquelle (DE): [http://www.vht-impex-shop.de/product_info.php?info=p786_HW-USB-platform-cable--FCPU-X-platform-cable-similar-to-HW-USB-Kabel-for-Xilinx-evaluation-boards-etc-.html&amp;amp;XTCsid=e613a7119493deac52e83e9038ce131a http://www.vht-impex-shop.de]&lt;br /&gt;
** Bezugsquelle (US): [http://www.celeritous.com/estore/index.php?main_page=product_info&amp;amp;cPath=1&amp;amp;products_id=129 http://www.celeritous.com] &lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Universal JTAG Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Versaloon ===&lt;br /&gt;
&lt;br /&gt;
[http://www.versaloon.com/ Versaloon] is a full-opensource multi-functional platform based on generic USB_TO_XXX protocol, which can now support more than 10 kinds of interfaces including [[ISP]], [[JTAG]], SWD, [[SPI]], [[IIC]] and so on. Programming is supported for: &lt;br /&gt;
* STM8 support(SWIM)&lt;br /&gt;
* STM32 support(ISP/JTAG/SWD) siehe auch Forumbeitrag von Bingo [http://www.mikrocontroller.net/topic/202785]&lt;br /&gt;
* LPC1000 support(ISP/JTAG/SWD)&lt;br /&gt;
* LM3S support(JTAG/SWD)&lt;br /&gt;
* AT91SAM3 support(JTAG/SWD)&lt;br /&gt;
* AT89S5X support(ISP)&lt;br /&gt;
* PSOC1 support(ISSP)&lt;br /&gt;
* MSP430(without TEST) support(JTAG)&lt;br /&gt;
* C8051F support(C2/JTAG)&lt;br /&gt;
* AVR8 support(ISP/JTAG)&lt;br /&gt;
* LPC900 support(ICP)&lt;br /&gt;
* HCS08 support(BDM)&lt;br /&gt;
* HCS12(X) support(BDM)&lt;br /&gt;
* SVF support(JTAG)&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [[AVR-Studio]] (Windows)&lt;br /&gt;
* [[GDB]] in Verbindung mit [http://avarice.sourceforge.net/ AVaRICE] und AVR JTAGICE kompatibler Hardware. (Linux)&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [[GDB]] bzw. Insight und auf die ARM JTAG Hardware abgestimmte GDB-Server (OCDRemote, [http://openocd.berlios.de/ OpenOCD], BDI2000, Peedi)&lt;br /&gt;
* [http://www.hjtag.com/ H-JTAG] und RDI-kompatible Debugger (SDT2.51, ADS1.2, RealView and IAR)&lt;br /&gt;
* Herstellerspezifische Software z.&amp;amp;nbsp;B. von Lauterbach&lt;br /&gt;
* Komplette Open Source Toolchain [https://bitrelle.files.wordpress.com/2012/05/bitrelle_programming_eclipse.pdf Eclipse-GDB-OpenOCD], läuft auf Linux/Windows/Mac, unterstützt alle  Prozessortypen (zur Zeit 190), die von OpenOCD unterstützt werden&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Altera: Quartus Programmer (quartus_pgm)&lt;br /&gt;
* Lattice: ToDo... (Lattice setzt seit 2011 auf die JTAG-Funktionalität des FT2232 und benötigt daher keine speziellen USB-JTAG-Adapter mehr)&lt;br /&gt;
* Xilinx: Impact, xc3sprog, ...&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Tools ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.topjtag.com TopJTAG]: boundary-scan software for circuit debugging and flash programming.&lt;br /&gt;
* [http://www.ricreations.com/index.html Universal Scan]&lt;br /&gt;
* [http://urjtag.org UrJTAG]: Kommandozeilentool für Boundary Scan, FPGA und CPLD und Speicher lesen und schreiben u.v.a.m., Nachfolger von openwince JTAG Tools.&lt;br /&gt;
* [http://www.gojtag.com/ goJTAG]: graphisches Boundary-Scan-Tool zum manuellen Durchtesten von Verbindungen, besonders für Nicht-JTAG-Experten geeignet. Obwohl in Java geschrieben, funktioniert es nur unter Windows. Funktioniert im Prinzip mit allen FT2232(H) basierten Adaptern.&lt;br /&gt;
* [http://andreas-weschenfelder.de.vu FT2232 BoundaryScan Tool]: free boundary-scan software for flash programming [S29GL128N, S29GL256N, S29GL512N, M25PX16, M25PX32, M25PX64, etc ].&lt;br /&gt;
&amp;lt;!-- link tot 20100521 * [http://www.rsn-tech.demon.co.uk/pjtag/pjtag.html Pesonal JTAG]: halbfertiges Hobbyprojekt, ist bissel buggy, aber kleine Sachen gehen damit. --&amp;gt;&lt;br /&gt;
* [http://www.blunk-electronic.de/products.html]: boundary scan test system M-1 for board and system testing, runs on Linux, open source, no licensing ! Read more on http://www.blunk-electronic.de/products.html&lt;br /&gt;
&lt;br /&gt;
= Weblinks =&lt;br /&gt;
&lt;br /&gt;
*Debugging the Linux kernel with JTAG] von Alexander Sirotkin [http://www.embedded.com/design/operating-systems/4207333/Debugging-the-Linux-kernel-with-JTAG] (LPC3250 mit FemtoLinux, OpenOCD)&lt;br /&gt;
*[http://hri.sourceforge.net/tools/jtag_faq_org.html JTAG FAQ] auf sourceforge.net&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR]]&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:FPGA und Co]]&lt;br /&gt;
[[Kategorie:Datenübertragung]]&lt;/div&gt;</summary>
		<author><name>Ralfiboy</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94755</id>
		<title>JTAG</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94755"/>
		<updated>2017-01-05T18:29:55Z</updated>

		<summary type="html">&lt;p&gt;Ralfiboy: /* ARM JTAG */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;J&#039;&#039;&#039;oint &#039;&#039;&#039;T&#039;&#039;&#039;est &#039;&#039;&#039;A&#039;&#039;&#039;ction &#039;&#039;&#039;G&#039;&#039;&#039;roup, entwickelte den Standard IEEE 1149.1. Das JTAG-Protokoll ermöglicht das Programmieren, Debuggen und Testen von ICs, [[Prozessor]]en und [[FPGA]]s direkt in der Schaltung.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2737 AVR JTAGICE] (gelegentlich auch &#039;&#039;JTAGICE mkI&#039;&#039; genannt) von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3353 AVR JTAGICE mkII] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=17213&amp;amp;category_id=163&amp;amp;family_id=682&amp;amp;subfamily_id=2138 AVR JTAGICE 3] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/tools/ATATMEL-ICE.aspx ATMEL-ICE] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3891 AVR Dragon] von Atmel.&lt;br /&gt;
** [http://www.atmel.com/dyn/resources/prod_documents/doc8112.pdf AVR077: Opto Isolated Emulation for the DebugWIRE] (auch für AVR JTAGICE mkII nützlich)&lt;br /&gt;
* [http://gandalf.arubi.uni-kl.de/avr_projects/evertool/index.html Evertool und Evertool light] von Martin Thomas. Evertool unterstützt JTAG analog zu AVR JTAGICE und [[ISP]] nach [[STK500]] Protokoll. Evertool light nur JTAG. &lt;br /&gt;
* [http://aquaticus.info/jtag JTAG for AVR processors] bei Aquaticus ROV. (Englisch)&lt;br /&gt;
* [http://www.olimex.com/dev/avr-jtag.html AVR-JTAG] und [http://www.olimex.com/dev/avr-usb-jtag.html AVR-USB-JTAG] von [http://www.olimex.com/dev/index.html Olimex] (kommerziell). Alternativer Lieferant ist der [http://elmicro.com/de/avrjtag.html Elektronikladen].&lt;br /&gt;
* [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/35 AVR-JTAG] und [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/52 AVR-USB-JTAG] von [http://www.gadgetPool.de gadgetPool] (kommerziell)&lt;br /&gt;
* [http://www.floppyspongeonline.com/automation/isojtagisp/isojtagisp.php IsoJtagISP] und [http://www.floppyspongeonline.com/automation/isojtag/isojtag.php IsoJTAG] von Floppy Sponge Automation ([[USB]], optisch isoliert). Hier eine modifizierte Version von [http://www.madwizard.org/electronics/projects/avrjtag Madwizard].&lt;br /&gt;
* [http://www.ere.co.th/(gs5afz55q5idyyn0a1ibkl45)/default.aspx?RedirectPage=Products&amp;amp;RedirectPage1=ProductsDetail&amp;amp;ProductID=56 JTAGAVRU1] (AVR JTAGICE kompatibel, USB, 1.8-5.5V) (existiert wohl nicht mehr ?)&lt;br /&gt;
* [http://www.avrfreaks.net/index.php?module=Freaks%20Tools&amp;amp;func=viewItem&amp;amp;item_id=630 JTAGcable II] (AVR JTAGICE kompatibel, USB, 1.8-6 V)&lt;br /&gt;
* [http://www.miklobit.com/JTAG_TWICE.530+B6Jkw9Mw__.0.html MB-JTAG-TWICE] (AVR JTAGICE kompatibel, RS232, 2.7-5.5V, +ISP STK500v2) - Free update to version compatible with AVR JTAG MKII (coming soon)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Programmer und Debugger für USB (MKI) &lt;br /&gt;
* link tot 20100521 [http://www.paktek-shop.de/epages/61807596.sf/de_DE/?ObjectPath=/Shops/61807596/Categories/Produkte/AVR-Programmer]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pinout AVR-JTAG ===&lt;br /&gt;
&lt;br /&gt;
AVR benutzt einen 10poligen IDC-Stecker mit 2,54 mm Pinabstand und folgendem Pinout:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE mkII&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| (frei) || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| Vcc || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bemerkungen:&lt;br /&gt;
&lt;br /&gt;
* VTref &#039;&#039;muss&#039;&#039; beschaltet werden, von dieser Spannung werden die Pegelwandler des JTAG-ICE gespeist, und das ICE weigert sich zu arbeiten wenn keine Spannung anliegt&lt;br /&gt;
* nTRST wird vom JTAG ICE nicht benutzt, soll aber aus Kompatibilität mit anderen JTAG-Implementierungen frei bleiben&lt;br /&gt;
* Pin 7 war in der ersten Version des Atmel JTAG ICE als &#039;&#039;Vsupply&#039;&#039; bezeichnet und diente dort der Speisung des JTAG ICE aus der Zielhardware&lt;br /&gt;
* nSRST muss nicht zwingend an &#039;&#039;/RESET&#039;&#039; des AVR gelegt werden; wenn er fehlt,  kann das JTAG ICE eine schlafende CPU nicht wecken oder mit einem Controller arbeiten, dessen JTAG-Schnittstelle von der Software außer Betrieb genommen worden ist (Bit &#039;&#039;JTD&#039;&#039; im Register &#039;&#039;MCUCSR&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
AVR-JTAG lässt sich mit anderen JTAG-Implementierungen (oder weiteren AVRs) zu einer &#039;&#039;daisy chain&#039;&#039; verketten; dabei schiebt jeder AVR 4 Bits.&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
=== USB Anschluss auf Basis des FTDI FT2232 ===&lt;br /&gt;
Diese Adapter funktionieren mit Opensource-Tools wie OpenOCD (ARM-Debugger), xc3sprog (Xilinx Programmer), urjtag (generisches JTAG-Tool), gojtag, etc. Manchmal sind leichte Anpassungen des Source nötig. Bei einigen Adaptern ist auch die serielle Schnittstelle (3.3V-Level) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
* [http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/usbjtag/usbjtag.html USB to JTAG Interface] von Hubert Högl, Schaltplan&lt;br /&gt;
* [http://www.embedded-projects.net/index.php?page_id=175 USB JTAG Interface für usbprog und OpenOCD] von Benedikt Sauter (Zurzeit gibt es Bausätze für 22€. Der Adapter ist ein Universaladapter der mit verschiedenen Firmwares zu verschiedenen Geräte werden kann. Pläne, Quelltexte usw... Open Source!!!)&lt;br /&gt;
* [http://www.amontec.com/ Amontec] JTAGkey, JTAGkey-Tiny - Firma Amontec existiert nicht mehr, JTAGbox von Bitrelle ist abwärtskompatibel zu JTAGkey-2, etc.&lt;br /&gt;
* [http://section5.ch/icebear ICEbear] ICEbear (Plus|Light) JTAG adapter, spezielle Unterstützung für Flashen/Debuggen von Analog Devices Blackfin-Plattformen.&lt;br /&gt;
* [http://www.luminarymicro.com/products/ekk-lm3s811_evaluation_kit.html EKK-LM3S811] von LMI. Auf dem Testboard ist ein &amp;quot;on-board&amp;quot; JTAG-Adapter, der zu Ansteuerung des LM3S811 auf dem Board genutzt wird, aber auch an externe Controller angeschlossen werden kann. (Alle LMI Testboards verfügen über den JTAG Ein- und Ausgang.)&lt;br /&gt;
*[http://www.segger.com/cms/jlink.html SEGGER J-Link] sehr professioneller schneller JTAG Adapter. Für nichtkommerziellen Einsatz gibt es den J-Link Edu schon für 50€.&lt;br /&gt;
* [http://www.olimex.com/dev/arm-usb-ocd.html ARM-USB-OCD] von Olimex&lt;br /&gt;
* [http://www.signalyzer.com/ Xverve Signalyzer Tool]&lt;br /&gt;
* [http://bitrelle.wordpress.com/jtagbox/ Bitrelle JTAGbox] läuft mit OpenOCD, galvanisch getrennt&lt;br /&gt;
&lt;br /&gt;
=== Parallelport-Anschluss (Wiggler und Wiggler-&amp;quot;kompatibel&amp;quot;) ===&lt;br /&gt;
* [http://www.macraigor.com/hwproducts.htm Macraigor] Original Wiggler&lt;br /&gt;
* [http://www.olimex.com/dev/arm-jtag.html Olimex ARM-JTAG] Wiggler-Nachbau&lt;br /&gt;
* [http://www.k9spud.com/jtag/ k9spud Wiggler-Schaltplan]&lt;br /&gt;
* [http://web.archive.org/web/20060411074457/http://bbs.circuitcellar.com/phpBB2/viewtopic.php?p=10059&amp;amp; bigakis Wiggler-Schaltplan] (74HC244 Levelshifter, BC547 Transistor zum Invertieren)(&#039;&#039;&#039;Webarchiv-Link&#039;&#039;&#039;,Orginal gelöscht)&lt;br /&gt;
* [http://wiki.openwrt.org/doc/hardware/port.jtag.cables Wiggler Schaltplan] von OpenWRT (ebenfalls mit 74HC244). &lt;br /&gt;
* [http://www.st.com/stonline/products/literature/um/12322.pdf ST FlashLink JTAG Programming Cable] STM Application-Note&lt;br /&gt;
&lt;br /&gt;
Man findet einige Schaltpläne für Wiggler-Nachbauten im Netz. Nicht alle sind identisch. Der original Schaltplan von Macraigor ist meines (M. Thomas) Wissens nicht verfügbar. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vollständige&amp;quot; Belegung des Wiggler-Clones von Olimex (Quelle: sparkfun-Forum)&lt;br /&gt;
* DB25.2 → INVERSE → JTAG.15 (NTRST) (mthomas: hier ist wohl nSRST gemeint)&lt;br /&gt;
* DB25.3 → JTAG.7 (TMS)&lt;br /&gt;
* DB25.4 → JTAG.9 (TCK)&lt;br /&gt;
* DB25.5 → JTAG.5 (TDI)&lt;br /&gt;
* DB25.6 → JTAG.3 (TRST)&lt;br /&gt;
* DB25.9 → VCC for the Level shifter i.e. JTAG enable/disable&lt;br /&gt;
* DB25.11 ← JTAG.13 (TDO)&lt;br /&gt;
* DB25.13 ← Target VCC sense (only when JTAG is enabled i.e. DB26.9 = 1) &lt;br /&gt;
&lt;br /&gt;
DB25.18, DB25.19, DB25.20, DB25.21, DB25.22, DB25.23, DB25.24, DB25.25 werden mit GND verbunden.&lt;br /&gt;
&lt;br /&gt;
Soll das Wiggler-Interface auch mit der Software ocdremote von Macraigor genutzt werden, ist eine Brücke zwischen zwischen DB25.8 und DB25.15 einzubauen. ocdremote ab (ca.) Version 2.06 erkennt daran das original Wiggler und auch einen mit der Brücke ausgestattenen Nachbau. Nutzt man zur Ansteuerung andere Software (z.&amp;amp;nbsp;B. OpenOCD oder H-JTAG) wird diese Verbindung nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
Man beachte die Beschaltung von SRST und TRST: &lt;br /&gt;
&lt;br /&gt;
Üblicherweise wird Pin DB25.2 des Druckeranschlusses über eine Inverterschaltung (NPN Transistor) mit dem Reset-Pin des ARM-Controllers verbunden (&#039;&#039;&#039;nSRST&#039;&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
Pin DB25.6 des Druckeranschlusses wird über Levelshifter direkt mit dem &#039;&#039;&#039;TRST&#039;&#039;&#039;-Pin des Controllers verbunden. In manchen Schaltplänen findet man auch für TRST einen Inverter, aber dies scheint eher unüblich. &lt;br /&gt;
&lt;br /&gt;
Bei den sonstigen Pinbelegungen herrscht weitestgehend Einigkeit. Man muss lediglich Levelshifter ([[Pegelwandler]]) zwischenschalten, um zwischen den 5V des Druckeranschlusses und der Spannung des Controllers (üblicherweise 3,3V) zu &amp;quot;übersetzen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Allein ein 74HC244 als Levelshifter, wie in vielen Schaltungen verwendet, ist nicht ideal. Der Baustein wird dabei mit 3,3V aus der Zielschaltung betrieben und die Anpassung an die nominell 5V vom Druckerport an die 3,3V des HC244 erfolgt entweder durch Spannungsteiler oder durch Strombegrenzungswiderstände und die internen Überspannungsschutzdioden. Das Ausgangssignal TDO zurück zum Druckeranschluss ist maximal 3,3V. Beides nicht optimal aber es funktioniert zumindest meistens. Aufwändigere Schaltungen, wie z.&amp;amp;nbsp;B. der Olimex Wiggler-Nachbau (&amp;quot;ARM-JTAG&amp;quot;), nutzen eine Kombination aus einem 74AC244 und einem 74LCX244.&lt;br /&gt;
&lt;br /&gt;
=== sonstige ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ARM-JTAG-COOCOX/ ARM-JTAG-COOCOX], CoLinkEX Nachbau von Olimex, unterstützt JTAG sowie SWD&lt;br /&gt;
** [http://www.coocox.org/colinkEx.htm unterstützte uC]&lt;br /&gt;
** unterstütze IDEs: [http://www.keil.com/arm/mdk.asp Keil MDK-ARM 4.03] oder neuer, [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR Embedded Workbench 5.xx] oder neuer sowie die [http://www.coocox.org/CooCox_CoIDE.htm CooCox CoIDE]&lt;br /&gt;
&lt;br /&gt;
* Abatron BDI2000&lt;br /&gt;
* [http://www.amontec.com/index.shtml Amontec] JTAG Accelerator, Chameleon POD&lt;br /&gt;
* AZ-Electronics&lt;br /&gt;
* JtagConnection&lt;br /&gt;
* [http://www.lauterbach.de/mindex.html Lauterbach] Trace&lt;br /&gt;
* Macraigor Systems LLS&lt;br /&gt;
* Peedi&lt;br /&gt;
* Rowley Associates CrossConnect&lt;br /&gt;
&lt;br /&gt;
=== Anschlussbelegung ===&lt;br /&gt;
&lt;br /&gt;
Auf Evaluation-Boards verschiedener Hersteller (z.&amp;amp;nbsp;B. Atmel, IAR, Keil, Olimex) ist die JTAG-Schnittstelle über einen 20-poligen Wannenstecker (2·10, Raster 2,54mm) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 NC  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 nTRST&lt;br /&gt;
 | 4 GND &lt;br /&gt;
 |-&lt;br /&gt;
 | 5 TDI&lt;br /&gt;
 | 6 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 TMS&lt;br /&gt;
 | 8 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 TCK&lt;br /&gt;
 | 10 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 11 GND&lt;br /&gt;
 | 12 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 13 TDO&lt;br /&gt;
 | 14 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 15 nRESET/nSRST&lt;br /&gt;
 | 16 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 17 NC&lt;br /&gt;
 | 18 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 19 NC&lt;br /&gt;
 | 20 GND&lt;br /&gt;
 |-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Neuerdings propagiert ARM eine sehr kompakte Variante mit 2·5 Pins in einem 1,27 mm Raster:&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 RTCK&lt;br /&gt;
 | 8 TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GND&lt;br /&gt;
 | 10 nRESET/nSRST&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Daneben existiert noch eine weniger gebräuchliche aber dokumentierte Variante mit 14 Polen (2·7). &lt;br /&gt;
&lt;br /&gt;
Bei fertigen Geräten, für die keine Schaltpläne vorliegen, muss man sich die herstellerspezifische Anschlussbelegung anhand des Datenblatts des verwendeten Controllers und mittels Messgerät selbst ermitteln.&lt;br /&gt;
&lt;br /&gt;
=== Cortex Debug Connectors von ARM ===&lt;br /&gt;
&lt;br /&gt;
[http://infocenter.arm.com/help/topic/com.arm.doc.faqs/attached/13634/cortex_debug_connectors.pdf In diesem PDF Dokument hat ARM die Anschlussbelegung für Cortex-Prozessoren definiert.]&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 SWDIO/TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 SWDCLK/TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 SWO/TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 Key (kein Pin)&lt;br /&gt;
 | 8 NC/TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GNDDetect&lt;br /&gt;
 | 10 nRESET&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Der 10-polige JTAG Stecker von mmvisual (ARM, Cortex, Seriell kombiniert) ===&lt;br /&gt;
mmvisual hat mit dieser Steckerbelegung die Standard JTAG Schnittstelle erweitert:&lt;br /&gt;
&lt;br /&gt;
Ich habe einen 10-poligen Debug-Stecker entworfen, der alle Varianten sowie einen [[UART]]-Anschluss enthält und die Pins optimal angeordnet sind. Mit diesem Stecker können ARM7/9 und Cortex CPUs programmiert werden. An allen JTAG-Steckervarianten fehlen leider Funktionen, bzw. die Pins waren nicht optimal angeordnet. Daher habe ich den &amp;quot;perfekten&amp;quot; Stecker designt der viele Funktionen beinhaltet.&lt;br /&gt;
&lt;br /&gt;
[[bild:jtag-debug-port10.png]]&lt;br /&gt;
&lt;br /&gt;
==== Die Funktionen ====&lt;br /&gt;
* JTAG&lt;br /&gt;
* SWD&lt;br /&gt;
* Debug-UART-Anschluss (verbunden mit einem freien UART vom [[STM32]]) (alternativ ein MAX232 Chip dazwischen schalten)&lt;br /&gt;
* Weniger Platzbedarf auf der Platine (Standard-JTAG 20 Polig)&lt;br /&gt;
* Über 4-Poligen Würfel kann der UART benutzt werden (Pin 7/8/9/10)&lt;br /&gt;
* Es kann ein Jumper gesteckt werden für eine Option (Pin 9/10) ohne dass es sich mit dem RS232 Chip beißt (sofern er eingebaut wurde)&lt;br /&gt;
* Über einen 5-Poligen einreihigen Stecker kann SWD verwendet werden (Pin 1/3/5/7/9)&lt;br /&gt;
* den ganzen Stecker braucht es nur, wenn man den herkömmlichen JTAG nutzen möchte.&lt;br /&gt;
* Kurzschlussschutz, da GND und +3V3 nicht gegenüber liegen&lt;br /&gt;
&lt;br /&gt;
In all meinen Projekten verwende ich nur noch diese Anordnung, denn sie ist einfach praktisch. Alles drauf und die Pins sind perfekt angeordnet für jede Art der Anwendung.&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist der UART 1 ([[STM32]]) benutzt mit den Pins PA9/PA10. Wenn die Boot-Pins auf einen separaten Jumper-Block gelegt werden, so könnte auch mit der ST Software ein Flash Update durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Hier die Erklärung warum es die BOOT-Pins nicht auf dem JTAG-Stecker benötigt. Ich habe mir einen eigenen Bootloader geschrieben, der kommt ohne das&lt;br /&gt;
Interne Boot-ROM (und ohne die BOOT-Pins) aus. Ich habe den in die ersten 8KB Flash programmiert.&lt;br /&gt;
* Das PC-Programm senden über den UART den Befehl &amp;quot;GoTo Bootloader&amp;quot;, damit wird mein Bootloader angesprungen.&lt;br /&gt;
* Dann sendet das PC Programm die Update-Daten.&lt;br /&gt;
* Wenn fertig, dann geht es zurück in die Applikation.&lt;br /&gt;
* Der Bootloader ist immer beim Einschalten des Boards aktiv. Sobald eine Tastenkombination gedrückt wird, bleibt er &amp;quot;hängen&amp;quot; und irgend welche LEDs blinken. Also wenn das Flash &amp;quot;Zerschossen&amp;quot; sein sollte kann man mit einem Restart/Tasten den Bootloader aktivieren und erneut den Update ausführen.&lt;br /&gt;
* Der ST eigene Bootloader hat mir nicht gefallen, weil da keine LED&#039;s Blinken und dem User sagen, &amp;quot;Hallo ich lebe und bin im Bootloader&amp;quot;.&lt;br /&gt;
* Wenn die Tasten beim Einschalten nicht gedrückt werden, dann springt der Bootloader in die Applikation&lt;br /&gt;
* Der Bootloader kann jeden beliebigen UART nutzen.&lt;br /&gt;
&lt;br /&gt;
==== Die Adapterplatine ====&lt;br /&gt;
Mit der Adapterplatine kann von dem 10-poligen Stecker auf einen 20-poligen Standard JTAG Stecker verbunden werden. Zusätzlich ist hier ein TTL/V24 Wandler integriert um die UART Signale auf V24 um zu setzen. Hier kann der Schaltplan/Layout geladen werden: [[Datei:10-Pol-JTAG.zip]]&lt;br /&gt;
Die Platine ist 33×19mm klein.&lt;br /&gt;
&lt;br /&gt;
=== 10-pin JTAG im 20&#039;tel-Zoll Raster ===&lt;br /&gt;
&lt;br /&gt;
* Forumsbeitrag [http://www.mikrocontroller.net/topic/188659#1836129 &amp;quot;neuer JTAG-Stecker für ARM&amp;quot;]&lt;br /&gt;
* [http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm Keil ULINK2] (und Pinouts anderer JTAG-Stecker)&lt;br /&gt;
&lt;br /&gt;
== MSP430 JTAG ==&lt;br /&gt;
&lt;br /&gt;
Anschluß an Parallelport: &lt;br /&gt;
* [http://elmicro.com/files/olimex/msp430-jtag-d.pdf Olimex MSP430 JTAG (PDF)] bzw. ([http://www.olimex.com/dev/images/msp430-jtag-d-sch.gif (GIF)]). Siehe auch Diskussion im [http://www.mikrocontroller.net/topic/57208#442620 Forum].&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/90754#776070 Forumsbeitrag] mit Anhang eines chinesischen? Schaltplans (PDF)&lt;br /&gt;
&lt;br /&gt;
Anschluß an USB/Seriell:&lt;br /&gt;
* [http://goodfet.sourceforge.net/ GoodFET] von Travis Goodspeed. The GoodFET is an open source tool for programming microcontrollers and memories by [[SPI]], [[I2C]], JTAG ([[MSP430]], [[ARM]]), and a slew of vendor-proprietary protocols. (Stub für [http://events.ccc.de/congress/2009/Fahrplan/events/3490.en.html 26C3 Vortrag])&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Für Xilinx&lt;br /&gt;
** [http://www.freewebs.com/lykos1986/cpldprogrammer.htm Xilinx JTAG programmer] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.embedded-projects.net/index.php?page_id=157 Xilinx JTAG XSVF Player mit USBprog] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter Xilinx Platform Cable I Nachbau] - Nachbau des Originalem Xilinx Platform Cable I (DLC9)&lt;br /&gt;
** [http://warmcat.com/milksop/cheaptag.html Cheaptag] - Xilinx Parallel Jtag programming cable&lt;br /&gt;
** [http://embdev.net/topic/139121#new XSVF Player FTDI Bitbang] - XSVF Player with FTDI Bitbang mode&lt;br /&gt;
** [https://play.google.com/store/apps/details?id=com.wesche.xsvf XSVF Player FTDI Bitbang for Android] - XSVF Player with FTDI Bitbang mode for Android&lt;br /&gt;
&lt;br /&gt;
* Für Altera&lt;br /&gt;
** [http://translate.google.com/translate?js=n&amp;amp;prev=_t&amp;amp;hl=en&amp;amp;ie=UTF-8&amp;amp;layout=2&amp;amp;eotf=1&amp;amp;sl=auto&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Fmarsohod.org%2Findex.php%2Fourblog%2F11-blog%2F163-marsblaster Marsblaster] für Altera FPGA, serieller Port&lt;br /&gt;
** [http://www.altera.com/literature/ug/ug_bbii.pdf ALTERA ByteBlaster]&lt;br /&gt;
** [http://www.entner-electronics.com/tl/index.php/eeblaster.html EEBlaster], sehr günstig, kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
** [http://www.pyroelectro.com/tutorials/byteblaster/index.html Build A ByteBlaster] bei www.pyroelectro.com&lt;br /&gt;
** [http://www.ixo.de/info/usb_jtag/ USB-JTAG-Adapter], kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
&lt;br /&gt;
* ColdFire BDM Pod&lt;br /&gt;
** [http://forums.freescale.com/t5/68K-ColdFire-reg-Microprocessors/TBLCF-open-source-debugging-cable/m-p/7543 TBLCF open source debugging cable]&lt;br /&gt;
** [http://www.rockbox.org/wiki/IriverBDM IriverBDM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- VERALTETE LINKS - PRODUKTE WERDEN DORT NICHT GEFUNDEN&lt;br /&gt;
* FCPU-X Platform Cable USB JTAG cable&lt;br /&gt;
** Bezugsquelle (DE): [http://www.vht-impex-shop.de/product_info.php?info=p786_HW-USB-platform-cable--FCPU-X-platform-cable-similar-to-HW-USB-Kabel-for-Xilinx-evaluation-boards-etc-.html&amp;amp;XTCsid=e613a7119493deac52e83e9038ce131a http://www.vht-impex-shop.de]&lt;br /&gt;
** Bezugsquelle (US): [http://www.celeritous.com/estore/index.php?main_page=product_info&amp;amp;cPath=1&amp;amp;products_id=129 http://www.celeritous.com] &lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Universal JTAG Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Versaloon ===&lt;br /&gt;
&lt;br /&gt;
[http://www.versaloon.com/ Versaloon] is a full-opensource multi-functional platform based on generic USB_TO_XXX protocol, which can now support more than 10 kinds of interfaces including [[ISP]], [[JTAG]], SWD, [[SPI]], [[IIC]] and so on. Programming is supported for: &lt;br /&gt;
* STM8 support(SWIM)&lt;br /&gt;
* STM32 support(ISP/JTAG/SWD) siehe auch Forumbeitrag von Bingo [http://www.mikrocontroller.net/topic/202785]&lt;br /&gt;
* LPC1000 support(ISP/JTAG/SWD)&lt;br /&gt;
* LM3S support(JTAG/SWD)&lt;br /&gt;
* AT91SAM3 support(JTAG/SWD)&lt;br /&gt;
* AT89S5X support(ISP)&lt;br /&gt;
* PSOC1 support(ISSP)&lt;br /&gt;
* MSP430(without TEST) support(JTAG)&lt;br /&gt;
* C8051F support(C2/JTAG)&lt;br /&gt;
* AVR8 support(ISP/JTAG)&lt;br /&gt;
* LPC900 support(ICP)&lt;br /&gt;
* HCS08 support(BDM)&lt;br /&gt;
* HCS12(X) support(BDM)&lt;br /&gt;
* SVF support(JTAG)&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [[AVR-Studio]] (Windows)&lt;br /&gt;
* [[GDB]] in Verbindung mit [http://avarice.sourceforge.net/ AVaRICE] und AVR JTAGICE kompatibler Hardware. (Linux)&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [[GDB]] bzw. Insight und auf die ARM JTAG Hardware abgestimmte GDB-Server (OCDRemote, [http://openocd.berlios.de/ OpenOCD], BDI2000, Peedi)&lt;br /&gt;
* [http://www.hjtag.com/ H-JTAG] und RDI-kompatible Debugger (SDT2.51, ADS1.2, RealView and IAR)&lt;br /&gt;
* Herstellerspezifische Software z.&amp;amp;nbsp;B. von Lauterbach&lt;br /&gt;
* Komplette Open Source Toolchain [https://bitrelle.files.wordpress.com/2012/05/bitrelle_programming_eclipse.pdf Eclipse-GDB-OpenOCD], läuft auf Linux/Windows/Mac, unterstützt alle  Prozessortypen (zur Zeit 190), die von OpenOCD unterstützt werden&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Altera: Quartus Programmer (quartus_pgm)&lt;br /&gt;
* Lattice: ToDo... (Lattice setzt seit 2011 auf die JTAG-Funktionalität des FT2232 und benötigt daher keine speziellen USB-JTAG-Adapter mehr)&lt;br /&gt;
* Xilinx: Impact, xc3sprog, ...&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Tools ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.topjtag.com TopJTAG]: boundary-scan software for circuit debugging and flash programming.&lt;br /&gt;
* [http://www.ricreations.com/index.html Universal Scan]&lt;br /&gt;
* [http://urjtag.org UrJTAG]: Kommandozeilentool für Boundary Scan, FPGA und CPLD und Speicher lesen und schreiben u.v.a.m., Nachfolger von openwince JTAG Tools.&lt;br /&gt;
* [http://www.gojtag.com/ goJTAG]: graphisches Boundary-Scan-Tool zum manuellen Durchtesten von Verbindungen, besonders für Nicht-JTAG-Experten geeignet. Obwohl in Java geschrieben, funktioniert es nur unter Windows. Funktioniert im Prinzip mit allen FT2232(H) basierten Adaptern.&lt;br /&gt;
* [http://andreas-weschenfelder.de.vu FT2232 BoundaryScan Tool]: free boundary-scan software for flash programming [S29GL128N, S29GL256N, S29GL512N, M25PX16, M25PX32, M25PX64, etc ].&lt;br /&gt;
&amp;lt;!-- link tot 20100521 * [http://www.rsn-tech.demon.co.uk/pjtag/pjtag.html Pesonal JTAG]: halbfertiges Hobbyprojekt, ist bissel buggy, aber kleine Sachen gehen damit. --&amp;gt;&lt;br /&gt;
* [http://www.blunk-electronic.de/products.html]: boundary scan test system M-1 for board and system testing, runs on Linux, open source, no licensing ! Read more on http://www.blunk-electronic.de/products.html&lt;br /&gt;
&lt;br /&gt;
= Weblinks =&lt;br /&gt;
&lt;br /&gt;
*Debugging the Linux kernel with JTAG] von Alexander Sirotkin [http://www.embedded.com/design/operating-systems/4207333/Debugging-the-Linux-kernel-with-JTAG] (LPC3250 mit FemtoLinux, OpenOCD)&lt;br /&gt;
*[http://hri.sourceforge.net/tools/jtag_faq_org.html JTAG FAQ] auf sourceforge.net&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR]]&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:FPGA und Co]]&lt;br /&gt;
[[Kategorie:Datenübertragung]]&lt;/div&gt;</summary>
		<author><name>Ralfiboy</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94754</id>
		<title>JTAG</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94754"/>
		<updated>2017-01-05T18:15:07Z</updated>

		<summary type="html">&lt;p&gt;Ralfiboy: /* USB Anschluss auf Basis des FTDI FT2232 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;J&#039;&#039;&#039;oint &#039;&#039;&#039;T&#039;&#039;&#039;est &#039;&#039;&#039;A&#039;&#039;&#039;ction &#039;&#039;&#039;G&#039;&#039;&#039;roup, entwickelte den Standard IEEE 1149.1. Das JTAG-Protokoll ermöglicht das Programmieren, Debuggen und Testen von ICs, [[Prozessor]]en und [[FPGA]]s direkt in der Schaltung.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2737 AVR JTAGICE] (gelegentlich auch &#039;&#039;JTAGICE mkI&#039;&#039; genannt) von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3353 AVR JTAGICE mkII] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=17213&amp;amp;category_id=163&amp;amp;family_id=682&amp;amp;subfamily_id=2138 AVR JTAGICE 3] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/tools/ATATMEL-ICE.aspx ATMEL-ICE] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3891 AVR Dragon] von Atmel.&lt;br /&gt;
** [http://www.atmel.com/dyn/resources/prod_documents/doc8112.pdf AVR077: Opto Isolated Emulation for the DebugWIRE] (auch für AVR JTAGICE mkII nützlich)&lt;br /&gt;
* [http://gandalf.arubi.uni-kl.de/avr_projects/evertool/index.html Evertool und Evertool light] von Martin Thomas. Evertool unterstützt JTAG analog zu AVR JTAGICE und [[ISP]] nach [[STK500]] Protokoll. Evertool light nur JTAG. &lt;br /&gt;
* [http://aquaticus.info/jtag JTAG for AVR processors] bei Aquaticus ROV. (Englisch)&lt;br /&gt;
* [http://www.olimex.com/dev/avr-jtag.html AVR-JTAG] und [http://www.olimex.com/dev/avr-usb-jtag.html AVR-USB-JTAG] von [http://www.olimex.com/dev/index.html Olimex] (kommerziell). Alternativer Lieferant ist der [http://elmicro.com/de/avrjtag.html Elektronikladen].&lt;br /&gt;
* [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/35 AVR-JTAG] und [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/52 AVR-USB-JTAG] von [http://www.gadgetPool.de gadgetPool] (kommerziell)&lt;br /&gt;
* [http://www.floppyspongeonline.com/automation/isojtagisp/isojtagisp.php IsoJtagISP] und [http://www.floppyspongeonline.com/automation/isojtag/isojtag.php IsoJTAG] von Floppy Sponge Automation ([[USB]], optisch isoliert). Hier eine modifizierte Version von [http://www.madwizard.org/electronics/projects/avrjtag Madwizard].&lt;br /&gt;
* [http://www.ere.co.th/(gs5afz55q5idyyn0a1ibkl45)/default.aspx?RedirectPage=Products&amp;amp;RedirectPage1=ProductsDetail&amp;amp;ProductID=56 JTAGAVRU1] (AVR JTAGICE kompatibel, USB, 1.8-5.5V) (existiert wohl nicht mehr ?)&lt;br /&gt;
* [http://www.avrfreaks.net/index.php?module=Freaks%20Tools&amp;amp;func=viewItem&amp;amp;item_id=630 JTAGcable II] (AVR JTAGICE kompatibel, USB, 1.8-6 V)&lt;br /&gt;
* [http://www.miklobit.com/JTAG_TWICE.530+B6Jkw9Mw__.0.html MB-JTAG-TWICE] (AVR JTAGICE kompatibel, RS232, 2.7-5.5V, +ISP STK500v2) - Free update to version compatible with AVR JTAG MKII (coming soon)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Programmer und Debugger für USB (MKI) &lt;br /&gt;
* link tot 20100521 [http://www.paktek-shop.de/epages/61807596.sf/de_DE/?ObjectPath=/Shops/61807596/Categories/Produkte/AVR-Programmer]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pinout AVR-JTAG ===&lt;br /&gt;
&lt;br /&gt;
AVR benutzt einen 10poligen IDC-Stecker mit 2,54 mm Pinabstand und folgendem Pinout:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE mkII&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| (frei) || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| Vcc || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bemerkungen:&lt;br /&gt;
&lt;br /&gt;
* VTref &#039;&#039;muss&#039;&#039; beschaltet werden, von dieser Spannung werden die Pegelwandler des JTAG-ICE gespeist, und das ICE weigert sich zu arbeiten wenn keine Spannung anliegt&lt;br /&gt;
* nTRST wird vom JTAG ICE nicht benutzt, soll aber aus Kompatibilität mit anderen JTAG-Implementierungen frei bleiben&lt;br /&gt;
* Pin 7 war in der ersten Version des Atmel JTAG ICE als &#039;&#039;Vsupply&#039;&#039; bezeichnet und diente dort der Speisung des JTAG ICE aus der Zielhardware&lt;br /&gt;
* nSRST muss nicht zwingend an &#039;&#039;/RESET&#039;&#039; des AVR gelegt werden; wenn er fehlt,  kann das JTAG ICE eine schlafende CPU nicht wecken oder mit einem Controller arbeiten, dessen JTAG-Schnittstelle von der Software außer Betrieb genommen worden ist (Bit &#039;&#039;JTD&#039;&#039; im Register &#039;&#039;MCUCSR&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
AVR-JTAG lässt sich mit anderen JTAG-Implementierungen (oder weiteren AVRs) zu einer &#039;&#039;daisy chain&#039;&#039; verketten; dabei schiebt jeder AVR 4 Bits.&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
=== USB Anschluss auf Basis des FTDI FT2232 ===&lt;br /&gt;
Diese Adapter funktionieren mit Opensource-Tools wie OpenOCD (ARM-Debugger), xc3sprog (Xilinx Programmer), urjtag (generisches JTAG-Tool), gojtag, etc. Manchmal sind leichte Anpassungen des Source nötig. Bei einigen Adaptern ist auch die serielle Schnittstelle (3.3V-Level) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
* [http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/usbjtag/usbjtag.html USB to JTAG Interface] von Hubert Högl, Schaltplan&lt;br /&gt;
* [http://www.embedded-projects.net/index.php?page_id=175 USB JTAG Interface für usbprog und OpenOCD] von Benedikt Sauter (Zurzeit gibt es Bausätze für 22€. Der Adapter ist ein Universaladapter der mit verschiedenen Firmwares zu verschiedenen Geräte werden kann. Pläne, Quelltexte usw... Open Source!!!)&lt;br /&gt;
* [http://www.amontec.com/ Amontec] JTAGkey, JTAGkey-Tiny - Firma Amontec existiert nicht mehr, JTAGbox von Bitrelle ist abwärtskompatibel zu JTAGkey-2, etc.&lt;br /&gt;
* [http://section5.ch/icebear ICEbear] ICEbear (Plus|Light) JTAG adapter, spezielle Unterstützung für Flashen/Debuggen von Analog Devices Blackfin-Plattformen.&lt;br /&gt;
* [http://www.luminarymicro.com/products/ekk-lm3s811_evaluation_kit.html EKK-LM3S811] von LMI. Auf dem Testboard ist ein &amp;quot;on-board&amp;quot; JTAG-Adapter, der zu Ansteuerung des LM3S811 auf dem Board genutzt wird, aber auch an externe Controller angeschlossen werden kann. (Alle LMI Testboards verfügen über den JTAG Ein- und Ausgang.)&lt;br /&gt;
*[http://www.segger.com/cms/jlink.html SEGGER J-Link] sehr professioneller schneller JTAG Adapter. Für nichtkommerziellen Einsatz gibt es den J-Link Edu schon für 50€.&lt;br /&gt;
* [http://www.olimex.com/dev/arm-usb-ocd.html ARM-USB-OCD] von Olimex&lt;br /&gt;
* [http://www.signalyzer.com/ Xverve Signalyzer Tool]&lt;br /&gt;
* [http://bitrelle.wordpress.com/jtagbox/ Bitrelle JTAGbox] läuft mit OpenOCD, galvanisch getrennt&lt;br /&gt;
&lt;br /&gt;
=== Parallelport-Anschluss (Wiggler und Wiggler-&amp;quot;kompatibel&amp;quot;) ===&lt;br /&gt;
* [http://www.macraigor.com/hwproducts.htm Macraigor] Original Wiggler&lt;br /&gt;
* [http://www.olimex.com/dev/arm-jtag.html Olimex ARM-JTAG] Wiggler-Nachbau&lt;br /&gt;
* [http://www.k9spud.com/jtag/ k9spud Wiggler-Schaltplan]&lt;br /&gt;
* [http://web.archive.org/web/20060411074457/http://bbs.circuitcellar.com/phpBB2/viewtopic.php?p=10059&amp;amp; bigakis Wiggler-Schaltplan] (74HC244 Levelshifter, BC547 Transistor zum Invertieren)(&#039;&#039;&#039;Webarchiv-Link&#039;&#039;&#039;,Orginal gelöscht)&lt;br /&gt;
* [http://wiki.openwrt.org/doc/hardware/port.jtag.cables Wiggler Schaltplan] von OpenWRT (ebenfalls mit 74HC244). &lt;br /&gt;
* [http://www.st.com/stonline/products/literature/um/12322.pdf ST FlashLink JTAG Programming Cable] STM Application-Note&lt;br /&gt;
&lt;br /&gt;
Man findet einige Schaltpläne für Wiggler-Nachbauten im Netz. Nicht alle sind identisch. Der original Schaltplan von Macraigor ist meines (M. Thomas) Wissens nicht verfügbar. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vollständige&amp;quot; Belegung des Wiggler-Clones von Olimex (Quelle: sparkfun-Forum)&lt;br /&gt;
* DB25.2 → INVERSE → JTAG.15 (NTRST) (mthomas: hier ist wohl nSRST gemeint)&lt;br /&gt;
* DB25.3 → JTAG.7 (TMS)&lt;br /&gt;
* DB25.4 → JTAG.9 (TCK)&lt;br /&gt;
* DB25.5 → JTAG.5 (TDI)&lt;br /&gt;
* DB25.6 → JTAG.3 (TRST)&lt;br /&gt;
* DB25.9 → VCC for the Level shifter i.e. JTAG enable/disable&lt;br /&gt;
* DB25.11 ← JTAG.13 (TDO)&lt;br /&gt;
* DB25.13 ← Target VCC sense (only when JTAG is enabled i.e. DB26.9 = 1) &lt;br /&gt;
&lt;br /&gt;
DB25.18, DB25.19, DB25.20, DB25.21, DB25.22, DB25.23, DB25.24, DB25.25 werden mit GND verbunden.&lt;br /&gt;
&lt;br /&gt;
Soll das Wiggler-Interface auch mit der Software ocdremote von Macraigor genutzt werden, ist eine Brücke zwischen zwischen DB25.8 und DB25.15 einzubauen. ocdremote ab (ca.) Version 2.06 erkennt daran das original Wiggler und auch einen mit der Brücke ausgestattenen Nachbau. Nutzt man zur Ansteuerung andere Software (z.&amp;amp;nbsp;B. OpenOCD oder H-JTAG) wird diese Verbindung nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
Man beachte die Beschaltung von SRST und TRST: &lt;br /&gt;
&lt;br /&gt;
Üblicherweise wird Pin DB25.2 des Druckeranschlusses über eine Inverterschaltung (NPN Transistor) mit dem Reset-Pin des ARM-Controllers verbunden (&#039;&#039;&#039;nSRST&#039;&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
Pin DB25.6 des Druckeranschlusses wird über Levelshifter direkt mit dem &#039;&#039;&#039;TRST&#039;&#039;&#039;-Pin des Controllers verbunden. In manchen Schaltplänen findet man auch für TRST einen Inverter, aber dies scheint eher unüblich. &lt;br /&gt;
&lt;br /&gt;
Bei den sonstigen Pinbelegungen herrscht weitestgehend Einigkeit. Man muss lediglich Levelshifter ([[Pegelwandler]]) zwischenschalten, um zwischen den 5V des Druckeranschlusses und der Spannung des Controllers (üblicherweise 3,3V) zu &amp;quot;übersetzen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Allein ein 74HC244 als Levelshifter, wie in vielen Schaltungen verwendet, ist nicht ideal. Der Baustein wird dabei mit 3,3V aus der Zielschaltung betrieben und die Anpassung an die nominell 5V vom Druckerport an die 3,3V des HC244 erfolgt entweder durch Spannungsteiler oder durch Strombegrenzungswiderstände und die internen Überspannungsschutzdioden. Das Ausgangssignal TDO zurück zum Druckeranschluss ist maximal 3,3V. Beides nicht optimal aber es funktioniert zumindest meistens. Aufwändigere Schaltungen, wie z.&amp;amp;nbsp;B. der Olimex Wiggler-Nachbau (&amp;quot;ARM-JTAG&amp;quot;), nutzen eine Kombination aus einem 74AC244 und einem 74LCX244.&lt;br /&gt;
&lt;br /&gt;
=== sonstige ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ARM-JTAG-COOCOX/ ARM-JTAG-COOCOX], CoLinkEX Nachbau von Olimex, unterstützt JTAG sowie SWD&lt;br /&gt;
** [http://www.coocox.org/colinkEx.htm unterstützte uC]&lt;br /&gt;
** unterstütze IDEs: [http://www.keil.com/arm/mdk.asp Keil MDK-ARM 4.03] oder neuer, [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR Embedded Workbench 5.xx] oder neuer sowie die [http://www.coocox.org/CooCox_CoIDE.htm CooCox CoIDE]&lt;br /&gt;
&lt;br /&gt;
* Abatron BDI2000&lt;br /&gt;
* [http://www.amontec.com/index.shtml Amontec] JTAG Accelerator, Chameleon POD&lt;br /&gt;
* AZ-Electronics&lt;br /&gt;
* JtagConnection&lt;br /&gt;
* [http://www.lauterbach.de/mindex.html Lauterbach] Trace&lt;br /&gt;
* Macraigor Systems LLS&lt;br /&gt;
* Peedi&lt;br /&gt;
* Rowley Associates CrossConnect&lt;br /&gt;
&lt;br /&gt;
=== Anschlussbelegung ===&lt;br /&gt;
&lt;br /&gt;
Auf Evaluation-Boards verschiedener Hersteller (z.&amp;amp;nbsp;B. Atmel, IAR, Keil, Olimex) ist die JTAG-Schnittstelle über einen 20-poligen Wannenstecker (2·10, Raster 2,54mm) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 NC  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 nTRST&lt;br /&gt;
 | 4 GND &lt;br /&gt;
 |-&lt;br /&gt;
 | 5 TDI&lt;br /&gt;
 | 6 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 TMS&lt;br /&gt;
 | 8 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 TCK&lt;br /&gt;
 | 10 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 11 GND&lt;br /&gt;
 | 12 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 13 TDO&lt;br /&gt;
 | 14 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 15 nRESET/nSRST&lt;br /&gt;
 | 16 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 17 NC&lt;br /&gt;
 | 18 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 19 NC&lt;br /&gt;
 | 20 GND&lt;br /&gt;
 |-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Neuerdings propagiert ARM eine sehr kompakte Variante mit 2·5 Pins in einem 1,27 mm Raster:&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 RTCK&lt;br /&gt;
 | 8 TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GND&lt;br /&gt;
 | 10 nRESET/nSRST&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Daneben existiert noch eine weniger gebräuchliche aber dokumentierte Variante mit 14 Polen (2·7). &lt;br /&gt;
&lt;br /&gt;
Bei fertigen Geräten, für die keine Schaltpläne vorliegen, muss man sich die herstellerspezifische Anschlussbelegung anhand des Datenblatts des verwendeten Controllers und mittels Messgerät selbst ermitteln.&lt;br /&gt;
&lt;br /&gt;
=== Cortex Debug Connectors von ARM ===&lt;br /&gt;
&lt;br /&gt;
[http://infocenter.arm.com/help/topic/com.arm.doc.faqs/attached/13634/cortex_debug_connectors.pdf In diesem PDF Dokument hat ARM die Anschlussbelegung für Cortex-Prozessoren definiert.]&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 SWDIO/TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 SWDCLK/TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 SWO/TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 Key (kein Pin)&lt;br /&gt;
 | 8 NC/TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GNDDetect&lt;br /&gt;
 | 10 nRESET&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Der 10-polige JTAG Stecker von mmvisual (ARM, Cortex, Seriell kombiniert) ===&lt;br /&gt;
mmvisual hat mit dieser Steckerbelegung die Standard JTAG Schnittstelle erweitert:&lt;br /&gt;
&lt;br /&gt;
Ich habe einen 10-poligen Debug-Stecker entworfen, der alle Varianten sowie einen [[UART]]-Anschluss enthält und die Pins optimal angeordnet sind. Mit diesem Stecker können ARM7/9 und Cortex CPUs programmiert werden. An allen JTAG-Steckervarianten fehlen leider Funktionen, bzw. die Pins waren nicht optimal angeordnet. Daher habe ich den &amp;quot;perfekten&amp;quot; Stecker designt der viele Funktionen beinhaltet.&lt;br /&gt;
&lt;br /&gt;
[[bild:jtag-debug-port10.png]]&lt;br /&gt;
&lt;br /&gt;
==== Die Funktionen ====&lt;br /&gt;
* JTAG&lt;br /&gt;
* SWD&lt;br /&gt;
* Debug-UART-Anschluss (verbunden mit einem freien UART vom [[STM32]]) (alternativ ein MAX232 Chip dazwischen schalten)&lt;br /&gt;
* Weniger Platzbedarf auf der Platine (Standard-JTAG 20 Polig)&lt;br /&gt;
* Über 4-Poligen Würfel kann der UART benutzt werden (Pin 7/8/9/10)&lt;br /&gt;
* Es kann ein Jumper gesteckt werden für eine Option (Pin 9/10) ohne dass es sich mit dem RS232 Chip beißt (sofern er eingebaut wurde)&lt;br /&gt;
* Über einen 5-Poligen einreihigen Stecker kann SWD verwendet werden (Pin 1/3/5/7/9)&lt;br /&gt;
* den ganzen Stecker braucht es nur, wenn man den herkömmlichen JTAG nutzen möchte.&lt;br /&gt;
* Kurzschlussschutz, da GND und +3V3 nicht gegenüber liegen&lt;br /&gt;
&lt;br /&gt;
In all meinen Projekten verwende ich nur noch diese Anordnung, denn sie ist einfach praktisch. Alles drauf und die Pins sind perfekt angeordnet für jede Art der Anwendung.&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist der UART 1 ([[STM32]]) benutzt mit den Pins PA9/PA10. Wenn die Boot-Pins auf einen separaten Jumper-Block gelegt werden, so könnte auch mit der ST Software ein Flash Update durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Hier die Erklärung warum es die BOOT-Pins nicht auf dem JTAG-Stecker benötigt. Ich habe mir einen eigenen Bootloader geschrieben, der kommt ohne das&lt;br /&gt;
Interne Boot-ROM (und ohne die BOOT-Pins) aus. Ich habe den in die ersten 8KB Flash programmiert.&lt;br /&gt;
* Das PC-Programm senden über den UART den Befehl &amp;quot;GoTo Bootloader&amp;quot;, damit wird mein Bootloader angesprungen.&lt;br /&gt;
* Dann sendet das PC Programm die Update-Daten.&lt;br /&gt;
* Wenn fertig, dann geht es zurück in die Applikation.&lt;br /&gt;
* Der Bootloader ist immer beim Einschalten des Boards aktiv. Sobald eine Tastenkombination gedrückt wird, bleibt er &amp;quot;hängen&amp;quot; und irgend welche LEDs blinken. Also wenn das Flash &amp;quot;Zerschossen&amp;quot; sein sollte kann man mit einem Restart/Tasten den Bootloader aktivieren und erneut den Update ausführen.&lt;br /&gt;
* Der ST eigene Bootloader hat mir nicht gefallen, weil da keine LED&#039;s Blinken und dem User sagen, &amp;quot;Hallo ich lebe und bin im Bootloader&amp;quot;.&lt;br /&gt;
* Wenn die Tasten beim Einschalten nicht gedrückt werden, dann springt der Bootloader in die Applikation&lt;br /&gt;
* Der Bootloader kann jeden beliebigen UART nutzen.&lt;br /&gt;
&lt;br /&gt;
==== Die Adapterplatine ====&lt;br /&gt;
Mit der Adapterplatine kann von dem 10-poligen Stecker auf einen 20-poligen Standard JTAG Stecker verbunden werden. Zusätzlich ist hier ein TTL/V24 Wandler integriert um die UART Signale auf V24 um zu setzen. Hier kann der Schaltplan/Layout geladen werden: [[Datei:10-Pol-JTAG.zip]]&lt;br /&gt;
Die Platine ist 33×19mm klein.&lt;br /&gt;
&lt;br /&gt;
=== 10-pin JTAG im 20&#039;tel-Zoll Raster ===&lt;br /&gt;
&lt;br /&gt;
* Forumsbeitrag [http://www.mikrocontroller.net/topic/188659#1836129 &amp;quot;neuer JTAG-Stecker für ARM&amp;quot;]&lt;br /&gt;
* [http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm Keil ULINK2] (und Pinouts anderer JTAG-Stecker)&lt;br /&gt;
&lt;br /&gt;
== MSP430 JTAG ==&lt;br /&gt;
&lt;br /&gt;
Anschluß an Parallelport: &lt;br /&gt;
* [http://elmicro.com/files/olimex/msp430-jtag-d.pdf Olimex MSP430 JTAG (PDF)] bzw. ([http://www.olimex.com/dev/images/msp430-jtag-d-sch.gif (GIF)]). Siehe auch Diskussion im [http://www.mikrocontroller.net/topic/57208#442620 Forum].&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/90754#776070 Forumsbeitrag] mit Anhang eines chinesischen? Schaltplans (PDF)&lt;br /&gt;
&lt;br /&gt;
Anschluß an USB/Seriell:&lt;br /&gt;
* [http://goodfet.sourceforge.net/ GoodFET] von Travis Goodspeed. The GoodFET is an open source tool for programming microcontrollers and memories by [[SPI]], [[I2C]], JTAG ([[MSP430]], [[ARM]]), and a slew of vendor-proprietary protocols. (Stub für [http://events.ccc.de/congress/2009/Fahrplan/events/3490.en.html 26C3 Vortrag])&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Für Xilinx&lt;br /&gt;
** [http://www.freewebs.com/lykos1986/cpldprogrammer.htm Xilinx JTAG programmer] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.embedded-projects.net/index.php?page_id=157 Xilinx JTAG XSVF Player mit USBprog] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter Xilinx Platform Cable I Nachbau] - Nachbau des Originalem Xilinx Platform Cable I (DLC9)&lt;br /&gt;
** [http://warmcat.com/milksop/cheaptag.html Cheaptag] - Xilinx Parallel Jtag programming cable&lt;br /&gt;
** [http://embdev.net/topic/139121#new XSVF Player FTDI Bitbang] - XSVF Player with FTDI Bitbang mode&lt;br /&gt;
** [https://play.google.com/store/apps/details?id=com.wesche.xsvf XSVF Player FTDI Bitbang for Android] - XSVF Player with FTDI Bitbang mode for Android&lt;br /&gt;
&lt;br /&gt;
* Für Altera&lt;br /&gt;
** [http://translate.google.com/translate?js=n&amp;amp;prev=_t&amp;amp;hl=en&amp;amp;ie=UTF-8&amp;amp;layout=2&amp;amp;eotf=1&amp;amp;sl=auto&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Fmarsohod.org%2Findex.php%2Fourblog%2F11-blog%2F163-marsblaster Marsblaster] für Altera FPGA, serieller Port&lt;br /&gt;
** [http://www.altera.com/literature/ug/ug_bbii.pdf ALTERA ByteBlaster]&lt;br /&gt;
** [http://www.entner-electronics.com/tl/index.php/eeblaster.html EEBlaster], sehr günstig, kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
** [http://www.pyroelectro.com/tutorials/byteblaster/index.html Build A ByteBlaster] bei www.pyroelectro.com&lt;br /&gt;
** [http://www.ixo.de/info/usb_jtag/ USB-JTAG-Adapter], kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
&lt;br /&gt;
* ColdFire BDM Pod&lt;br /&gt;
** [http://forums.freescale.com/t5/68K-ColdFire-reg-Microprocessors/TBLCF-open-source-debugging-cable/m-p/7543 TBLCF open source debugging cable]&lt;br /&gt;
** [http://www.rockbox.org/wiki/IriverBDM IriverBDM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- VERALTETE LINKS - PRODUKTE WERDEN DORT NICHT GEFUNDEN&lt;br /&gt;
* FCPU-X Platform Cable USB JTAG cable&lt;br /&gt;
** Bezugsquelle (DE): [http://www.vht-impex-shop.de/product_info.php?info=p786_HW-USB-platform-cable--FCPU-X-platform-cable-similar-to-HW-USB-Kabel-for-Xilinx-evaluation-boards-etc-.html&amp;amp;XTCsid=e613a7119493deac52e83e9038ce131a http://www.vht-impex-shop.de]&lt;br /&gt;
** Bezugsquelle (US): [http://www.celeritous.com/estore/index.php?main_page=product_info&amp;amp;cPath=1&amp;amp;products_id=129 http://www.celeritous.com] &lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Universal JTAG Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Versaloon ===&lt;br /&gt;
&lt;br /&gt;
[http://www.versaloon.com/ Versaloon] is a full-opensource multi-functional platform based on generic USB_TO_XXX protocol, which can now support more than 10 kinds of interfaces including [[ISP]], [[JTAG]], SWD, [[SPI]], [[IIC]] and so on. Programming is supported for: &lt;br /&gt;
* STM8 support(SWIM)&lt;br /&gt;
* STM32 support(ISP/JTAG/SWD) siehe auch Forumbeitrag von Bingo [http://www.mikrocontroller.net/topic/202785]&lt;br /&gt;
* LPC1000 support(ISP/JTAG/SWD)&lt;br /&gt;
* LM3S support(JTAG/SWD)&lt;br /&gt;
* AT91SAM3 support(JTAG/SWD)&lt;br /&gt;
* AT89S5X support(ISP)&lt;br /&gt;
* PSOC1 support(ISSP)&lt;br /&gt;
* MSP430(without TEST) support(JTAG)&lt;br /&gt;
* C8051F support(C2/JTAG)&lt;br /&gt;
* AVR8 support(ISP/JTAG)&lt;br /&gt;
* LPC900 support(ICP)&lt;br /&gt;
* HCS08 support(BDM)&lt;br /&gt;
* HCS12(X) support(BDM)&lt;br /&gt;
* SVF support(JTAG)&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [[AVR-Studio]] (Windows)&lt;br /&gt;
* [[GDB]] in Verbindung mit [http://avarice.sourceforge.net/ AVaRICE] und AVR JTAGICE kompatibler Hardware. (Linux)&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [[GDB]] bzw. Insight und auf die ARM JTAG Hardware abgestimmte GDB-Server (OCDRemote, [http://openocd.berlios.de/ OpenOCD], BDI2000, Peedi)&lt;br /&gt;
* [http://www.hjtag.com/ H-JTAG] und RDI-kompatible Debugger (SDT2.51, ADS1.2, RealView and IAR)&lt;br /&gt;
* Herstellerspezifische Software z.&amp;amp;nbsp;B. von Lauterbach&lt;br /&gt;
* Komplette Open Source Toolchain [https://bitrelle.files.wordpress.com/2012/05/bitrelle_programming_eclipse.pdf Eclipse-GDB-OpenOCD], läuft auf Linux/Windows/Mac&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Altera: Quartus Programmer (quartus_pgm)&lt;br /&gt;
* Lattice: ToDo... (Lattice setzt seit 2011 auf die JTAG-Funktionalität des FT2232 und benötigt daher keine speziellen USB-JTAG-Adapter mehr)&lt;br /&gt;
* Xilinx: Impact, xc3sprog, ...&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Tools ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.topjtag.com TopJTAG]: boundary-scan software for circuit debugging and flash programming.&lt;br /&gt;
* [http://www.ricreations.com/index.html Universal Scan]&lt;br /&gt;
* [http://urjtag.org UrJTAG]: Kommandozeilentool für Boundary Scan, FPGA und CPLD und Speicher lesen und schreiben u.v.a.m., Nachfolger von openwince JTAG Tools.&lt;br /&gt;
* [http://www.gojtag.com/ goJTAG]: graphisches Boundary-Scan-Tool zum manuellen Durchtesten von Verbindungen, besonders für Nicht-JTAG-Experten geeignet. Obwohl in Java geschrieben, funktioniert es nur unter Windows. Funktioniert im Prinzip mit allen FT2232(H) basierten Adaptern.&lt;br /&gt;
* [http://andreas-weschenfelder.de.vu FT2232 BoundaryScan Tool]: free boundary-scan software for flash programming [S29GL128N, S29GL256N, S29GL512N, M25PX16, M25PX32, M25PX64, etc ].&lt;br /&gt;
&amp;lt;!-- link tot 20100521 * [http://www.rsn-tech.demon.co.uk/pjtag/pjtag.html Pesonal JTAG]: halbfertiges Hobbyprojekt, ist bissel buggy, aber kleine Sachen gehen damit. --&amp;gt;&lt;br /&gt;
* [http://www.blunk-electronic.de/products.html]: boundary scan test system M-1 for board and system testing, runs on Linux, open source, no licensing ! Read more on http://www.blunk-electronic.de/products.html&lt;br /&gt;
&lt;br /&gt;
= Weblinks =&lt;br /&gt;
&lt;br /&gt;
*Debugging the Linux kernel with JTAG] von Alexander Sirotkin [http://www.embedded.com/design/operating-systems/4207333/Debugging-the-Linux-kernel-with-JTAG] (LPC3250 mit FemtoLinux, OpenOCD)&lt;br /&gt;
*[http://hri.sourceforge.net/tools/jtag_faq_org.html JTAG FAQ] auf sourceforge.net&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR]]&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:FPGA und Co]]&lt;br /&gt;
[[Kategorie:Datenübertragung]]&lt;/div&gt;</summary>
		<author><name>Ralfiboy</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94753</id>
		<title>JTAG</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94753"/>
		<updated>2017-01-05T18:03:06Z</updated>

		<summary type="html">&lt;p&gt;Ralfiboy: /* sonstige */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;J&#039;&#039;&#039;oint &#039;&#039;&#039;T&#039;&#039;&#039;est &#039;&#039;&#039;A&#039;&#039;&#039;ction &#039;&#039;&#039;G&#039;&#039;&#039;roup, entwickelte den Standard IEEE 1149.1. Das JTAG-Protokoll ermöglicht das Programmieren, Debuggen und Testen von ICs, [[Prozessor]]en und [[FPGA]]s direkt in der Schaltung.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2737 AVR JTAGICE] (gelegentlich auch &#039;&#039;JTAGICE mkI&#039;&#039; genannt) von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3353 AVR JTAGICE mkII] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=17213&amp;amp;category_id=163&amp;amp;family_id=682&amp;amp;subfamily_id=2138 AVR JTAGICE 3] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/tools/ATATMEL-ICE.aspx ATMEL-ICE] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3891 AVR Dragon] von Atmel.&lt;br /&gt;
** [http://www.atmel.com/dyn/resources/prod_documents/doc8112.pdf AVR077: Opto Isolated Emulation for the DebugWIRE] (auch für AVR JTAGICE mkII nützlich)&lt;br /&gt;
* [http://gandalf.arubi.uni-kl.de/avr_projects/evertool/index.html Evertool und Evertool light] von Martin Thomas. Evertool unterstützt JTAG analog zu AVR JTAGICE und [[ISP]] nach [[STK500]] Protokoll. Evertool light nur JTAG. &lt;br /&gt;
* [http://aquaticus.info/jtag JTAG for AVR processors] bei Aquaticus ROV. (Englisch)&lt;br /&gt;
* [http://www.olimex.com/dev/avr-jtag.html AVR-JTAG] und [http://www.olimex.com/dev/avr-usb-jtag.html AVR-USB-JTAG] von [http://www.olimex.com/dev/index.html Olimex] (kommerziell). Alternativer Lieferant ist der [http://elmicro.com/de/avrjtag.html Elektronikladen].&lt;br /&gt;
* [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/35 AVR-JTAG] und [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/52 AVR-USB-JTAG] von [http://www.gadgetPool.de gadgetPool] (kommerziell)&lt;br /&gt;
* [http://www.floppyspongeonline.com/automation/isojtagisp/isojtagisp.php IsoJtagISP] und [http://www.floppyspongeonline.com/automation/isojtag/isojtag.php IsoJTAG] von Floppy Sponge Automation ([[USB]], optisch isoliert). Hier eine modifizierte Version von [http://www.madwizard.org/electronics/projects/avrjtag Madwizard].&lt;br /&gt;
* [http://www.ere.co.th/(gs5afz55q5idyyn0a1ibkl45)/default.aspx?RedirectPage=Products&amp;amp;RedirectPage1=ProductsDetail&amp;amp;ProductID=56 JTAGAVRU1] (AVR JTAGICE kompatibel, USB, 1.8-5.5V) (existiert wohl nicht mehr ?)&lt;br /&gt;
* [http://www.avrfreaks.net/index.php?module=Freaks%20Tools&amp;amp;func=viewItem&amp;amp;item_id=630 JTAGcable II] (AVR JTAGICE kompatibel, USB, 1.8-6 V)&lt;br /&gt;
* [http://www.miklobit.com/JTAG_TWICE.530+B6Jkw9Mw__.0.html MB-JTAG-TWICE] (AVR JTAGICE kompatibel, RS232, 2.7-5.5V, +ISP STK500v2) - Free update to version compatible with AVR JTAG MKII (coming soon)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Programmer und Debugger für USB (MKI) &lt;br /&gt;
* link tot 20100521 [http://www.paktek-shop.de/epages/61807596.sf/de_DE/?ObjectPath=/Shops/61807596/Categories/Produkte/AVR-Programmer]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pinout AVR-JTAG ===&lt;br /&gt;
&lt;br /&gt;
AVR benutzt einen 10poligen IDC-Stecker mit 2,54 mm Pinabstand und folgendem Pinout:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE mkII&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| (frei) || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| Vcc || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bemerkungen:&lt;br /&gt;
&lt;br /&gt;
* VTref &#039;&#039;muss&#039;&#039; beschaltet werden, von dieser Spannung werden die Pegelwandler des JTAG-ICE gespeist, und das ICE weigert sich zu arbeiten wenn keine Spannung anliegt&lt;br /&gt;
* nTRST wird vom JTAG ICE nicht benutzt, soll aber aus Kompatibilität mit anderen JTAG-Implementierungen frei bleiben&lt;br /&gt;
* Pin 7 war in der ersten Version des Atmel JTAG ICE als &#039;&#039;Vsupply&#039;&#039; bezeichnet und diente dort der Speisung des JTAG ICE aus der Zielhardware&lt;br /&gt;
* nSRST muss nicht zwingend an &#039;&#039;/RESET&#039;&#039; des AVR gelegt werden; wenn er fehlt,  kann das JTAG ICE eine schlafende CPU nicht wecken oder mit einem Controller arbeiten, dessen JTAG-Schnittstelle von der Software außer Betrieb genommen worden ist (Bit &#039;&#039;JTD&#039;&#039; im Register &#039;&#039;MCUCSR&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
AVR-JTAG lässt sich mit anderen JTAG-Implementierungen (oder weiteren AVRs) zu einer &#039;&#039;daisy chain&#039;&#039; verketten; dabei schiebt jeder AVR 4 Bits.&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
=== USB Anschluss auf Basis des FTDI FT2232 ===&lt;br /&gt;
Diese Adapter funktionieren mit Opensource-Tools wie OpenOCD (ARM-Debugger), xc3sprog (Xilinx Programmer), urjtag (generisches JTAG-Tool), gojtag, etc. Manchmal sind leichte Anpassungen des Source nötig. Bei einigen Adaptern ist auch die serielle Schnittstelle (3.3V-Level) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
* [http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/usbjtag/usbjtag.html USB to JTAG Interface] von Hubert Högl, Schaltplan&lt;br /&gt;
* [http://www.embedded-projects.net/index.php?page_id=175 USB JTAG Interface für usbprog und OpenOCD] von Benedikt Sauter (Zurzeit gibt es Bausätze für 22€. Der Adapter ist ein Universaladapter der mit verschiedenen Firmwares zu verschiedenen Geräte werden kann. Pläne, Quelltexte usw... Open Source!!!)&lt;br /&gt;
* [http://www.amontec.com/ Amontec] JTAGkey, JTAGkey-Tiny&lt;br /&gt;
* [http://section5.ch/icebear ICEbear] ICEbear (Plus|Light) JTAG adapter, spezielle Unterstützung für Flashen/Debuggen von Analog Devices Blackfin-Plattformen.&lt;br /&gt;
* [http://www.luminarymicro.com/products/ekk-lm3s811_evaluation_kit.html EKK-LM3S811] von LMI. Auf dem Testboard ist ein &amp;quot;on-board&amp;quot; JTAG-Adapter, der zu Ansteuerung des LM3S811 auf dem Board genutzt wird, aber auch an externe Controller angeschlossen werden kann. (Alle LMI Testboards verfügen über den JTAG Ein- und Ausgang.)&lt;br /&gt;
*[http://www.segger.com/cms/jlink.html SEGGER J-Link] sehr professioneller schneller JTAG Adapter. Für nichtkommerziellen Einsatz gibt es den J-Link Edu schon für 50€.&lt;br /&gt;
* [http://www.olimex.com/dev/arm-usb-ocd.html ARM-USB-OCD] von Olimex&lt;br /&gt;
* [http://www.signalyzer.com/ Xverve Signalyzer Tool]&lt;br /&gt;
* [http://bitrelle.wordpress.com/jtagbox/ Bitrelle JTAGkey]&lt;br /&gt;
&lt;br /&gt;
=== Parallelport-Anschluss (Wiggler und Wiggler-&amp;quot;kompatibel&amp;quot;) ===&lt;br /&gt;
* [http://www.macraigor.com/hwproducts.htm Macraigor] Original Wiggler&lt;br /&gt;
* [http://www.olimex.com/dev/arm-jtag.html Olimex ARM-JTAG] Wiggler-Nachbau&lt;br /&gt;
* [http://www.k9spud.com/jtag/ k9spud Wiggler-Schaltplan]&lt;br /&gt;
* [http://web.archive.org/web/20060411074457/http://bbs.circuitcellar.com/phpBB2/viewtopic.php?p=10059&amp;amp; bigakis Wiggler-Schaltplan] (74HC244 Levelshifter, BC547 Transistor zum Invertieren)(&#039;&#039;&#039;Webarchiv-Link&#039;&#039;&#039;,Orginal gelöscht)&lt;br /&gt;
* [http://wiki.openwrt.org/doc/hardware/port.jtag.cables Wiggler Schaltplan] von OpenWRT (ebenfalls mit 74HC244). &lt;br /&gt;
* [http://www.st.com/stonline/products/literature/um/12322.pdf ST FlashLink JTAG Programming Cable] STM Application-Note&lt;br /&gt;
&lt;br /&gt;
Man findet einige Schaltpläne für Wiggler-Nachbauten im Netz. Nicht alle sind identisch. Der original Schaltplan von Macraigor ist meines (M. Thomas) Wissens nicht verfügbar. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vollständige&amp;quot; Belegung des Wiggler-Clones von Olimex (Quelle: sparkfun-Forum)&lt;br /&gt;
* DB25.2 → INVERSE → JTAG.15 (NTRST) (mthomas: hier ist wohl nSRST gemeint)&lt;br /&gt;
* DB25.3 → JTAG.7 (TMS)&lt;br /&gt;
* DB25.4 → JTAG.9 (TCK)&lt;br /&gt;
* DB25.5 → JTAG.5 (TDI)&lt;br /&gt;
* DB25.6 → JTAG.3 (TRST)&lt;br /&gt;
* DB25.9 → VCC for the Level shifter i.e. JTAG enable/disable&lt;br /&gt;
* DB25.11 ← JTAG.13 (TDO)&lt;br /&gt;
* DB25.13 ← Target VCC sense (only when JTAG is enabled i.e. DB26.9 = 1) &lt;br /&gt;
&lt;br /&gt;
DB25.18, DB25.19, DB25.20, DB25.21, DB25.22, DB25.23, DB25.24, DB25.25 werden mit GND verbunden.&lt;br /&gt;
&lt;br /&gt;
Soll das Wiggler-Interface auch mit der Software ocdremote von Macraigor genutzt werden, ist eine Brücke zwischen zwischen DB25.8 und DB25.15 einzubauen. ocdremote ab (ca.) Version 2.06 erkennt daran das original Wiggler und auch einen mit der Brücke ausgestattenen Nachbau. Nutzt man zur Ansteuerung andere Software (z.&amp;amp;nbsp;B. OpenOCD oder H-JTAG) wird diese Verbindung nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
Man beachte die Beschaltung von SRST und TRST: &lt;br /&gt;
&lt;br /&gt;
Üblicherweise wird Pin DB25.2 des Druckeranschlusses über eine Inverterschaltung (NPN Transistor) mit dem Reset-Pin des ARM-Controllers verbunden (&#039;&#039;&#039;nSRST&#039;&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
Pin DB25.6 des Druckeranschlusses wird über Levelshifter direkt mit dem &#039;&#039;&#039;TRST&#039;&#039;&#039;-Pin des Controllers verbunden. In manchen Schaltplänen findet man auch für TRST einen Inverter, aber dies scheint eher unüblich. &lt;br /&gt;
&lt;br /&gt;
Bei den sonstigen Pinbelegungen herrscht weitestgehend Einigkeit. Man muss lediglich Levelshifter ([[Pegelwandler]]) zwischenschalten, um zwischen den 5V des Druckeranschlusses und der Spannung des Controllers (üblicherweise 3,3V) zu &amp;quot;übersetzen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Allein ein 74HC244 als Levelshifter, wie in vielen Schaltungen verwendet, ist nicht ideal. Der Baustein wird dabei mit 3,3V aus der Zielschaltung betrieben und die Anpassung an die nominell 5V vom Druckerport an die 3,3V des HC244 erfolgt entweder durch Spannungsteiler oder durch Strombegrenzungswiderstände und die internen Überspannungsschutzdioden. Das Ausgangssignal TDO zurück zum Druckeranschluss ist maximal 3,3V. Beides nicht optimal aber es funktioniert zumindest meistens. Aufwändigere Schaltungen, wie z.&amp;amp;nbsp;B. der Olimex Wiggler-Nachbau (&amp;quot;ARM-JTAG&amp;quot;), nutzen eine Kombination aus einem 74AC244 und einem 74LCX244.&lt;br /&gt;
&lt;br /&gt;
=== sonstige ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ARM-JTAG-COOCOX/ ARM-JTAG-COOCOX], CoLinkEX Nachbau von Olimex, unterstützt JTAG sowie SWD&lt;br /&gt;
** [http://www.coocox.org/colinkEx.htm unterstützte uC]&lt;br /&gt;
** unterstütze IDEs: [http://www.keil.com/arm/mdk.asp Keil MDK-ARM 4.03] oder neuer, [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR Embedded Workbench 5.xx] oder neuer sowie die [http://www.coocox.org/CooCox_CoIDE.htm CooCox CoIDE]&lt;br /&gt;
&lt;br /&gt;
* Abatron BDI2000&lt;br /&gt;
* [http://www.amontec.com/index.shtml Amontec] JTAG Accelerator, Chameleon POD&lt;br /&gt;
* AZ-Electronics&lt;br /&gt;
* JtagConnection&lt;br /&gt;
* [http://www.lauterbach.de/mindex.html Lauterbach] Trace&lt;br /&gt;
* Macraigor Systems LLS&lt;br /&gt;
* Peedi&lt;br /&gt;
* Rowley Associates CrossConnect&lt;br /&gt;
&lt;br /&gt;
=== Anschlussbelegung ===&lt;br /&gt;
&lt;br /&gt;
Auf Evaluation-Boards verschiedener Hersteller (z.&amp;amp;nbsp;B. Atmel, IAR, Keil, Olimex) ist die JTAG-Schnittstelle über einen 20-poligen Wannenstecker (2·10, Raster 2,54mm) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 NC  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 nTRST&lt;br /&gt;
 | 4 GND &lt;br /&gt;
 |-&lt;br /&gt;
 | 5 TDI&lt;br /&gt;
 | 6 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 TMS&lt;br /&gt;
 | 8 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 TCK&lt;br /&gt;
 | 10 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 11 GND&lt;br /&gt;
 | 12 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 13 TDO&lt;br /&gt;
 | 14 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 15 nRESET/nSRST&lt;br /&gt;
 | 16 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 17 NC&lt;br /&gt;
 | 18 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 19 NC&lt;br /&gt;
 | 20 GND&lt;br /&gt;
 |-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Neuerdings propagiert ARM eine sehr kompakte Variante mit 2·5 Pins in einem 1,27 mm Raster:&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 RTCK&lt;br /&gt;
 | 8 TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GND&lt;br /&gt;
 | 10 nRESET/nSRST&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Daneben existiert noch eine weniger gebräuchliche aber dokumentierte Variante mit 14 Polen (2·7). &lt;br /&gt;
&lt;br /&gt;
Bei fertigen Geräten, für die keine Schaltpläne vorliegen, muss man sich die herstellerspezifische Anschlussbelegung anhand des Datenblatts des verwendeten Controllers und mittels Messgerät selbst ermitteln.&lt;br /&gt;
&lt;br /&gt;
=== Cortex Debug Connectors von ARM ===&lt;br /&gt;
&lt;br /&gt;
[http://infocenter.arm.com/help/topic/com.arm.doc.faqs/attached/13634/cortex_debug_connectors.pdf In diesem PDF Dokument hat ARM die Anschlussbelegung für Cortex-Prozessoren definiert.]&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 SWDIO/TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 SWDCLK/TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 SWO/TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 Key (kein Pin)&lt;br /&gt;
 | 8 NC/TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GNDDetect&lt;br /&gt;
 | 10 nRESET&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Der 10-polige JTAG Stecker von mmvisual (ARM, Cortex, Seriell kombiniert) ===&lt;br /&gt;
mmvisual hat mit dieser Steckerbelegung die Standard JTAG Schnittstelle erweitert:&lt;br /&gt;
&lt;br /&gt;
Ich habe einen 10-poligen Debug-Stecker entworfen, der alle Varianten sowie einen [[UART]]-Anschluss enthält und die Pins optimal angeordnet sind. Mit diesem Stecker können ARM7/9 und Cortex CPUs programmiert werden. An allen JTAG-Steckervarianten fehlen leider Funktionen, bzw. die Pins waren nicht optimal angeordnet. Daher habe ich den &amp;quot;perfekten&amp;quot; Stecker designt der viele Funktionen beinhaltet.&lt;br /&gt;
&lt;br /&gt;
[[bild:jtag-debug-port10.png]]&lt;br /&gt;
&lt;br /&gt;
==== Die Funktionen ====&lt;br /&gt;
* JTAG&lt;br /&gt;
* SWD&lt;br /&gt;
* Debug-UART-Anschluss (verbunden mit einem freien UART vom [[STM32]]) (alternativ ein MAX232 Chip dazwischen schalten)&lt;br /&gt;
* Weniger Platzbedarf auf der Platine (Standard-JTAG 20 Polig)&lt;br /&gt;
* Über 4-Poligen Würfel kann der UART benutzt werden (Pin 7/8/9/10)&lt;br /&gt;
* Es kann ein Jumper gesteckt werden für eine Option (Pin 9/10) ohne dass es sich mit dem RS232 Chip beißt (sofern er eingebaut wurde)&lt;br /&gt;
* Über einen 5-Poligen einreihigen Stecker kann SWD verwendet werden (Pin 1/3/5/7/9)&lt;br /&gt;
* den ganzen Stecker braucht es nur, wenn man den herkömmlichen JTAG nutzen möchte.&lt;br /&gt;
* Kurzschlussschutz, da GND und +3V3 nicht gegenüber liegen&lt;br /&gt;
&lt;br /&gt;
In all meinen Projekten verwende ich nur noch diese Anordnung, denn sie ist einfach praktisch. Alles drauf und die Pins sind perfekt angeordnet für jede Art der Anwendung.&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist der UART 1 ([[STM32]]) benutzt mit den Pins PA9/PA10. Wenn die Boot-Pins auf einen separaten Jumper-Block gelegt werden, so könnte auch mit der ST Software ein Flash Update durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Hier die Erklärung warum es die BOOT-Pins nicht auf dem JTAG-Stecker benötigt. Ich habe mir einen eigenen Bootloader geschrieben, der kommt ohne das&lt;br /&gt;
Interne Boot-ROM (und ohne die BOOT-Pins) aus. Ich habe den in die ersten 8KB Flash programmiert.&lt;br /&gt;
* Das PC-Programm senden über den UART den Befehl &amp;quot;GoTo Bootloader&amp;quot;, damit wird mein Bootloader angesprungen.&lt;br /&gt;
* Dann sendet das PC Programm die Update-Daten.&lt;br /&gt;
* Wenn fertig, dann geht es zurück in die Applikation.&lt;br /&gt;
* Der Bootloader ist immer beim Einschalten des Boards aktiv. Sobald eine Tastenkombination gedrückt wird, bleibt er &amp;quot;hängen&amp;quot; und irgend welche LEDs blinken. Also wenn das Flash &amp;quot;Zerschossen&amp;quot; sein sollte kann man mit einem Restart/Tasten den Bootloader aktivieren und erneut den Update ausführen.&lt;br /&gt;
* Der ST eigene Bootloader hat mir nicht gefallen, weil da keine LED&#039;s Blinken und dem User sagen, &amp;quot;Hallo ich lebe und bin im Bootloader&amp;quot;.&lt;br /&gt;
* Wenn die Tasten beim Einschalten nicht gedrückt werden, dann springt der Bootloader in die Applikation&lt;br /&gt;
* Der Bootloader kann jeden beliebigen UART nutzen.&lt;br /&gt;
&lt;br /&gt;
==== Die Adapterplatine ====&lt;br /&gt;
Mit der Adapterplatine kann von dem 10-poligen Stecker auf einen 20-poligen Standard JTAG Stecker verbunden werden. Zusätzlich ist hier ein TTL/V24 Wandler integriert um die UART Signale auf V24 um zu setzen. Hier kann der Schaltplan/Layout geladen werden: [[Datei:10-Pol-JTAG.zip]]&lt;br /&gt;
Die Platine ist 33×19mm klein.&lt;br /&gt;
&lt;br /&gt;
=== 10-pin JTAG im 20&#039;tel-Zoll Raster ===&lt;br /&gt;
&lt;br /&gt;
* Forumsbeitrag [http://www.mikrocontroller.net/topic/188659#1836129 &amp;quot;neuer JTAG-Stecker für ARM&amp;quot;]&lt;br /&gt;
* [http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm Keil ULINK2] (und Pinouts anderer JTAG-Stecker)&lt;br /&gt;
&lt;br /&gt;
== MSP430 JTAG ==&lt;br /&gt;
&lt;br /&gt;
Anschluß an Parallelport: &lt;br /&gt;
* [http://elmicro.com/files/olimex/msp430-jtag-d.pdf Olimex MSP430 JTAG (PDF)] bzw. ([http://www.olimex.com/dev/images/msp430-jtag-d-sch.gif (GIF)]). Siehe auch Diskussion im [http://www.mikrocontroller.net/topic/57208#442620 Forum].&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/90754#776070 Forumsbeitrag] mit Anhang eines chinesischen? Schaltplans (PDF)&lt;br /&gt;
&lt;br /&gt;
Anschluß an USB/Seriell:&lt;br /&gt;
* [http://goodfet.sourceforge.net/ GoodFET] von Travis Goodspeed. The GoodFET is an open source tool for programming microcontrollers and memories by [[SPI]], [[I2C]], JTAG ([[MSP430]], [[ARM]]), and a slew of vendor-proprietary protocols. (Stub für [http://events.ccc.de/congress/2009/Fahrplan/events/3490.en.html 26C3 Vortrag])&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Für Xilinx&lt;br /&gt;
** [http://www.freewebs.com/lykos1986/cpldprogrammer.htm Xilinx JTAG programmer] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.embedded-projects.net/index.php?page_id=157 Xilinx JTAG XSVF Player mit USBprog] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter Xilinx Platform Cable I Nachbau] - Nachbau des Originalem Xilinx Platform Cable I (DLC9)&lt;br /&gt;
** [http://warmcat.com/milksop/cheaptag.html Cheaptag] - Xilinx Parallel Jtag programming cable&lt;br /&gt;
** [http://embdev.net/topic/139121#new XSVF Player FTDI Bitbang] - XSVF Player with FTDI Bitbang mode&lt;br /&gt;
** [https://play.google.com/store/apps/details?id=com.wesche.xsvf XSVF Player FTDI Bitbang for Android] - XSVF Player with FTDI Bitbang mode for Android&lt;br /&gt;
&lt;br /&gt;
* Für Altera&lt;br /&gt;
** [http://translate.google.com/translate?js=n&amp;amp;prev=_t&amp;amp;hl=en&amp;amp;ie=UTF-8&amp;amp;layout=2&amp;amp;eotf=1&amp;amp;sl=auto&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Fmarsohod.org%2Findex.php%2Fourblog%2F11-blog%2F163-marsblaster Marsblaster] für Altera FPGA, serieller Port&lt;br /&gt;
** [http://www.altera.com/literature/ug/ug_bbii.pdf ALTERA ByteBlaster]&lt;br /&gt;
** [http://www.entner-electronics.com/tl/index.php/eeblaster.html EEBlaster], sehr günstig, kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
** [http://www.pyroelectro.com/tutorials/byteblaster/index.html Build A ByteBlaster] bei www.pyroelectro.com&lt;br /&gt;
** [http://www.ixo.de/info/usb_jtag/ USB-JTAG-Adapter], kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
&lt;br /&gt;
* ColdFire BDM Pod&lt;br /&gt;
** [http://forums.freescale.com/t5/68K-ColdFire-reg-Microprocessors/TBLCF-open-source-debugging-cable/m-p/7543 TBLCF open source debugging cable]&lt;br /&gt;
** [http://www.rockbox.org/wiki/IriverBDM IriverBDM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- VERALTETE LINKS - PRODUKTE WERDEN DORT NICHT GEFUNDEN&lt;br /&gt;
* FCPU-X Platform Cable USB JTAG cable&lt;br /&gt;
** Bezugsquelle (DE): [http://www.vht-impex-shop.de/product_info.php?info=p786_HW-USB-platform-cable--FCPU-X-platform-cable-similar-to-HW-USB-Kabel-for-Xilinx-evaluation-boards-etc-.html&amp;amp;XTCsid=e613a7119493deac52e83e9038ce131a http://www.vht-impex-shop.de]&lt;br /&gt;
** Bezugsquelle (US): [http://www.celeritous.com/estore/index.php?main_page=product_info&amp;amp;cPath=1&amp;amp;products_id=129 http://www.celeritous.com] &lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Universal JTAG Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Versaloon ===&lt;br /&gt;
&lt;br /&gt;
[http://www.versaloon.com/ Versaloon] is a full-opensource multi-functional platform based on generic USB_TO_XXX protocol, which can now support more than 10 kinds of interfaces including [[ISP]], [[JTAG]], SWD, [[SPI]], [[IIC]] and so on. Programming is supported for: &lt;br /&gt;
* STM8 support(SWIM)&lt;br /&gt;
* STM32 support(ISP/JTAG/SWD) siehe auch Forumbeitrag von Bingo [http://www.mikrocontroller.net/topic/202785]&lt;br /&gt;
* LPC1000 support(ISP/JTAG/SWD)&lt;br /&gt;
* LM3S support(JTAG/SWD)&lt;br /&gt;
* AT91SAM3 support(JTAG/SWD)&lt;br /&gt;
* AT89S5X support(ISP)&lt;br /&gt;
* PSOC1 support(ISSP)&lt;br /&gt;
* MSP430(without TEST) support(JTAG)&lt;br /&gt;
* C8051F support(C2/JTAG)&lt;br /&gt;
* AVR8 support(ISP/JTAG)&lt;br /&gt;
* LPC900 support(ICP)&lt;br /&gt;
* HCS08 support(BDM)&lt;br /&gt;
* HCS12(X) support(BDM)&lt;br /&gt;
* SVF support(JTAG)&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [[AVR-Studio]] (Windows)&lt;br /&gt;
* [[GDB]] in Verbindung mit [http://avarice.sourceforge.net/ AVaRICE] und AVR JTAGICE kompatibler Hardware. (Linux)&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [[GDB]] bzw. Insight und auf die ARM JTAG Hardware abgestimmte GDB-Server (OCDRemote, [http://openocd.berlios.de/ OpenOCD], BDI2000, Peedi)&lt;br /&gt;
* [http://www.hjtag.com/ H-JTAG] und RDI-kompatible Debugger (SDT2.51, ADS1.2, RealView and IAR)&lt;br /&gt;
* Herstellerspezifische Software z.&amp;amp;nbsp;B. von Lauterbach&lt;br /&gt;
* Komplette Open Source Toolchain [https://bitrelle.files.wordpress.com/2012/05/bitrelle_programming_eclipse.pdf Eclipse-GDB-OpenOCD], läuft auf Linux/Windows/Mac&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Altera: Quartus Programmer (quartus_pgm)&lt;br /&gt;
* Lattice: ToDo... (Lattice setzt seit 2011 auf die JTAG-Funktionalität des FT2232 und benötigt daher keine speziellen USB-JTAG-Adapter mehr)&lt;br /&gt;
* Xilinx: Impact, xc3sprog, ...&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Tools ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.topjtag.com TopJTAG]: boundary-scan software for circuit debugging and flash programming.&lt;br /&gt;
* [http://www.ricreations.com/index.html Universal Scan]&lt;br /&gt;
* [http://urjtag.org UrJTAG]: Kommandozeilentool für Boundary Scan, FPGA und CPLD und Speicher lesen und schreiben u.v.a.m., Nachfolger von openwince JTAG Tools.&lt;br /&gt;
* [http://www.gojtag.com/ goJTAG]: graphisches Boundary-Scan-Tool zum manuellen Durchtesten von Verbindungen, besonders für Nicht-JTAG-Experten geeignet. Obwohl in Java geschrieben, funktioniert es nur unter Windows. Funktioniert im Prinzip mit allen FT2232(H) basierten Adaptern.&lt;br /&gt;
* [http://andreas-weschenfelder.de.vu FT2232 BoundaryScan Tool]: free boundary-scan software for flash programming [S29GL128N, S29GL256N, S29GL512N, M25PX16, M25PX32, M25PX64, etc ].&lt;br /&gt;
&amp;lt;!-- link tot 20100521 * [http://www.rsn-tech.demon.co.uk/pjtag/pjtag.html Pesonal JTAG]: halbfertiges Hobbyprojekt, ist bissel buggy, aber kleine Sachen gehen damit. --&amp;gt;&lt;br /&gt;
* [http://www.blunk-electronic.de/products.html]: boundary scan test system M-1 for board and system testing, runs on Linux, open source, no licensing ! Read more on http://www.blunk-electronic.de/products.html&lt;br /&gt;
&lt;br /&gt;
= Weblinks =&lt;br /&gt;
&lt;br /&gt;
*Debugging the Linux kernel with JTAG] von Alexander Sirotkin [http://www.embedded.com/design/operating-systems/4207333/Debugging-the-Linux-kernel-with-JTAG] (LPC3250 mit FemtoLinux, OpenOCD)&lt;br /&gt;
*[http://hri.sourceforge.net/tools/jtag_faq_org.html JTAG FAQ] auf sourceforge.net&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR]]&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:FPGA und Co]]&lt;br /&gt;
[[Kategorie:Datenübertragung]]&lt;/div&gt;</summary>
		<author><name>Ralfiboy</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94752</id>
		<title>JTAG</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94752"/>
		<updated>2017-01-05T18:02:02Z</updated>

		<summary type="html">&lt;p&gt;Ralfiboy: /* ARM JTAG */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;J&#039;&#039;&#039;oint &#039;&#039;&#039;T&#039;&#039;&#039;est &#039;&#039;&#039;A&#039;&#039;&#039;ction &#039;&#039;&#039;G&#039;&#039;&#039;roup, entwickelte den Standard IEEE 1149.1. Das JTAG-Protokoll ermöglicht das Programmieren, Debuggen und Testen von ICs, [[Prozessor]]en und [[FPGA]]s direkt in der Schaltung.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2737 AVR JTAGICE] (gelegentlich auch &#039;&#039;JTAGICE mkI&#039;&#039; genannt) von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3353 AVR JTAGICE mkII] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=17213&amp;amp;category_id=163&amp;amp;family_id=682&amp;amp;subfamily_id=2138 AVR JTAGICE 3] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/tools/ATATMEL-ICE.aspx ATMEL-ICE] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3891 AVR Dragon] von Atmel.&lt;br /&gt;
** [http://www.atmel.com/dyn/resources/prod_documents/doc8112.pdf AVR077: Opto Isolated Emulation for the DebugWIRE] (auch für AVR JTAGICE mkII nützlich)&lt;br /&gt;
* [http://gandalf.arubi.uni-kl.de/avr_projects/evertool/index.html Evertool und Evertool light] von Martin Thomas. Evertool unterstützt JTAG analog zu AVR JTAGICE und [[ISP]] nach [[STK500]] Protokoll. Evertool light nur JTAG. &lt;br /&gt;
* [http://aquaticus.info/jtag JTAG for AVR processors] bei Aquaticus ROV. (Englisch)&lt;br /&gt;
* [http://www.olimex.com/dev/avr-jtag.html AVR-JTAG] und [http://www.olimex.com/dev/avr-usb-jtag.html AVR-USB-JTAG] von [http://www.olimex.com/dev/index.html Olimex] (kommerziell). Alternativer Lieferant ist der [http://elmicro.com/de/avrjtag.html Elektronikladen].&lt;br /&gt;
* [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/35 AVR-JTAG] und [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/52 AVR-USB-JTAG] von [http://www.gadgetPool.de gadgetPool] (kommerziell)&lt;br /&gt;
* [http://www.floppyspongeonline.com/automation/isojtagisp/isojtagisp.php IsoJtagISP] und [http://www.floppyspongeonline.com/automation/isojtag/isojtag.php IsoJTAG] von Floppy Sponge Automation ([[USB]], optisch isoliert). Hier eine modifizierte Version von [http://www.madwizard.org/electronics/projects/avrjtag Madwizard].&lt;br /&gt;
* [http://www.ere.co.th/(gs5afz55q5idyyn0a1ibkl45)/default.aspx?RedirectPage=Products&amp;amp;RedirectPage1=ProductsDetail&amp;amp;ProductID=56 JTAGAVRU1] (AVR JTAGICE kompatibel, USB, 1.8-5.5V) (existiert wohl nicht mehr ?)&lt;br /&gt;
* [http://www.avrfreaks.net/index.php?module=Freaks%20Tools&amp;amp;func=viewItem&amp;amp;item_id=630 JTAGcable II] (AVR JTAGICE kompatibel, USB, 1.8-6 V)&lt;br /&gt;
* [http://www.miklobit.com/JTAG_TWICE.530+B6Jkw9Mw__.0.html MB-JTAG-TWICE] (AVR JTAGICE kompatibel, RS232, 2.7-5.5V, +ISP STK500v2) - Free update to version compatible with AVR JTAG MKII (coming soon)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Programmer und Debugger für USB (MKI) &lt;br /&gt;
* link tot 20100521 [http://www.paktek-shop.de/epages/61807596.sf/de_DE/?ObjectPath=/Shops/61807596/Categories/Produkte/AVR-Programmer]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pinout AVR-JTAG ===&lt;br /&gt;
&lt;br /&gt;
AVR benutzt einen 10poligen IDC-Stecker mit 2,54 mm Pinabstand und folgendem Pinout:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE mkII&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| (frei) || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| Vcc || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bemerkungen:&lt;br /&gt;
&lt;br /&gt;
* VTref &#039;&#039;muss&#039;&#039; beschaltet werden, von dieser Spannung werden die Pegelwandler des JTAG-ICE gespeist, und das ICE weigert sich zu arbeiten wenn keine Spannung anliegt&lt;br /&gt;
* nTRST wird vom JTAG ICE nicht benutzt, soll aber aus Kompatibilität mit anderen JTAG-Implementierungen frei bleiben&lt;br /&gt;
* Pin 7 war in der ersten Version des Atmel JTAG ICE als &#039;&#039;Vsupply&#039;&#039; bezeichnet und diente dort der Speisung des JTAG ICE aus der Zielhardware&lt;br /&gt;
* nSRST muss nicht zwingend an &#039;&#039;/RESET&#039;&#039; des AVR gelegt werden; wenn er fehlt,  kann das JTAG ICE eine schlafende CPU nicht wecken oder mit einem Controller arbeiten, dessen JTAG-Schnittstelle von der Software außer Betrieb genommen worden ist (Bit &#039;&#039;JTD&#039;&#039; im Register &#039;&#039;MCUCSR&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
AVR-JTAG lässt sich mit anderen JTAG-Implementierungen (oder weiteren AVRs) zu einer &#039;&#039;daisy chain&#039;&#039; verketten; dabei schiebt jeder AVR 4 Bits.&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
=== USB Anschluss auf Basis des FTDI FT2232 ===&lt;br /&gt;
Diese Adapter funktionieren mit Opensource-Tools wie OpenOCD (ARM-Debugger), xc3sprog (Xilinx Programmer), urjtag (generisches JTAG-Tool), gojtag, etc. Manchmal sind leichte Anpassungen des Source nötig. Bei einigen Adaptern ist auch die serielle Schnittstelle (3.3V-Level) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
* [http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/usbjtag/usbjtag.html USB to JTAG Interface] von Hubert Högl, Schaltplan&lt;br /&gt;
* [http://www.embedded-projects.net/index.php?page_id=175 USB JTAG Interface für usbprog und OpenOCD] von Benedikt Sauter (Zurzeit gibt es Bausätze für 22€. Der Adapter ist ein Universaladapter der mit verschiedenen Firmwares zu verschiedenen Geräte werden kann. Pläne, Quelltexte usw... Open Source!!!)&lt;br /&gt;
* [http://www.amontec.com/ Amontec] JTAGkey, JTAGkey-Tiny&lt;br /&gt;
* [http://section5.ch/icebear ICEbear] ICEbear (Plus|Light) JTAG adapter, spezielle Unterstützung für Flashen/Debuggen von Analog Devices Blackfin-Plattformen.&lt;br /&gt;
* [http://www.luminarymicro.com/products/ekk-lm3s811_evaluation_kit.html EKK-LM3S811] von LMI. Auf dem Testboard ist ein &amp;quot;on-board&amp;quot; JTAG-Adapter, der zu Ansteuerung des LM3S811 auf dem Board genutzt wird, aber auch an externe Controller angeschlossen werden kann. (Alle LMI Testboards verfügen über den JTAG Ein- und Ausgang.)&lt;br /&gt;
*[http://www.segger.com/cms/jlink.html SEGGER J-Link] sehr professioneller schneller JTAG Adapter. Für nichtkommerziellen Einsatz gibt es den J-Link Edu schon für 50€.&lt;br /&gt;
* [http://www.olimex.com/dev/arm-usb-ocd.html ARM-USB-OCD] von Olimex&lt;br /&gt;
* [http://www.signalyzer.com/ Xverve Signalyzer Tool]&lt;br /&gt;
* [http://bitrelle.wordpress.com/jtagbox/ Bitrelle JTAGkey]&lt;br /&gt;
&lt;br /&gt;
=== Parallelport-Anschluss (Wiggler und Wiggler-&amp;quot;kompatibel&amp;quot;) ===&lt;br /&gt;
* [http://www.macraigor.com/hwproducts.htm Macraigor] Original Wiggler&lt;br /&gt;
* [http://www.olimex.com/dev/arm-jtag.html Olimex ARM-JTAG] Wiggler-Nachbau&lt;br /&gt;
* [http://www.k9spud.com/jtag/ k9spud Wiggler-Schaltplan]&lt;br /&gt;
* [http://web.archive.org/web/20060411074457/http://bbs.circuitcellar.com/phpBB2/viewtopic.php?p=10059&amp;amp; bigakis Wiggler-Schaltplan] (74HC244 Levelshifter, BC547 Transistor zum Invertieren)(&#039;&#039;&#039;Webarchiv-Link&#039;&#039;&#039;,Orginal gelöscht)&lt;br /&gt;
* [http://wiki.openwrt.org/doc/hardware/port.jtag.cables Wiggler Schaltplan] von OpenWRT (ebenfalls mit 74HC244). &lt;br /&gt;
* [http://www.st.com/stonline/products/literature/um/12322.pdf ST FlashLink JTAG Programming Cable] STM Application-Note&lt;br /&gt;
&lt;br /&gt;
Man findet einige Schaltpläne für Wiggler-Nachbauten im Netz. Nicht alle sind identisch. Der original Schaltplan von Macraigor ist meines (M. Thomas) Wissens nicht verfügbar. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vollständige&amp;quot; Belegung des Wiggler-Clones von Olimex (Quelle: sparkfun-Forum)&lt;br /&gt;
* DB25.2 → INVERSE → JTAG.15 (NTRST) (mthomas: hier ist wohl nSRST gemeint)&lt;br /&gt;
* DB25.3 → JTAG.7 (TMS)&lt;br /&gt;
* DB25.4 → JTAG.9 (TCK)&lt;br /&gt;
* DB25.5 → JTAG.5 (TDI)&lt;br /&gt;
* DB25.6 → JTAG.3 (TRST)&lt;br /&gt;
* DB25.9 → VCC for the Level shifter i.e. JTAG enable/disable&lt;br /&gt;
* DB25.11 ← JTAG.13 (TDO)&lt;br /&gt;
* DB25.13 ← Target VCC sense (only when JTAG is enabled i.e. DB26.9 = 1) &lt;br /&gt;
&lt;br /&gt;
DB25.18, DB25.19, DB25.20, DB25.21, DB25.22, DB25.23, DB25.24, DB25.25 werden mit GND verbunden.&lt;br /&gt;
&lt;br /&gt;
Soll das Wiggler-Interface auch mit der Software ocdremote von Macraigor genutzt werden, ist eine Brücke zwischen zwischen DB25.8 und DB25.15 einzubauen. ocdremote ab (ca.) Version 2.06 erkennt daran das original Wiggler und auch einen mit der Brücke ausgestattenen Nachbau. Nutzt man zur Ansteuerung andere Software (z.&amp;amp;nbsp;B. OpenOCD oder H-JTAG) wird diese Verbindung nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
Man beachte die Beschaltung von SRST und TRST: &lt;br /&gt;
&lt;br /&gt;
Üblicherweise wird Pin DB25.2 des Druckeranschlusses über eine Inverterschaltung (NPN Transistor) mit dem Reset-Pin des ARM-Controllers verbunden (&#039;&#039;&#039;nSRST&#039;&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
Pin DB25.6 des Druckeranschlusses wird über Levelshifter direkt mit dem &#039;&#039;&#039;TRST&#039;&#039;&#039;-Pin des Controllers verbunden. In manchen Schaltplänen findet man auch für TRST einen Inverter, aber dies scheint eher unüblich. &lt;br /&gt;
&lt;br /&gt;
Bei den sonstigen Pinbelegungen herrscht weitestgehend Einigkeit. Man muss lediglich Levelshifter ([[Pegelwandler]]) zwischenschalten, um zwischen den 5V des Druckeranschlusses und der Spannung des Controllers (üblicherweise 3,3V) zu &amp;quot;übersetzen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Allein ein 74HC244 als Levelshifter, wie in vielen Schaltungen verwendet, ist nicht ideal. Der Baustein wird dabei mit 3,3V aus der Zielschaltung betrieben und die Anpassung an die nominell 5V vom Druckerport an die 3,3V des HC244 erfolgt entweder durch Spannungsteiler oder durch Strombegrenzungswiderstände und die internen Überspannungsschutzdioden. Das Ausgangssignal TDO zurück zum Druckeranschluss ist maximal 3,3V. Beides nicht optimal aber es funktioniert zumindest meistens. Aufwändigere Schaltungen, wie z.&amp;amp;nbsp;B. der Olimex Wiggler-Nachbau (&amp;quot;ARM-JTAG&amp;quot;), nutzen eine Kombination aus einem 74AC244 und einem 74LCX244.&lt;br /&gt;
&lt;br /&gt;
=== sonstige ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ARM-JTAG-COOCOX/ ARM-JTAG-COOCOX], CoLinkEX Nachbau von Olimex, unterstützt JTAG sowie SWD&lt;br /&gt;
** [http://www.coocox.org/colinkEx.htm unterstützte uC]&lt;br /&gt;
** unterstütze IDEs: [http://www.keil.com/arm/mdk.asp Keil MDK-ARM 4.03] oder neuer, [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR Embedded Workbench 5.xx] oder neuer sowie die [http://www.coocox.org/CooCox_CoIDE.htm CooCox CoIDE]&lt;br /&gt;
&lt;br /&gt;
* Abatron BDI2000&lt;br /&gt;
* [http://www.amontec.com/index.shtml Amontec] JTAG Accelerator, Chameleon POD&lt;br /&gt;
* AZ-Electronics&lt;br /&gt;
* JtagConnection&lt;br /&gt;
* [http://www.lauterbach.de/mindex.html Lauterbach] Trace&lt;br /&gt;
* Macraigor Systems LLS&lt;br /&gt;
* Peedi&lt;br /&gt;
* Rowley Associates CrossConnect&lt;br /&gt;
* [http://bitrelle.wordpress.com/jtagbox/ Bitrelle JTAGkey]&lt;br /&gt;
&lt;br /&gt;
=== Anschlussbelegung ===&lt;br /&gt;
&lt;br /&gt;
Auf Evaluation-Boards verschiedener Hersteller (z.&amp;amp;nbsp;B. Atmel, IAR, Keil, Olimex) ist die JTAG-Schnittstelle über einen 20-poligen Wannenstecker (2·10, Raster 2,54mm) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 NC  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 nTRST&lt;br /&gt;
 | 4 GND &lt;br /&gt;
 |-&lt;br /&gt;
 | 5 TDI&lt;br /&gt;
 | 6 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 TMS&lt;br /&gt;
 | 8 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 TCK&lt;br /&gt;
 | 10 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 11 GND&lt;br /&gt;
 | 12 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 13 TDO&lt;br /&gt;
 | 14 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 15 nRESET/nSRST&lt;br /&gt;
 | 16 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 17 NC&lt;br /&gt;
 | 18 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 19 NC&lt;br /&gt;
 | 20 GND&lt;br /&gt;
 |-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Neuerdings propagiert ARM eine sehr kompakte Variante mit 2·5 Pins in einem 1,27 mm Raster:&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 RTCK&lt;br /&gt;
 | 8 TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GND&lt;br /&gt;
 | 10 nRESET/nSRST&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Daneben existiert noch eine weniger gebräuchliche aber dokumentierte Variante mit 14 Polen (2·7). &lt;br /&gt;
&lt;br /&gt;
Bei fertigen Geräten, für die keine Schaltpläne vorliegen, muss man sich die herstellerspezifische Anschlussbelegung anhand des Datenblatts des verwendeten Controllers und mittels Messgerät selbst ermitteln.&lt;br /&gt;
&lt;br /&gt;
=== Cortex Debug Connectors von ARM ===&lt;br /&gt;
&lt;br /&gt;
[http://infocenter.arm.com/help/topic/com.arm.doc.faqs/attached/13634/cortex_debug_connectors.pdf In diesem PDF Dokument hat ARM die Anschlussbelegung für Cortex-Prozessoren definiert.]&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 SWDIO/TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 SWDCLK/TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 SWO/TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 Key (kein Pin)&lt;br /&gt;
 | 8 NC/TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GNDDetect&lt;br /&gt;
 | 10 nRESET&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Der 10-polige JTAG Stecker von mmvisual (ARM, Cortex, Seriell kombiniert) ===&lt;br /&gt;
mmvisual hat mit dieser Steckerbelegung die Standard JTAG Schnittstelle erweitert:&lt;br /&gt;
&lt;br /&gt;
Ich habe einen 10-poligen Debug-Stecker entworfen, der alle Varianten sowie einen [[UART]]-Anschluss enthält und die Pins optimal angeordnet sind. Mit diesem Stecker können ARM7/9 und Cortex CPUs programmiert werden. An allen JTAG-Steckervarianten fehlen leider Funktionen, bzw. die Pins waren nicht optimal angeordnet. Daher habe ich den &amp;quot;perfekten&amp;quot; Stecker designt der viele Funktionen beinhaltet.&lt;br /&gt;
&lt;br /&gt;
[[bild:jtag-debug-port10.png]]&lt;br /&gt;
&lt;br /&gt;
==== Die Funktionen ====&lt;br /&gt;
* JTAG&lt;br /&gt;
* SWD&lt;br /&gt;
* Debug-UART-Anschluss (verbunden mit einem freien UART vom [[STM32]]) (alternativ ein MAX232 Chip dazwischen schalten)&lt;br /&gt;
* Weniger Platzbedarf auf der Platine (Standard-JTAG 20 Polig)&lt;br /&gt;
* Über 4-Poligen Würfel kann der UART benutzt werden (Pin 7/8/9/10)&lt;br /&gt;
* Es kann ein Jumper gesteckt werden für eine Option (Pin 9/10) ohne dass es sich mit dem RS232 Chip beißt (sofern er eingebaut wurde)&lt;br /&gt;
* Über einen 5-Poligen einreihigen Stecker kann SWD verwendet werden (Pin 1/3/5/7/9)&lt;br /&gt;
* den ganzen Stecker braucht es nur, wenn man den herkömmlichen JTAG nutzen möchte.&lt;br /&gt;
* Kurzschlussschutz, da GND und +3V3 nicht gegenüber liegen&lt;br /&gt;
&lt;br /&gt;
In all meinen Projekten verwende ich nur noch diese Anordnung, denn sie ist einfach praktisch. Alles drauf und die Pins sind perfekt angeordnet für jede Art der Anwendung.&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist der UART 1 ([[STM32]]) benutzt mit den Pins PA9/PA10. Wenn die Boot-Pins auf einen separaten Jumper-Block gelegt werden, so könnte auch mit der ST Software ein Flash Update durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Hier die Erklärung warum es die BOOT-Pins nicht auf dem JTAG-Stecker benötigt. Ich habe mir einen eigenen Bootloader geschrieben, der kommt ohne das&lt;br /&gt;
Interne Boot-ROM (und ohne die BOOT-Pins) aus. Ich habe den in die ersten 8KB Flash programmiert.&lt;br /&gt;
* Das PC-Programm senden über den UART den Befehl &amp;quot;GoTo Bootloader&amp;quot;, damit wird mein Bootloader angesprungen.&lt;br /&gt;
* Dann sendet das PC Programm die Update-Daten.&lt;br /&gt;
* Wenn fertig, dann geht es zurück in die Applikation.&lt;br /&gt;
* Der Bootloader ist immer beim Einschalten des Boards aktiv. Sobald eine Tastenkombination gedrückt wird, bleibt er &amp;quot;hängen&amp;quot; und irgend welche LEDs blinken. Also wenn das Flash &amp;quot;Zerschossen&amp;quot; sein sollte kann man mit einem Restart/Tasten den Bootloader aktivieren und erneut den Update ausführen.&lt;br /&gt;
* Der ST eigene Bootloader hat mir nicht gefallen, weil da keine LED&#039;s Blinken und dem User sagen, &amp;quot;Hallo ich lebe und bin im Bootloader&amp;quot;.&lt;br /&gt;
* Wenn die Tasten beim Einschalten nicht gedrückt werden, dann springt der Bootloader in die Applikation&lt;br /&gt;
* Der Bootloader kann jeden beliebigen UART nutzen.&lt;br /&gt;
&lt;br /&gt;
==== Die Adapterplatine ====&lt;br /&gt;
Mit der Adapterplatine kann von dem 10-poligen Stecker auf einen 20-poligen Standard JTAG Stecker verbunden werden. Zusätzlich ist hier ein TTL/V24 Wandler integriert um die UART Signale auf V24 um zu setzen. Hier kann der Schaltplan/Layout geladen werden: [[Datei:10-Pol-JTAG.zip]]&lt;br /&gt;
Die Platine ist 33×19mm klein.&lt;br /&gt;
&lt;br /&gt;
=== 10-pin JTAG im 20&#039;tel-Zoll Raster ===&lt;br /&gt;
&lt;br /&gt;
* Forumsbeitrag [http://www.mikrocontroller.net/topic/188659#1836129 &amp;quot;neuer JTAG-Stecker für ARM&amp;quot;]&lt;br /&gt;
* [http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm Keil ULINK2] (und Pinouts anderer JTAG-Stecker)&lt;br /&gt;
&lt;br /&gt;
== MSP430 JTAG ==&lt;br /&gt;
&lt;br /&gt;
Anschluß an Parallelport: &lt;br /&gt;
* [http://elmicro.com/files/olimex/msp430-jtag-d.pdf Olimex MSP430 JTAG (PDF)] bzw. ([http://www.olimex.com/dev/images/msp430-jtag-d-sch.gif (GIF)]). Siehe auch Diskussion im [http://www.mikrocontroller.net/topic/57208#442620 Forum].&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/90754#776070 Forumsbeitrag] mit Anhang eines chinesischen? Schaltplans (PDF)&lt;br /&gt;
&lt;br /&gt;
Anschluß an USB/Seriell:&lt;br /&gt;
* [http://goodfet.sourceforge.net/ GoodFET] von Travis Goodspeed. The GoodFET is an open source tool for programming microcontrollers and memories by [[SPI]], [[I2C]], JTAG ([[MSP430]], [[ARM]]), and a slew of vendor-proprietary protocols. (Stub für [http://events.ccc.de/congress/2009/Fahrplan/events/3490.en.html 26C3 Vortrag])&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Für Xilinx&lt;br /&gt;
** [http://www.freewebs.com/lykos1986/cpldprogrammer.htm Xilinx JTAG programmer] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.embedded-projects.net/index.php?page_id=157 Xilinx JTAG XSVF Player mit USBprog] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter Xilinx Platform Cable I Nachbau] - Nachbau des Originalem Xilinx Platform Cable I (DLC9)&lt;br /&gt;
** [http://warmcat.com/milksop/cheaptag.html Cheaptag] - Xilinx Parallel Jtag programming cable&lt;br /&gt;
** [http://embdev.net/topic/139121#new XSVF Player FTDI Bitbang] - XSVF Player with FTDI Bitbang mode&lt;br /&gt;
** [https://play.google.com/store/apps/details?id=com.wesche.xsvf XSVF Player FTDI Bitbang for Android] - XSVF Player with FTDI Bitbang mode for Android&lt;br /&gt;
&lt;br /&gt;
* Für Altera&lt;br /&gt;
** [http://translate.google.com/translate?js=n&amp;amp;prev=_t&amp;amp;hl=en&amp;amp;ie=UTF-8&amp;amp;layout=2&amp;amp;eotf=1&amp;amp;sl=auto&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Fmarsohod.org%2Findex.php%2Fourblog%2F11-blog%2F163-marsblaster Marsblaster] für Altera FPGA, serieller Port&lt;br /&gt;
** [http://www.altera.com/literature/ug/ug_bbii.pdf ALTERA ByteBlaster]&lt;br /&gt;
** [http://www.entner-electronics.com/tl/index.php/eeblaster.html EEBlaster], sehr günstig, kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
** [http://www.pyroelectro.com/tutorials/byteblaster/index.html Build A ByteBlaster] bei www.pyroelectro.com&lt;br /&gt;
** [http://www.ixo.de/info/usb_jtag/ USB-JTAG-Adapter], kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
&lt;br /&gt;
* ColdFire BDM Pod&lt;br /&gt;
** [http://forums.freescale.com/t5/68K-ColdFire-reg-Microprocessors/TBLCF-open-source-debugging-cable/m-p/7543 TBLCF open source debugging cable]&lt;br /&gt;
** [http://www.rockbox.org/wiki/IriverBDM IriverBDM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- VERALTETE LINKS - PRODUKTE WERDEN DORT NICHT GEFUNDEN&lt;br /&gt;
* FCPU-X Platform Cable USB JTAG cable&lt;br /&gt;
** Bezugsquelle (DE): [http://www.vht-impex-shop.de/product_info.php?info=p786_HW-USB-platform-cable--FCPU-X-platform-cable-similar-to-HW-USB-Kabel-for-Xilinx-evaluation-boards-etc-.html&amp;amp;XTCsid=e613a7119493deac52e83e9038ce131a http://www.vht-impex-shop.de]&lt;br /&gt;
** Bezugsquelle (US): [http://www.celeritous.com/estore/index.php?main_page=product_info&amp;amp;cPath=1&amp;amp;products_id=129 http://www.celeritous.com] &lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Universal JTAG Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Versaloon ===&lt;br /&gt;
&lt;br /&gt;
[http://www.versaloon.com/ Versaloon] is a full-opensource multi-functional platform based on generic USB_TO_XXX protocol, which can now support more than 10 kinds of interfaces including [[ISP]], [[JTAG]], SWD, [[SPI]], [[IIC]] and so on. Programming is supported for: &lt;br /&gt;
* STM8 support(SWIM)&lt;br /&gt;
* STM32 support(ISP/JTAG/SWD) siehe auch Forumbeitrag von Bingo [http://www.mikrocontroller.net/topic/202785]&lt;br /&gt;
* LPC1000 support(ISP/JTAG/SWD)&lt;br /&gt;
* LM3S support(JTAG/SWD)&lt;br /&gt;
* AT91SAM3 support(JTAG/SWD)&lt;br /&gt;
* AT89S5X support(ISP)&lt;br /&gt;
* PSOC1 support(ISSP)&lt;br /&gt;
* MSP430(without TEST) support(JTAG)&lt;br /&gt;
* C8051F support(C2/JTAG)&lt;br /&gt;
* AVR8 support(ISP/JTAG)&lt;br /&gt;
* LPC900 support(ICP)&lt;br /&gt;
* HCS08 support(BDM)&lt;br /&gt;
* HCS12(X) support(BDM)&lt;br /&gt;
* SVF support(JTAG)&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [[AVR-Studio]] (Windows)&lt;br /&gt;
* [[GDB]] in Verbindung mit [http://avarice.sourceforge.net/ AVaRICE] und AVR JTAGICE kompatibler Hardware. (Linux)&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [[GDB]] bzw. Insight und auf die ARM JTAG Hardware abgestimmte GDB-Server (OCDRemote, [http://openocd.berlios.de/ OpenOCD], BDI2000, Peedi)&lt;br /&gt;
* [http://www.hjtag.com/ H-JTAG] und RDI-kompatible Debugger (SDT2.51, ADS1.2, RealView and IAR)&lt;br /&gt;
* Herstellerspezifische Software z.&amp;amp;nbsp;B. von Lauterbach&lt;br /&gt;
* Komplette Open Source Toolchain [https://bitrelle.files.wordpress.com/2012/05/bitrelle_programming_eclipse.pdf Eclipse-GDB-OpenOCD], läuft auf Linux/Windows/Mac&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Altera: Quartus Programmer (quartus_pgm)&lt;br /&gt;
* Lattice: ToDo... (Lattice setzt seit 2011 auf die JTAG-Funktionalität des FT2232 und benötigt daher keine speziellen USB-JTAG-Adapter mehr)&lt;br /&gt;
* Xilinx: Impact, xc3sprog, ...&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Tools ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.topjtag.com TopJTAG]: boundary-scan software for circuit debugging and flash programming.&lt;br /&gt;
* [http://www.ricreations.com/index.html Universal Scan]&lt;br /&gt;
* [http://urjtag.org UrJTAG]: Kommandozeilentool für Boundary Scan, FPGA und CPLD und Speicher lesen und schreiben u.v.a.m., Nachfolger von openwince JTAG Tools.&lt;br /&gt;
* [http://www.gojtag.com/ goJTAG]: graphisches Boundary-Scan-Tool zum manuellen Durchtesten von Verbindungen, besonders für Nicht-JTAG-Experten geeignet. Obwohl in Java geschrieben, funktioniert es nur unter Windows. Funktioniert im Prinzip mit allen FT2232(H) basierten Adaptern.&lt;br /&gt;
* [http://andreas-weschenfelder.de.vu FT2232 BoundaryScan Tool]: free boundary-scan software for flash programming [S29GL128N, S29GL256N, S29GL512N, M25PX16, M25PX32, M25PX64, etc ].&lt;br /&gt;
&amp;lt;!-- link tot 20100521 * [http://www.rsn-tech.demon.co.uk/pjtag/pjtag.html Pesonal JTAG]: halbfertiges Hobbyprojekt, ist bissel buggy, aber kleine Sachen gehen damit. --&amp;gt;&lt;br /&gt;
* [http://www.blunk-electronic.de/products.html]: boundary scan test system M-1 for board and system testing, runs on Linux, open source, no licensing ! Read more on http://www.blunk-electronic.de/products.html&lt;br /&gt;
&lt;br /&gt;
= Weblinks =&lt;br /&gt;
&lt;br /&gt;
*Debugging the Linux kernel with JTAG] von Alexander Sirotkin [http://www.embedded.com/design/operating-systems/4207333/Debugging-the-Linux-kernel-with-JTAG] (LPC3250 mit FemtoLinux, OpenOCD)&lt;br /&gt;
*[http://hri.sourceforge.net/tools/jtag_faq_org.html JTAG FAQ] auf sourceforge.net&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR]]&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:FPGA und Co]]&lt;br /&gt;
[[Kategorie:Datenübertragung]]&lt;/div&gt;</summary>
		<author><name>Ralfiboy</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94751</id>
		<title>JTAG</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94751"/>
		<updated>2017-01-05T16:02:34Z</updated>

		<summary type="html">&lt;p&gt;Ralfiboy: /* ARM JTAG */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;J&#039;&#039;&#039;oint &#039;&#039;&#039;T&#039;&#039;&#039;est &#039;&#039;&#039;A&#039;&#039;&#039;ction &#039;&#039;&#039;G&#039;&#039;&#039;roup, entwickelte den Standard IEEE 1149.1. Das JTAG-Protokoll ermöglicht das Programmieren, Debuggen und Testen von ICs, [[Prozessor]]en und [[FPGA]]s direkt in der Schaltung.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2737 AVR JTAGICE] (gelegentlich auch &#039;&#039;JTAGICE mkI&#039;&#039; genannt) von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3353 AVR JTAGICE mkII] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=17213&amp;amp;category_id=163&amp;amp;family_id=682&amp;amp;subfamily_id=2138 AVR JTAGICE 3] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/tools/ATATMEL-ICE.aspx ATMEL-ICE] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3891 AVR Dragon] von Atmel.&lt;br /&gt;
** [http://www.atmel.com/dyn/resources/prod_documents/doc8112.pdf AVR077: Opto Isolated Emulation for the DebugWIRE] (auch für AVR JTAGICE mkII nützlich)&lt;br /&gt;
* [http://gandalf.arubi.uni-kl.de/avr_projects/evertool/index.html Evertool und Evertool light] von Martin Thomas. Evertool unterstützt JTAG analog zu AVR JTAGICE und [[ISP]] nach [[STK500]] Protokoll. Evertool light nur JTAG. &lt;br /&gt;
* [http://aquaticus.info/jtag JTAG for AVR processors] bei Aquaticus ROV. (Englisch)&lt;br /&gt;
* [http://www.olimex.com/dev/avr-jtag.html AVR-JTAG] und [http://www.olimex.com/dev/avr-usb-jtag.html AVR-USB-JTAG] von [http://www.olimex.com/dev/index.html Olimex] (kommerziell). Alternativer Lieferant ist der [http://elmicro.com/de/avrjtag.html Elektronikladen].&lt;br /&gt;
* [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/35 AVR-JTAG] und [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/52 AVR-USB-JTAG] von [http://www.gadgetPool.de gadgetPool] (kommerziell)&lt;br /&gt;
* [http://www.floppyspongeonline.com/automation/isojtagisp/isojtagisp.php IsoJtagISP] und [http://www.floppyspongeonline.com/automation/isojtag/isojtag.php IsoJTAG] von Floppy Sponge Automation ([[USB]], optisch isoliert). Hier eine modifizierte Version von [http://www.madwizard.org/electronics/projects/avrjtag Madwizard].&lt;br /&gt;
* [http://www.ere.co.th/(gs5afz55q5idyyn0a1ibkl45)/default.aspx?RedirectPage=Products&amp;amp;RedirectPage1=ProductsDetail&amp;amp;ProductID=56 JTAGAVRU1] (AVR JTAGICE kompatibel, USB, 1.8-5.5V) (existiert wohl nicht mehr ?)&lt;br /&gt;
* [http://www.avrfreaks.net/index.php?module=Freaks%20Tools&amp;amp;func=viewItem&amp;amp;item_id=630 JTAGcable II] (AVR JTAGICE kompatibel, USB, 1.8-6 V)&lt;br /&gt;
* [http://www.miklobit.com/JTAG_TWICE.530+B6Jkw9Mw__.0.html MB-JTAG-TWICE] (AVR JTAGICE kompatibel, RS232, 2.7-5.5V, +ISP STK500v2) - Free update to version compatible with AVR JTAG MKII (coming soon)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Programmer und Debugger für USB (MKI) &lt;br /&gt;
* link tot 20100521 [http://www.paktek-shop.de/epages/61807596.sf/de_DE/?ObjectPath=/Shops/61807596/Categories/Produkte/AVR-Programmer]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pinout AVR-JTAG ===&lt;br /&gt;
&lt;br /&gt;
AVR benutzt einen 10poligen IDC-Stecker mit 2,54 mm Pinabstand und folgendem Pinout:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE mkII&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| (frei) || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| Vcc || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bemerkungen:&lt;br /&gt;
&lt;br /&gt;
* VTref &#039;&#039;muss&#039;&#039; beschaltet werden, von dieser Spannung werden die Pegelwandler des JTAG-ICE gespeist, und das ICE weigert sich zu arbeiten wenn keine Spannung anliegt&lt;br /&gt;
* nTRST wird vom JTAG ICE nicht benutzt, soll aber aus Kompatibilität mit anderen JTAG-Implementierungen frei bleiben&lt;br /&gt;
* Pin 7 war in der ersten Version des Atmel JTAG ICE als &#039;&#039;Vsupply&#039;&#039; bezeichnet und diente dort der Speisung des JTAG ICE aus der Zielhardware&lt;br /&gt;
* nSRST muss nicht zwingend an &#039;&#039;/RESET&#039;&#039; des AVR gelegt werden; wenn er fehlt,  kann das JTAG ICE eine schlafende CPU nicht wecken oder mit einem Controller arbeiten, dessen JTAG-Schnittstelle von der Software außer Betrieb genommen worden ist (Bit &#039;&#039;JTD&#039;&#039; im Register &#039;&#039;MCUCSR&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
AVR-JTAG lässt sich mit anderen JTAG-Implementierungen (oder weiteren AVRs) zu einer &#039;&#039;daisy chain&#039;&#039; verketten; dabei schiebt jeder AVR 4 Bits.&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
=== USB Anschluss auf Basis des FTDI FT2232 ===&lt;br /&gt;
Diese Adapter funktionieren mit Opensource-Tools wie OpenOCD (ARM-Debugger), xc3sprog (Xilinx Programmer), urjtag (generisches JTAG-Tool), gojtag, etc. Manchmal sind leichte Anpassungen des Source nötig. Bei einigen Adaptern ist auch die serielle Schnittstelle (3.3V-Level) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
* [http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/usbjtag/usbjtag.html USB to JTAG Interface] von Hubert Högl, Schaltplan&lt;br /&gt;
* [http://www.embedded-projects.net/index.php?page_id=175 USB JTAG Interface für usbprog und OpenOCD] von Benedikt Sauter (Zurzeit gibt es Bausätze für 22€. Der Adapter ist ein Universaladapter der mit verschiedenen Firmwares zu verschiedenen Geräte werden kann. Pläne, Quelltexte usw... Open Source!!!)&lt;br /&gt;
* [http://www.amontec.com/ Amontec] JTAGkey, JTAGkey-Tiny&lt;br /&gt;
* [http://section5.ch/icebear ICEbear] ICEbear (Plus|Light) JTAG adapter, spezielle Unterstützung für Flashen/Debuggen von Analog Devices Blackfin-Plattformen.&lt;br /&gt;
* [http://www.luminarymicro.com/products/ekk-lm3s811_evaluation_kit.html EKK-LM3S811] von LMI. Auf dem Testboard ist ein &amp;quot;on-board&amp;quot; JTAG-Adapter, der zu Ansteuerung des LM3S811 auf dem Board genutzt wird, aber auch an externe Controller angeschlossen werden kann. (Alle LMI Testboards verfügen über den JTAG Ein- und Ausgang.)&lt;br /&gt;
*[http://www.segger.com/cms/jlink.html SEGGER J-Link] sehr professioneller schneller JTAG Adapter. Für nichtkommerziellen Einsatz gibt es den J-Link Edu schon für 50€.&lt;br /&gt;
* [http://www.olimex.com/dev/arm-usb-ocd.html ARM-USB-OCD] von Olimex&lt;br /&gt;
* [http://www.signalyzer.com/ Xverve Signalyzer Tool]&lt;br /&gt;
* [http://bitrelle.wordpress.com/jtagbox/ Bitrelle JTAGkey]&lt;br /&gt;
&lt;br /&gt;
=== Parallelport-Anschluss (Wiggler und Wiggler-&amp;quot;kompatibel&amp;quot;) ===&lt;br /&gt;
* [http://www.macraigor.com/hwproducts.htm Macraigor] Original Wiggler&lt;br /&gt;
* [http://www.olimex.com/dev/arm-jtag.html Olimex ARM-JTAG] Wiggler-Nachbau&lt;br /&gt;
* [http://www.k9spud.com/jtag/ k9spud Wiggler-Schaltplan]&lt;br /&gt;
* [http://web.archive.org/web/20060411074457/http://bbs.circuitcellar.com/phpBB2/viewtopic.php?p=10059&amp;amp; bigakis Wiggler-Schaltplan] (74HC244 Levelshifter, BC547 Transistor zum Invertieren)(&#039;&#039;&#039;Webarchiv-Link&#039;&#039;&#039;,Orginal gelöscht)&lt;br /&gt;
* [http://wiki.openwrt.org/doc/hardware/port.jtag.cables Wiggler Schaltplan] von OpenWRT (ebenfalls mit 74HC244). &lt;br /&gt;
* [http://www.st.com/stonline/products/literature/um/12322.pdf ST FlashLink JTAG Programming Cable] STM Application-Note&lt;br /&gt;
&lt;br /&gt;
Man findet einige Schaltpläne für Wiggler-Nachbauten im Netz. Nicht alle sind identisch. Der original Schaltplan von Macraigor ist meines (M. Thomas) Wissens nicht verfügbar. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vollständige&amp;quot; Belegung des Wiggler-Clones von Olimex (Quelle: sparkfun-Forum)&lt;br /&gt;
* DB25.2 → INVERSE → JTAG.15 (NTRST) (mthomas: hier ist wohl nSRST gemeint)&lt;br /&gt;
* DB25.3 → JTAG.7 (TMS)&lt;br /&gt;
* DB25.4 → JTAG.9 (TCK)&lt;br /&gt;
* DB25.5 → JTAG.5 (TDI)&lt;br /&gt;
* DB25.6 → JTAG.3 (TRST)&lt;br /&gt;
* DB25.9 → VCC for the Level shifter i.e. JTAG enable/disable&lt;br /&gt;
* DB25.11 ← JTAG.13 (TDO)&lt;br /&gt;
* DB25.13 ← Target VCC sense (only when JTAG is enabled i.e. DB26.9 = 1) &lt;br /&gt;
&lt;br /&gt;
DB25.18, DB25.19, DB25.20, DB25.21, DB25.22, DB25.23, DB25.24, DB25.25 werden mit GND verbunden.&lt;br /&gt;
&lt;br /&gt;
Soll das Wiggler-Interface auch mit der Software ocdremote von Macraigor genutzt werden, ist eine Brücke zwischen zwischen DB25.8 und DB25.15 einzubauen. ocdremote ab (ca.) Version 2.06 erkennt daran das original Wiggler und auch einen mit der Brücke ausgestattenen Nachbau. Nutzt man zur Ansteuerung andere Software (z.&amp;amp;nbsp;B. OpenOCD oder H-JTAG) wird diese Verbindung nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
Man beachte die Beschaltung von SRST und TRST: &lt;br /&gt;
&lt;br /&gt;
Üblicherweise wird Pin DB25.2 des Druckeranschlusses über eine Inverterschaltung (NPN Transistor) mit dem Reset-Pin des ARM-Controllers verbunden (&#039;&#039;&#039;nSRST&#039;&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
Pin DB25.6 des Druckeranschlusses wird über Levelshifter direkt mit dem &#039;&#039;&#039;TRST&#039;&#039;&#039;-Pin des Controllers verbunden. In manchen Schaltplänen findet man auch für TRST einen Inverter, aber dies scheint eher unüblich. &lt;br /&gt;
&lt;br /&gt;
Bei den sonstigen Pinbelegungen herrscht weitestgehend Einigkeit. Man muss lediglich Levelshifter ([[Pegelwandler]]) zwischenschalten, um zwischen den 5V des Druckeranschlusses und der Spannung des Controllers (üblicherweise 3,3V) zu &amp;quot;übersetzen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Allein ein 74HC244 als Levelshifter, wie in vielen Schaltungen verwendet, ist nicht ideal. Der Baustein wird dabei mit 3,3V aus der Zielschaltung betrieben und die Anpassung an die nominell 5V vom Druckerport an die 3,3V des HC244 erfolgt entweder durch Spannungsteiler oder durch Strombegrenzungswiderstände und die internen Überspannungsschutzdioden. Das Ausgangssignal TDO zurück zum Druckeranschluss ist maximal 3,3V. Beides nicht optimal aber es funktioniert zumindest meistens. Aufwändigere Schaltungen, wie z.&amp;amp;nbsp;B. der Olimex Wiggler-Nachbau (&amp;quot;ARM-JTAG&amp;quot;), nutzen eine Kombination aus einem 74AC244 und einem 74LCX244.&lt;br /&gt;
&lt;br /&gt;
=== sonstige ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ARM-JTAG-COOCOX/ ARM-JTAG-COOCOX], CoLinkEX Nachbau von Olimex, unterstützt JTAG sowie SWD&lt;br /&gt;
** [http://www.coocox.org/colinkEx.htm unterstützte uC]&lt;br /&gt;
** unterstütze IDEs: [http://www.keil.com/arm/mdk.asp Keil MDK-ARM 4.03] oder neuer, [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR Embedded Workbench 5.xx] oder neuer sowie die [http://www.coocox.org/CooCox_CoIDE.htm CooCox CoIDE]&lt;br /&gt;
&lt;br /&gt;
* Abatron BDI2000&lt;br /&gt;
* [http://www.amontec.com/index.shtml Amontec] JTAG Accelerator, Chameleon POD&lt;br /&gt;
* AZ-Electronics&lt;br /&gt;
* JtagConnection&lt;br /&gt;
* [http://www.lauterbach.de/mindex.html Lauterbach] Trace&lt;br /&gt;
* Macraigor Systems LLS&lt;br /&gt;
* Peedi&lt;br /&gt;
* Rowley Associates CrossConnect&lt;br /&gt;
* [http://bitrelle.wordpress.com/jtagbox/ Bitrelle JTAGkey]&lt;br /&gt;
&lt;br /&gt;
=== Anschlussbelegung ===&lt;br /&gt;
&lt;br /&gt;
Auf Evaluation-Boards verschiedener Hersteller (z.&amp;amp;nbsp;B. Atmel, IAR, Keil, Olimex) ist die JTAG-Schnittstelle über einen 20-poligen Wannenstecker (2·10, Raster 2,54mm) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 NC  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 nTRST&lt;br /&gt;
 | 4 GND &lt;br /&gt;
 |-&lt;br /&gt;
 | 5 TDI&lt;br /&gt;
 | 6 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 TMS&lt;br /&gt;
 | 8 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 TCK&lt;br /&gt;
 | 10 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 11 GND&lt;br /&gt;
 | 12 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 13 TDO&lt;br /&gt;
 | 14 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 15 nRESET/nSRST&lt;br /&gt;
 | 16 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 17 NC&lt;br /&gt;
 | 18 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 19 NC&lt;br /&gt;
 | 20 GND&lt;br /&gt;
 |-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Neuerdings propagiert ARM eine sehr kompakte Variante mit 2·5 Pins in einem 1,27 mm Raster:&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 RTCK&lt;br /&gt;
 | 8 TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GND&lt;br /&gt;
 | 10 nRESET/nSRST&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Daneben existiert noch eine weniger gebräuchliche aber dokumentierte Variante mit 14 Polen (2·7). &lt;br /&gt;
&lt;br /&gt;
Bei fertigen Geräten, für die keine Schaltpläne vorliegen, muss man sich die herstellerspezifische Anschlussbelegung anhand des Datenblatts des verwendeten Controllers und mittels Messgerät selbst ermitteln.&lt;br /&gt;
&lt;br /&gt;
=== Cortex Debug Connectors von ARM ===&lt;br /&gt;
&lt;br /&gt;
[http://infocenter.arm.com/help/topic/com.arm.doc.faqs/attached/13634/cortex_debug_connectors.pdf In diesem PDF Dokument hat ARM die Anschlussbelegung für Cortex-Prozessoren definiert.]&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 SWDIO/TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 SWDCLK/TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 SWO/TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 Key (kein Pin)&lt;br /&gt;
 | 8 NC/TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GNDDetect&lt;br /&gt;
 | 10 nRESET&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Der 10-polige JTAG Stecker von mmvisual (ARM, Cortex, Seriell kombiniert) ===&lt;br /&gt;
mmvisual hat mit dieser Steckerbelegung die Standard JTAG Schnittstelle erweitert:&lt;br /&gt;
&lt;br /&gt;
Ich habe einen 10-poligen Debug-Stecker entworfen, der alle Varianten sowie einen [[UART]]-Anschluss enthält und die Pins optimal angeordnet sind. Mit diesem Stecker können ARM7/9 und Cortex CPUs programmiert werden. An allen JTAG-Steckervarianten fehlen leider Funktionen, bzw. die Pins waren nicht optimal angeordnet. Daher habe ich den &amp;quot;perfekten&amp;quot; Stecker designt der viele Funktionen beinhaltet.&lt;br /&gt;
&lt;br /&gt;
[[bild:jtag-debug-port10.png]]&lt;br /&gt;
&lt;br /&gt;
==== Die Funktionen ====&lt;br /&gt;
* JTAG&lt;br /&gt;
* SWD&lt;br /&gt;
* Debug-UART-Anschluss (verbunden mit einem freien UART vom [[STM32]]) (alternativ ein MAX232 Chip dazwischen schalten)&lt;br /&gt;
* Weniger Platzbedarf auf der Platine (Standard-JTAG 20 Polig)&lt;br /&gt;
* Über 4-Poligen Würfel kann der UART benutzt werden (Pin 7/8/9/10)&lt;br /&gt;
* Es kann ein Jumper gesteckt werden für eine Option (Pin 9/10) ohne dass es sich mit dem RS232 Chip beißt (sofern er eingebaut wurde)&lt;br /&gt;
* Über einen 5-Poligen einreihigen Stecker kann SWD verwendet werden (Pin 1/3/5/7/9)&lt;br /&gt;
* den ganzen Stecker braucht es nur, wenn man den herkömmlichen JTAG nutzen möchte.&lt;br /&gt;
* Kurzschlussschutz, da GND und +3V3 nicht gegenüber liegen&lt;br /&gt;
&lt;br /&gt;
In all meinen Projekten verwende ich nur noch diese Anordnung, denn sie ist einfach praktisch. Alles drauf und die Pins sind perfekt angeordnet für jede Art der Anwendung.&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist der UART 1 ([[STM32]]) benutzt mit den Pins PA9/PA10. Wenn die Boot-Pins auf einen separaten Jumper-Block gelegt werden, so könnte auch mit der ST Software ein Flash Update durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Hier die Erklärung warum es die BOOT-Pins nicht auf dem JTAG-Stecker benötigt. Ich habe mir einen eigenen Bootloader geschrieben, der kommt ohne das&lt;br /&gt;
Interne Boot-ROM (und ohne die BOOT-Pins) aus. Ich habe den in die ersten 8KB Flash programmiert.&lt;br /&gt;
* Das PC-Programm senden über den UART den Befehl &amp;quot;GoTo Bootloader&amp;quot;, damit wird mein Bootloader angesprungen.&lt;br /&gt;
* Dann sendet das PC Programm die Update-Daten.&lt;br /&gt;
* Wenn fertig, dann geht es zurück in die Applikation.&lt;br /&gt;
* Der Bootloader ist immer beim Einschalten des Boards aktiv. Sobald eine Tastenkombination gedrückt wird, bleibt er &amp;quot;hängen&amp;quot; und irgend welche LEDs blinken. Also wenn das Flash &amp;quot;Zerschossen&amp;quot; sein sollte kann man mit einem Restart/Tasten den Bootloader aktivieren und erneut den Update ausführen.&lt;br /&gt;
* Der ST eigene Bootloader hat mir nicht gefallen, weil da keine LED&#039;s Blinken und dem User sagen, &amp;quot;Hallo ich lebe und bin im Bootloader&amp;quot;.&lt;br /&gt;
* Wenn die Tasten beim Einschalten nicht gedrückt werden, dann springt der Bootloader in die Applikation&lt;br /&gt;
* Der Bootloader kann jeden beliebigen UART nutzen.&lt;br /&gt;
&lt;br /&gt;
==== Die Adapterplatine ====&lt;br /&gt;
Mit der Adapterplatine kann von dem 10-poligen Stecker auf einen 20-poligen Standard JTAG Stecker verbunden werden. Zusätzlich ist hier ein TTL/V24 Wandler integriert um die UART Signale auf V24 um zu setzen. Hier kann der Schaltplan/Layout geladen werden: [[Datei:10-Pol-JTAG.zip]]&lt;br /&gt;
Die Platine ist 33×19mm klein.&lt;br /&gt;
&lt;br /&gt;
=== 10-pin JTAG im 20&#039;tel-Zoll Raster ===&lt;br /&gt;
&lt;br /&gt;
* Forumsbeitrag [http://www.mikrocontroller.net/topic/188659#1836129 &amp;quot;neuer JTAG-Stecker für ARM&amp;quot;]&lt;br /&gt;
* [http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm Keil ULINK2] (und Pinouts anderer JTAG-Stecker)&lt;br /&gt;
&lt;br /&gt;
== MSP430 JTAG ==&lt;br /&gt;
&lt;br /&gt;
Anschluß an Parallelport: &lt;br /&gt;
* [http://elmicro.com/files/olimex/msp430-jtag-d.pdf Olimex MSP430 JTAG (PDF)] bzw. ([http://www.olimex.com/dev/images/msp430-jtag-d-sch.gif (GIF)]). Siehe auch Diskussion im [http://www.mikrocontroller.net/topic/57208#442620 Forum].&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/90754#776070 Forumsbeitrag] mit Anhang eines chinesischen? Schaltplans (PDF)&lt;br /&gt;
&lt;br /&gt;
Anschluß an USB/Seriell:&lt;br /&gt;
* [http://goodfet.sourceforge.net/ GoodFET] von Travis Goodspeed. The GoodFET is an open source tool for programming microcontrollers and memories by [[SPI]], [[I2C]], JTAG ([[MSP430]], [[ARM]]), and a slew of vendor-proprietary protocols. (Stub für [http://events.ccc.de/congress/2009/Fahrplan/events/3490.en.html 26C3 Vortrag])&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Für Xilinx&lt;br /&gt;
** [http://www.freewebs.com/lykos1986/cpldprogrammer.htm Xilinx JTAG programmer] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.embedded-projects.net/index.php?page_id=157 Xilinx JTAG XSVF Player mit USBprog] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter Xilinx Platform Cable I Nachbau] - Nachbau des Originalem Xilinx Platform Cable I (DLC9)&lt;br /&gt;
** [http://warmcat.com/milksop/cheaptag.html Cheaptag] - Xilinx Parallel Jtag programming cable&lt;br /&gt;
** [http://embdev.net/topic/139121#new XSVF Player FTDI Bitbang] - XSVF Player with FTDI Bitbang mode&lt;br /&gt;
** [https://play.google.com/store/apps/details?id=com.wesche.xsvf XSVF Player FTDI Bitbang for Android] - XSVF Player with FTDI Bitbang mode for Android&lt;br /&gt;
&lt;br /&gt;
* Für Altera&lt;br /&gt;
** [http://translate.google.com/translate?js=n&amp;amp;prev=_t&amp;amp;hl=en&amp;amp;ie=UTF-8&amp;amp;layout=2&amp;amp;eotf=1&amp;amp;sl=auto&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Fmarsohod.org%2Findex.php%2Fourblog%2F11-blog%2F163-marsblaster Marsblaster] für Altera FPGA, serieller Port&lt;br /&gt;
** [http://www.altera.com/literature/ug/ug_bbii.pdf ALTERA ByteBlaster]&lt;br /&gt;
** [http://www.entner-electronics.com/tl/index.php/eeblaster.html EEBlaster], sehr günstig, kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
** [http://www.pyroelectro.com/tutorials/byteblaster/index.html Build A ByteBlaster] bei www.pyroelectro.com&lt;br /&gt;
** [http://www.ixo.de/info/usb_jtag/ USB-JTAG-Adapter], kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
&lt;br /&gt;
* ColdFire BDM Pod&lt;br /&gt;
** [http://forums.freescale.com/t5/68K-ColdFire-reg-Microprocessors/TBLCF-open-source-debugging-cable/m-p/7543 TBLCF open source debugging cable]&lt;br /&gt;
** [http://www.rockbox.org/wiki/IriverBDM IriverBDM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- VERALTETE LINKS - PRODUKTE WERDEN DORT NICHT GEFUNDEN&lt;br /&gt;
* FCPU-X Platform Cable USB JTAG cable&lt;br /&gt;
** Bezugsquelle (DE): [http://www.vht-impex-shop.de/product_info.php?info=p786_HW-USB-platform-cable--FCPU-X-platform-cable-similar-to-HW-USB-Kabel-for-Xilinx-evaluation-boards-etc-.html&amp;amp;XTCsid=e613a7119493deac52e83e9038ce131a http://www.vht-impex-shop.de]&lt;br /&gt;
** Bezugsquelle (US): [http://www.celeritous.com/estore/index.php?main_page=product_info&amp;amp;cPath=1&amp;amp;products_id=129 http://www.celeritous.com] &lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Universal JTAG Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Versaloon ===&lt;br /&gt;
&lt;br /&gt;
[http://www.versaloon.com/ Versaloon] is a full-opensource multi-functional platform based on generic USB_TO_XXX protocol, which can now support more than 10 kinds of interfaces including [[ISP]], [[JTAG]], SWD, [[SPI]], [[IIC]] and so on. Programming is supported for: &lt;br /&gt;
* STM8 support(SWIM)&lt;br /&gt;
* STM32 support(ISP/JTAG/SWD) siehe auch Forumbeitrag von Bingo [http://www.mikrocontroller.net/topic/202785]&lt;br /&gt;
* LPC1000 support(ISP/JTAG/SWD)&lt;br /&gt;
* LM3S support(JTAG/SWD)&lt;br /&gt;
* AT91SAM3 support(JTAG/SWD)&lt;br /&gt;
* AT89S5X support(ISP)&lt;br /&gt;
* PSOC1 support(ISSP)&lt;br /&gt;
* MSP430(without TEST) support(JTAG)&lt;br /&gt;
* C8051F support(C2/JTAG)&lt;br /&gt;
* AVR8 support(ISP/JTAG)&lt;br /&gt;
* LPC900 support(ICP)&lt;br /&gt;
* HCS08 support(BDM)&lt;br /&gt;
* HCS12(X) support(BDM)&lt;br /&gt;
* SVF support(JTAG)&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [[AVR-Studio]] (Windows)&lt;br /&gt;
* [[GDB]] in Verbindung mit [http://avarice.sourceforge.net/ AVaRICE] und AVR JTAGICE kompatibler Hardware. (Linux)&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [[GDB]] bzw. Insight und auf die ARM JTAG Hardware abgestimmte GDB-Server (OCDRemote, [http://openocd.berlios.de/ OpenOCD], BDI2000, Peedi)&lt;br /&gt;
* [http://www.hjtag.com/ H-JTAG] und RDI-kompatible Debugger (SDT2.51, ADS1.2, RealView and IAR)&lt;br /&gt;
* Herstellerspezifische Software z.&amp;amp;nbsp;B. von Lauterbach&lt;br /&gt;
* Komplette Open Source Toolchain [https://bitrelle.files.wordpress.com/2012/05/bitrelle_programming_eclipse.pdf Eclipse-GDB-OpenOCD]&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Altera: Quartus Programmer (quartus_pgm)&lt;br /&gt;
* Lattice: ToDo... (Lattice setzt seit 2011 auf die JTAG-Funktionalität des FT2232 und benötigt daher keine speziellen USB-JTAG-Adapter mehr)&lt;br /&gt;
* Xilinx: Impact, xc3sprog, ...&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Tools ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.topjtag.com TopJTAG]: boundary-scan software for circuit debugging and flash programming.&lt;br /&gt;
* [http://www.ricreations.com/index.html Universal Scan]&lt;br /&gt;
* [http://urjtag.org UrJTAG]: Kommandozeilentool für Boundary Scan, FPGA und CPLD und Speicher lesen und schreiben u.v.a.m., Nachfolger von openwince JTAG Tools.&lt;br /&gt;
* [http://www.gojtag.com/ goJTAG]: graphisches Boundary-Scan-Tool zum manuellen Durchtesten von Verbindungen, besonders für Nicht-JTAG-Experten geeignet. Obwohl in Java geschrieben, funktioniert es nur unter Windows. Funktioniert im Prinzip mit allen FT2232(H) basierten Adaptern.&lt;br /&gt;
* [http://andreas-weschenfelder.de.vu FT2232 BoundaryScan Tool]: free boundary-scan software for flash programming [S29GL128N, S29GL256N, S29GL512N, M25PX16, M25PX32, M25PX64, etc ].&lt;br /&gt;
&amp;lt;!-- link tot 20100521 * [http://www.rsn-tech.demon.co.uk/pjtag/pjtag.html Pesonal JTAG]: halbfertiges Hobbyprojekt, ist bissel buggy, aber kleine Sachen gehen damit. --&amp;gt;&lt;br /&gt;
* [http://www.blunk-electronic.de/products.html]: boundary scan test system M-1 for board and system testing, runs on Linux, open source, no licensing ! Read more on http://www.blunk-electronic.de/products.html&lt;br /&gt;
&lt;br /&gt;
= Weblinks =&lt;br /&gt;
&lt;br /&gt;
*Debugging the Linux kernel with JTAG] von Alexander Sirotkin [http://www.embedded.com/design/operating-systems/4207333/Debugging-the-Linux-kernel-with-JTAG] (LPC3250 mit FemtoLinux, OpenOCD)&lt;br /&gt;
*[http://hri.sourceforge.net/tools/jtag_faq_org.html JTAG FAQ] auf sourceforge.net&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR]]&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:FPGA und Co]]&lt;br /&gt;
[[Kategorie:Datenübertragung]]&lt;/div&gt;</summary>
		<author><name>Ralfiboy</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94750</id>
		<title>JTAG</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94750"/>
		<updated>2017-01-05T15:54:32Z</updated>

		<summary type="html">&lt;p&gt;Ralfiboy: /* USB Anschluss auf Basis des FTDI FT2232 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;J&#039;&#039;&#039;oint &#039;&#039;&#039;T&#039;&#039;&#039;est &#039;&#039;&#039;A&#039;&#039;&#039;ction &#039;&#039;&#039;G&#039;&#039;&#039;roup, entwickelte den Standard IEEE 1149.1. Das JTAG-Protokoll ermöglicht das Programmieren, Debuggen und Testen von ICs, [[Prozessor]]en und [[FPGA]]s direkt in der Schaltung.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2737 AVR JTAGICE] (gelegentlich auch &#039;&#039;JTAGICE mkI&#039;&#039; genannt) von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3353 AVR JTAGICE mkII] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=17213&amp;amp;category_id=163&amp;amp;family_id=682&amp;amp;subfamily_id=2138 AVR JTAGICE 3] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/tools/ATATMEL-ICE.aspx ATMEL-ICE] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3891 AVR Dragon] von Atmel.&lt;br /&gt;
** [http://www.atmel.com/dyn/resources/prod_documents/doc8112.pdf AVR077: Opto Isolated Emulation for the DebugWIRE] (auch für AVR JTAGICE mkII nützlich)&lt;br /&gt;
* [http://gandalf.arubi.uni-kl.de/avr_projects/evertool/index.html Evertool und Evertool light] von Martin Thomas. Evertool unterstützt JTAG analog zu AVR JTAGICE und [[ISP]] nach [[STK500]] Protokoll. Evertool light nur JTAG. &lt;br /&gt;
* [http://aquaticus.info/jtag JTAG for AVR processors] bei Aquaticus ROV. (Englisch)&lt;br /&gt;
* [http://www.olimex.com/dev/avr-jtag.html AVR-JTAG] und [http://www.olimex.com/dev/avr-usb-jtag.html AVR-USB-JTAG] von [http://www.olimex.com/dev/index.html Olimex] (kommerziell). Alternativer Lieferant ist der [http://elmicro.com/de/avrjtag.html Elektronikladen].&lt;br /&gt;
* [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/35 AVR-JTAG] und [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/52 AVR-USB-JTAG] von [http://www.gadgetPool.de gadgetPool] (kommerziell)&lt;br /&gt;
* [http://www.floppyspongeonline.com/automation/isojtagisp/isojtagisp.php IsoJtagISP] und [http://www.floppyspongeonline.com/automation/isojtag/isojtag.php IsoJTAG] von Floppy Sponge Automation ([[USB]], optisch isoliert). Hier eine modifizierte Version von [http://www.madwizard.org/electronics/projects/avrjtag Madwizard].&lt;br /&gt;
* [http://www.ere.co.th/(gs5afz55q5idyyn0a1ibkl45)/default.aspx?RedirectPage=Products&amp;amp;RedirectPage1=ProductsDetail&amp;amp;ProductID=56 JTAGAVRU1] (AVR JTAGICE kompatibel, USB, 1.8-5.5V) (existiert wohl nicht mehr ?)&lt;br /&gt;
* [http://www.avrfreaks.net/index.php?module=Freaks%20Tools&amp;amp;func=viewItem&amp;amp;item_id=630 JTAGcable II] (AVR JTAGICE kompatibel, USB, 1.8-6 V)&lt;br /&gt;
* [http://www.miklobit.com/JTAG_TWICE.530+B6Jkw9Mw__.0.html MB-JTAG-TWICE] (AVR JTAGICE kompatibel, RS232, 2.7-5.5V, +ISP STK500v2) - Free update to version compatible with AVR JTAG MKII (coming soon)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Programmer und Debugger für USB (MKI) &lt;br /&gt;
* link tot 20100521 [http://www.paktek-shop.de/epages/61807596.sf/de_DE/?ObjectPath=/Shops/61807596/Categories/Produkte/AVR-Programmer]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pinout AVR-JTAG ===&lt;br /&gt;
&lt;br /&gt;
AVR benutzt einen 10poligen IDC-Stecker mit 2,54 mm Pinabstand und folgendem Pinout:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE mkII&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| (frei) || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| Vcc || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bemerkungen:&lt;br /&gt;
&lt;br /&gt;
* VTref &#039;&#039;muss&#039;&#039; beschaltet werden, von dieser Spannung werden die Pegelwandler des JTAG-ICE gespeist, und das ICE weigert sich zu arbeiten wenn keine Spannung anliegt&lt;br /&gt;
* nTRST wird vom JTAG ICE nicht benutzt, soll aber aus Kompatibilität mit anderen JTAG-Implementierungen frei bleiben&lt;br /&gt;
* Pin 7 war in der ersten Version des Atmel JTAG ICE als &#039;&#039;Vsupply&#039;&#039; bezeichnet und diente dort der Speisung des JTAG ICE aus der Zielhardware&lt;br /&gt;
* nSRST muss nicht zwingend an &#039;&#039;/RESET&#039;&#039; des AVR gelegt werden; wenn er fehlt,  kann das JTAG ICE eine schlafende CPU nicht wecken oder mit einem Controller arbeiten, dessen JTAG-Schnittstelle von der Software außer Betrieb genommen worden ist (Bit &#039;&#039;JTD&#039;&#039; im Register &#039;&#039;MCUCSR&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
AVR-JTAG lässt sich mit anderen JTAG-Implementierungen (oder weiteren AVRs) zu einer &#039;&#039;daisy chain&#039;&#039; verketten; dabei schiebt jeder AVR 4 Bits.&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
=== USB Anschluss auf Basis des FTDI FT2232 ===&lt;br /&gt;
Diese Adapter funktionieren mit Opensource-Tools wie OpenOCD (ARM-Debugger), xc3sprog (Xilinx Programmer), urjtag (generisches JTAG-Tool), gojtag, etc. Manchmal sind leichte Anpassungen des Source nötig. Bei einigen Adaptern ist auch die serielle Schnittstelle (3.3V-Level) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
* [http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/usbjtag/usbjtag.html USB to JTAG Interface] von Hubert Högl, Schaltplan&lt;br /&gt;
* [http://www.embedded-projects.net/index.php?page_id=175 USB JTAG Interface für usbprog und OpenOCD] von Benedikt Sauter (Zurzeit gibt es Bausätze für 22€. Der Adapter ist ein Universaladapter der mit verschiedenen Firmwares zu verschiedenen Geräte werden kann. Pläne, Quelltexte usw... Open Source!!!)&lt;br /&gt;
* [http://www.amontec.com/ Amontec] JTAGkey, JTAGkey-Tiny&lt;br /&gt;
* [http://section5.ch/icebear ICEbear] ICEbear (Plus|Light) JTAG adapter, spezielle Unterstützung für Flashen/Debuggen von Analog Devices Blackfin-Plattformen.&lt;br /&gt;
* [http://www.luminarymicro.com/products/ekk-lm3s811_evaluation_kit.html EKK-LM3S811] von LMI. Auf dem Testboard ist ein &amp;quot;on-board&amp;quot; JTAG-Adapter, der zu Ansteuerung des LM3S811 auf dem Board genutzt wird, aber auch an externe Controller angeschlossen werden kann. (Alle LMI Testboards verfügen über den JTAG Ein- und Ausgang.)&lt;br /&gt;
*[http://www.segger.com/cms/jlink.html SEGGER J-Link] sehr professioneller schneller JTAG Adapter. Für nichtkommerziellen Einsatz gibt es den J-Link Edu schon für 50€.&lt;br /&gt;
* [http://www.olimex.com/dev/arm-usb-ocd.html ARM-USB-OCD] von Olimex&lt;br /&gt;
* [http://www.signalyzer.com/ Xverve Signalyzer Tool]&lt;br /&gt;
* [http://bitrelle.wordpress.com/jtagbox/ Bitrelle JTAGkey]&lt;br /&gt;
&lt;br /&gt;
=== Parallelport-Anschluss (Wiggler und Wiggler-&amp;quot;kompatibel&amp;quot;) ===&lt;br /&gt;
* [http://www.macraigor.com/hwproducts.htm Macraigor] Original Wiggler&lt;br /&gt;
* [http://www.olimex.com/dev/arm-jtag.html Olimex ARM-JTAG] Wiggler-Nachbau&lt;br /&gt;
* [http://www.k9spud.com/jtag/ k9spud Wiggler-Schaltplan]&lt;br /&gt;
* [http://web.archive.org/web/20060411074457/http://bbs.circuitcellar.com/phpBB2/viewtopic.php?p=10059&amp;amp; bigakis Wiggler-Schaltplan] (74HC244 Levelshifter, BC547 Transistor zum Invertieren)(&#039;&#039;&#039;Webarchiv-Link&#039;&#039;&#039;,Orginal gelöscht)&lt;br /&gt;
* [http://wiki.openwrt.org/doc/hardware/port.jtag.cables Wiggler Schaltplan] von OpenWRT (ebenfalls mit 74HC244). &lt;br /&gt;
* [http://www.st.com/stonline/products/literature/um/12322.pdf ST FlashLink JTAG Programming Cable] STM Application-Note&lt;br /&gt;
&lt;br /&gt;
Man findet einige Schaltpläne für Wiggler-Nachbauten im Netz. Nicht alle sind identisch. Der original Schaltplan von Macraigor ist meines (M. Thomas) Wissens nicht verfügbar. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vollständige&amp;quot; Belegung des Wiggler-Clones von Olimex (Quelle: sparkfun-Forum)&lt;br /&gt;
* DB25.2 → INVERSE → JTAG.15 (NTRST) (mthomas: hier ist wohl nSRST gemeint)&lt;br /&gt;
* DB25.3 → JTAG.7 (TMS)&lt;br /&gt;
* DB25.4 → JTAG.9 (TCK)&lt;br /&gt;
* DB25.5 → JTAG.5 (TDI)&lt;br /&gt;
* DB25.6 → JTAG.3 (TRST)&lt;br /&gt;
* DB25.9 → VCC for the Level shifter i.e. JTAG enable/disable&lt;br /&gt;
* DB25.11 ← JTAG.13 (TDO)&lt;br /&gt;
* DB25.13 ← Target VCC sense (only when JTAG is enabled i.e. DB26.9 = 1) &lt;br /&gt;
&lt;br /&gt;
DB25.18, DB25.19, DB25.20, DB25.21, DB25.22, DB25.23, DB25.24, DB25.25 werden mit GND verbunden.&lt;br /&gt;
&lt;br /&gt;
Soll das Wiggler-Interface auch mit der Software ocdremote von Macraigor genutzt werden, ist eine Brücke zwischen zwischen DB25.8 und DB25.15 einzubauen. ocdremote ab (ca.) Version 2.06 erkennt daran das original Wiggler und auch einen mit der Brücke ausgestattenen Nachbau. Nutzt man zur Ansteuerung andere Software (z.&amp;amp;nbsp;B. OpenOCD oder H-JTAG) wird diese Verbindung nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
Man beachte die Beschaltung von SRST und TRST: &lt;br /&gt;
&lt;br /&gt;
Üblicherweise wird Pin DB25.2 des Druckeranschlusses über eine Inverterschaltung (NPN Transistor) mit dem Reset-Pin des ARM-Controllers verbunden (&#039;&#039;&#039;nSRST&#039;&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
Pin DB25.6 des Druckeranschlusses wird über Levelshifter direkt mit dem &#039;&#039;&#039;TRST&#039;&#039;&#039;-Pin des Controllers verbunden. In manchen Schaltplänen findet man auch für TRST einen Inverter, aber dies scheint eher unüblich. &lt;br /&gt;
&lt;br /&gt;
Bei den sonstigen Pinbelegungen herrscht weitestgehend Einigkeit. Man muss lediglich Levelshifter ([[Pegelwandler]]) zwischenschalten, um zwischen den 5V des Druckeranschlusses und der Spannung des Controllers (üblicherweise 3,3V) zu &amp;quot;übersetzen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Allein ein 74HC244 als Levelshifter, wie in vielen Schaltungen verwendet, ist nicht ideal. Der Baustein wird dabei mit 3,3V aus der Zielschaltung betrieben und die Anpassung an die nominell 5V vom Druckerport an die 3,3V des HC244 erfolgt entweder durch Spannungsteiler oder durch Strombegrenzungswiderstände und die internen Überspannungsschutzdioden. Das Ausgangssignal TDO zurück zum Druckeranschluss ist maximal 3,3V. Beides nicht optimal aber es funktioniert zumindest meistens. Aufwändigere Schaltungen, wie z.&amp;amp;nbsp;B. der Olimex Wiggler-Nachbau (&amp;quot;ARM-JTAG&amp;quot;), nutzen eine Kombination aus einem 74AC244 und einem 74LCX244.&lt;br /&gt;
&lt;br /&gt;
=== sonstige ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ARM-JTAG-COOCOX/ ARM-JTAG-COOCOX], CoLinkEX Nachbau von Olimex, unterstützt JTAG sowie SWD&lt;br /&gt;
** [http://www.coocox.org/colinkEx.htm unterstützte uC]&lt;br /&gt;
** unterstütze IDEs: [http://www.keil.com/arm/mdk.asp Keil MDK-ARM 4.03] oder neuer, [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR Embedded Workbench 5.xx] oder neuer sowie die [http://www.coocox.org/CooCox_CoIDE.htm CooCox CoIDE]&lt;br /&gt;
&lt;br /&gt;
* Abatron BDI2000&lt;br /&gt;
* [http://www.amontec.com/index.shtml Amontec] JTAG Accelerator, Chameleon POD&lt;br /&gt;
* AZ-Electronics&lt;br /&gt;
* JtagConnection&lt;br /&gt;
* [http://www.lauterbach.de/mindex.html Lauterbach] Trace&lt;br /&gt;
* Macraigor Systems LLS&lt;br /&gt;
* Peedi&lt;br /&gt;
* Rowley Associates CrossConnect&lt;br /&gt;
* [http://bitrelle.wordpress.com/jtagbox/ Bitrelle JTAGkey]&lt;br /&gt;
&lt;br /&gt;
=== Anschlussbelegung ===&lt;br /&gt;
&lt;br /&gt;
Auf Evaluation-Boards verschiedener Hersteller (z.&amp;amp;nbsp;B. Atmel, IAR, Keil, Olimex) ist die JTAG-Schnittstelle über einen 20-poligen Wannenstecker (2·10, Raster 2,54mm) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 NC  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 nTRST&lt;br /&gt;
 | 4 GND &lt;br /&gt;
 |-&lt;br /&gt;
 | 5 TDI&lt;br /&gt;
 | 6 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 TMS&lt;br /&gt;
 | 8 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 TCK&lt;br /&gt;
 | 10 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 11 GND&lt;br /&gt;
 | 12 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 13 TDO&lt;br /&gt;
 | 14 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 15 nRESET/nSRST&lt;br /&gt;
 | 16 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 17 NC&lt;br /&gt;
 | 18 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 19 NC&lt;br /&gt;
 | 20 GND&lt;br /&gt;
 |-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Neuerdings propagiert ARM eine sehr kompakte Variante mit 2·5 Pins in einem 1,27 mm Raster:&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 RTCK&lt;br /&gt;
 | 8 TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GND&lt;br /&gt;
 | 10 nRESET/nSRST&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Daneben existiert noch eine weniger gebräuchliche aber dokumentierte Variante mit 14 Polen (2·7). &lt;br /&gt;
&lt;br /&gt;
Bei fertigen Geräten, für die keine Schaltpläne vorliegen, muss man sich die herstellerspezifische Anschlussbelegung anhand des Datenblatts des verwendeten Controllers und mittels Messgerät selbst ermitteln.&lt;br /&gt;
&lt;br /&gt;
=== Cortex Debug Connectors von ARM ===&lt;br /&gt;
&lt;br /&gt;
[http://infocenter.arm.com/help/topic/com.arm.doc.faqs/attached/13634/cortex_debug_connectors.pdf In diesem PDF Dokument hat ARM die Anschlussbelegung für Cortex-Prozessoren definiert.]&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 SWDIO/TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 SWDCLK/TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 SWO/TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 Key (kein Pin)&lt;br /&gt;
 | 8 NC/TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GNDDetect&lt;br /&gt;
 | 10 nRESET&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Der 10-polige JTAG Stecker von mmvisual (ARM, Cortex, Seriell kombiniert) ===&lt;br /&gt;
mmvisual hat mit dieser Steckerbelegung die Standard JTAG Schnittstelle erweitert:&lt;br /&gt;
&lt;br /&gt;
Ich habe einen 10-poligen Debug-Stecker entworfen, der alle Varianten sowie einen [[UART]]-Anschluss enthält und die Pins optimal angeordnet sind. Mit diesem Stecker können ARM7/9 und Cortex CPUs programmiert werden. An allen JTAG-Steckervarianten fehlen leider Funktionen, bzw. die Pins waren nicht optimal angeordnet. Daher habe ich den &amp;quot;perfekten&amp;quot; Stecker designt der viele Funktionen beinhaltet.&lt;br /&gt;
&lt;br /&gt;
[[bild:jtag-debug-port10.png]]&lt;br /&gt;
&lt;br /&gt;
==== Die Funktionen ====&lt;br /&gt;
* JTAG&lt;br /&gt;
* SWD&lt;br /&gt;
* Debug-UART-Anschluss (verbunden mit einem freien UART vom [[STM32]]) (alternativ ein MAX232 Chip dazwischen schalten)&lt;br /&gt;
* Weniger Platzbedarf auf der Platine (Standard-JTAG 20 Polig)&lt;br /&gt;
* Über 4-Poligen Würfel kann der UART benutzt werden (Pin 7/8/9/10)&lt;br /&gt;
* Es kann ein Jumper gesteckt werden für eine Option (Pin 9/10) ohne dass es sich mit dem RS232 Chip beißt (sofern er eingebaut wurde)&lt;br /&gt;
* Über einen 5-Poligen einreihigen Stecker kann SWD verwendet werden (Pin 1/3/5/7/9)&lt;br /&gt;
* den ganzen Stecker braucht es nur, wenn man den herkömmlichen JTAG nutzen möchte.&lt;br /&gt;
* Kurzschlussschutz, da GND und +3V3 nicht gegenüber liegen&lt;br /&gt;
&lt;br /&gt;
In all meinen Projekten verwende ich nur noch diese Anordnung, denn sie ist einfach praktisch. Alles drauf und die Pins sind perfekt angeordnet für jede Art der Anwendung.&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist der UART 1 ([[STM32]]) benutzt mit den Pins PA9/PA10. Wenn die Boot-Pins auf einen separaten Jumper-Block gelegt werden, so könnte auch mit der ST Software ein Flash Update durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Hier die Erklärung warum es die BOOT-Pins nicht auf dem JTAG-Stecker benötigt. Ich habe mir einen eigenen Bootloader geschrieben, der kommt ohne das&lt;br /&gt;
Interne Boot-ROM (und ohne die BOOT-Pins) aus. Ich habe den in die ersten 8KB Flash programmiert.&lt;br /&gt;
* Das PC-Programm senden über den UART den Befehl &amp;quot;GoTo Bootloader&amp;quot;, damit wird mein Bootloader angesprungen.&lt;br /&gt;
* Dann sendet das PC Programm die Update-Daten.&lt;br /&gt;
* Wenn fertig, dann geht es zurück in die Applikation.&lt;br /&gt;
* Der Bootloader ist immer beim Einschalten des Boards aktiv. Sobald eine Tastenkombination gedrückt wird, bleibt er &amp;quot;hängen&amp;quot; und irgend welche LEDs blinken. Also wenn das Flash &amp;quot;Zerschossen&amp;quot; sein sollte kann man mit einem Restart/Tasten den Bootloader aktivieren und erneut den Update ausführen.&lt;br /&gt;
* Der ST eigene Bootloader hat mir nicht gefallen, weil da keine LED&#039;s Blinken und dem User sagen, &amp;quot;Hallo ich lebe und bin im Bootloader&amp;quot;.&lt;br /&gt;
* Wenn die Tasten beim Einschalten nicht gedrückt werden, dann springt der Bootloader in die Applikation&lt;br /&gt;
* Der Bootloader kann jeden beliebigen UART nutzen.&lt;br /&gt;
&lt;br /&gt;
==== Die Adapterplatine ====&lt;br /&gt;
Mit der Adapterplatine kann von dem 10-poligen Stecker auf einen 20-poligen Standard JTAG Stecker verbunden werden. Zusätzlich ist hier ein TTL/V24 Wandler integriert um die UART Signale auf V24 um zu setzen. Hier kann der Schaltplan/Layout geladen werden: [[Datei:10-Pol-JTAG.zip]]&lt;br /&gt;
Die Platine ist 33×19mm klein.&lt;br /&gt;
&lt;br /&gt;
=== 10-pin JTAG im 20&#039;tel-Zoll Raster ===&lt;br /&gt;
&lt;br /&gt;
* Forumsbeitrag [http://www.mikrocontroller.net/topic/188659#1836129 &amp;quot;neuer JTAG-Stecker für ARM&amp;quot;]&lt;br /&gt;
* [http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm Keil ULINK2] (und Pinouts anderer JTAG-Stecker)&lt;br /&gt;
&lt;br /&gt;
== MSP430 JTAG ==&lt;br /&gt;
&lt;br /&gt;
Anschluß an Parallelport: &lt;br /&gt;
* [http://elmicro.com/files/olimex/msp430-jtag-d.pdf Olimex MSP430 JTAG (PDF)] bzw. ([http://www.olimex.com/dev/images/msp430-jtag-d-sch.gif (GIF)]). Siehe auch Diskussion im [http://www.mikrocontroller.net/topic/57208#442620 Forum].&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/90754#776070 Forumsbeitrag] mit Anhang eines chinesischen? Schaltplans (PDF)&lt;br /&gt;
&lt;br /&gt;
Anschluß an USB/Seriell:&lt;br /&gt;
* [http://goodfet.sourceforge.net/ GoodFET] von Travis Goodspeed. The GoodFET is an open source tool for programming microcontrollers and memories by [[SPI]], [[I2C]], JTAG ([[MSP430]], [[ARM]]), and a slew of vendor-proprietary protocols. (Stub für [http://events.ccc.de/congress/2009/Fahrplan/events/3490.en.html 26C3 Vortrag])&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Für Xilinx&lt;br /&gt;
** [http://www.freewebs.com/lykos1986/cpldprogrammer.htm Xilinx JTAG programmer] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.embedded-projects.net/index.php?page_id=157 Xilinx JTAG XSVF Player mit USBprog] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter Xilinx Platform Cable I Nachbau] - Nachbau des Originalem Xilinx Platform Cable I (DLC9)&lt;br /&gt;
** [http://warmcat.com/milksop/cheaptag.html Cheaptag] - Xilinx Parallel Jtag programming cable&lt;br /&gt;
** [http://embdev.net/topic/139121#new XSVF Player FTDI Bitbang] - XSVF Player with FTDI Bitbang mode&lt;br /&gt;
** [https://play.google.com/store/apps/details?id=com.wesche.xsvf XSVF Player FTDI Bitbang for Android] - XSVF Player with FTDI Bitbang mode for Android&lt;br /&gt;
&lt;br /&gt;
* Für Altera&lt;br /&gt;
** [http://translate.google.com/translate?js=n&amp;amp;prev=_t&amp;amp;hl=en&amp;amp;ie=UTF-8&amp;amp;layout=2&amp;amp;eotf=1&amp;amp;sl=auto&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Fmarsohod.org%2Findex.php%2Fourblog%2F11-blog%2F163-marsblaster Marsblaster] für Altera FPGA, serieller Port&lt;br /&gt;
** [http://www.altera.com/literature/ug/ug_bbii.pdf ALTERA ByteBlaster]&lt;br /&gt;
** [http://www.entner-electronics.com/tl/index.php/eeblaster.html EEBlaster], sehr günstig, kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
** [http://www.pyroelectro.com/tutorials/byteblaster/index.html Build A ByteBlaster] bei www.pyroelectro.com&lt;br /&gt;
** [http://www.ixo.de/info/usb_jtag/ USB-JTAG-Adapter], kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
&lt;br /&gt;
* ColdFire BDM Pod&lt;br /&gt;
** [http://forums.freescale.com/t5/68K-ColdFire-reg-Microprocessors/TBLCF-open-source-debugging-cable/m-p/7543 TBLCF open source debugging cable]&lt;br /&gt;
** [http://www.rockbox.org/wiki/IriverBDM IriverBDM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- VERALTETE LINKS - PRODUKTE WERDEN DORT NICHT GEFUNDEN&lt;br /&gt;
* FCPU-X Platform Cable USB JTAG cable&lt;br /&gt;
** Bezugsquelle (DE): [http://www.vht-impex-shop.de/product_info.php?info=p786_HW-USB-platform-cable--FCPU-X-platform-cable-similar-to-HW-USB-Kabel-for-Xilinx-evaluation-boards-etc-.html&amp;amp;XTCsid=e613a7119493deac52e83e9038ce131a http://www.vht-impex-shop.de]&lt;br /&gt;
** Bezugsquelle (US): [http://www.celeritous.com/estore/index.php?main_page=product_info&amp;amp;cPath=1&amp;amp;products_id=129 http://www.celeritous.com] &lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Universal JTAG Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Versaloon ===&lt;br /&gt;
&lt;br /&gt;
[http://www.versaloon.com/ Versaloon] is a full-opensource multi-functional platform based on generic USB_TO_XXX protocol, which can now support more than 10 kinds of interfaces including [[ISP]], [[JTAG]], SWD, [[SPI]], [[IIC]] and so on. Programming is supported for: &lt;br /&gt;
* STM8 support(SWIM)&lt;br /&gt;
* STM32 support(ISP/JTAG/SWD) siehe auch Forumbeitrag von Bingo [http://www.mikrocontroller.net/topic/202785]&lt;br /&gt;
* LPC1000 support(ISP/JTAG/SWD)&lt;br /&gt;
* LM3S support(JTAG/SWD)&lt;br /&gt;
* AT91SAM3 support(JTAG/SWD)&lt;br /&gt;
* AT89S5X support(ISP)&lt;br /&gt;
* PSOC1 support(ISSP)&lt;br /&gt;
* MSP430(without TEST) support(JTAG)&lt;br /&gt;
* C8051F support(C2/JTAG)&lt;br /&gt;
* AVR8 support(ISP/JTAG)&lt;br /&gt;
* LPC900 support(ICP)&lt;br /&gt;
* HCS08 support(BDM)&lt;br /&gt;
* HCS12(X) support(BDM)&lt;br /&gt;
* SVF support(JTAG)&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [[AVR-Studio]] (Windows)&lt;br /&gt;
* [[GDB]] in Verbindung mit [http://avarice.sourceforge.net/ AVaRICE] und AVR JTAGICE kompatibler Hardware. (Linux)&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [[GDB]] bzw. Insight und auf die ARM JTAG Hardware abgestimmte GDB-Server (OCDRemote, [http://openocd.berlios.de/ OpenOCD], BDI2000, Peedi)&lt;br /&gt;
* [http://www.hjtag.com/ H-JTAG] und RDI-kompatible Debugger (SDT2.51, ADS1.2, RealView and IAR)&lt;br /&gt;
* Herstellerspezifische Software z.&amp;amp;nbsp;B. von Lauterbach&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Altera: Quartus Programmer (quartus_pgm)&lt;br /&gt;
* Lattice: ToDo... (Lattice setzt seit 2011 auf die JTAG-Funktionalität des FT2232 und benötigt daher keine speziellen USB-JTAG-Adapter mehr)&lt;br /&gt;
* Xilinx: Impact, xc3sprog, ...&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Tools ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.topjtag.com TopJTAG]: boundary-scan software for circuit debugging and flash programming.&lt;br /&gt;
* [http://www.ricreations.com/index.html Universal Scan]&lt;br /&gt;
* [http://urjtag.org UrJTAG]: Kommandozeilentool für Boundary Scan, FPGA und CPLD und Speicher lesen und schreiben u.v.a.m., Nachfolger von openwince JTAG Tools.&lt;br /&gt;
* [http://www.gojtag.com/ goJTAG]: graphisches Boundary-Scan-Tool zum manuellen Durchtesten von Verbindungen, besonders für Nicht-JTAG-Experten geeignet. Obwohl in Java geschrieben, funktioniert es nur unter Windows. Funktioniert im Prinzip mit allen FT2232(H) basierten Adaptern.&lt;br /&gt;
* [http://andreas-weschenfelder.de.vu FT2232 BoundaryScan Tool]: free boundary-scan software for flash programming [S29GL128N, S29GL256N, S29GL512N, M25PX16, M25PX32, M25PX64, etc ].&lt;br /&gt;
&amp;lt;!-- link tot 20100521 * [http://www.rsn-tech.demon.co.uk/pjtag/pjtag.html Pesonal JTAG]: halbfertiges Hobbyprojekt, ist bissel buggy, aber kleine Sachen gehen damit. --&amp;gt;&lt;br /&gt;
* [http://www.blunk-electronic.de/products.html]: boundary scan test system M-1 for board and system testing, runs on Linux, open source, no licensing ! Read more on http://www.blunk-electronic.de/products.html&lt;br /&gt;
&lt;br /&gt;
= Weblinks =&lt;br /&gt;
&lt;br /&gt;
*Debugging the Linux kernel with JTAG] von Alexander Sirotkin [http://www.embedded.com/design/operating-systems/4207333/Debugging-the-Linux-kernel-with-JTAG] (LPC3250 mit FemtoLinux, OpenOCD)&lt;br /&gt;
*[http://hri.sourceforge.net/tools/jtag_faq_org.html JTAG FAQ] auf sourceforge.net&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR]]&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:FPGA und Co]]&lt;br /&gt;
[[Kategorie:Datenübertragung]]&lt;/div&gt;</summary>
		<author><name>Ralfiboy</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94749</id>
		<title>JTAG</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=JTAG&amp;diff=94749"/>
		<updated>2017-01-05T15:52:54Z</updated>

		<summary type="html">&lt;p&gt;Ralfiboy: /* sonstige */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;J&#039;&#039;&#039;oint &#039;&#039;&#039;T&#039;&#039;&#039;est &#039;&#039;&#039;A&#039;&#039;&#039;ction &#039;&#039;&#039;G&#039;&#039;&#039;roup, entwickelte den Standard IEEE 1149.1. Das JTAG-Protokoll ermöglicht das Programmieren, Debuggen und Testen von ICs, [[Prozessor]]en und [[FPGA]]s direkt in der Schaltung.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2737 AVR JTAGICE] (gelegentlich auch &#039;&#039;JTAGICE mkI&#039;&#039; genannt) von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3353 AVR JTAGICE mkII] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=17213&amp;amp;category_id=163&amp;amp;family_id=682&amp;amp;subfamily_id=2138 AVR JTAGICE 3] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/tools/ATATMEL-ICE.aspx ATMEL-ICE] von Atmel.&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3891 AVR Dragon] von Atmel.&lt;br /&gt;
** [http://www.atmel.com/dyn/resources/prod_documents/doc8112.pdf AVR077: Opto Isolated Emulation for the DebugWIRE] (auch für AVR JTAGICE mkII nützlich)&lt;br /&gt;
* [http://gandalf.arubi.uni-kl.de/avr_projects/evertool/index.html Evertool und Evertool light] von Martin Thomas. Evertool unterstützt JTAG analog zu AVR JTAGICE und [[ISP]] nach [[STK500]] Protokoll. Evertool light nur JTAG. &lt;br /&gt;
* [http://aquaticus.info/jtag JTAG for AVR processors] bei Aquaticus ROV. (Englisch)&lt;br /&gt;
* [http://www.olimex.com/dev/avr-jtag.html AVR-JTAG] und [http://www.olimex.com/dev/avr-usb-jtag.html AVR-USB-JTAG] von [http://www.olimex.com/dev/index.html Olimex] (kommerziell). Alternativer Lieferant ist der [http://elmicro.com/de/avrjtag.html Elektronikladen].&lt;br /&gt;
* [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/35 AVR-JTAG] und [http://www.gadgetpool.de/bestellen/catalog/product_info.php/cPath/22_27/products_id/52 AVR-USB-JTAG] von [http://www.gadgetPool.de gadgetPool] (kommerziell)&lt;br /&gt;
* [http://www.floppyspongeonline.com/automation/isojtagisp/isojtagisp.php IsoJtagISP] und [http://www.floppyspongeonline.com/automation/isojtag/isojtag.php IsoJTAG] von Floppy Sponge Automation ([[USB]], optisch isoliert). Hier eine modifizierte Version von [http://www.madwizard.org/electronics/projects/avrjtag Madwizard].&lt;br /&gt;
* [http://www.ere.co.th/(gs5afz55q5idyyn0a1ibkl45)/default.aspx?RedirectPage=Products&amp;amp;RedirectPage1=ProductsDetail&amp;amp;ProductID=56 JTAGAVRU1] (AVR JTAGICE kompatibel, USB, 1.8-5.5V) (existiert wohl nicht mehr ?)&lt;br /&gt;
* [http://www.avrfreaks.net/index.php?module=Freaks%20Tools&amp;amp;func=viewItem&amp;amp;item_id=630 JTAGcable II] (AVR JTAGICE kompatibel, USB, 1.8-6 V)&lt;br /&gt;
* [http://www.miklobit.com/JTAG_TWICE.530+B6Jkw9Mw__.0.html MB-JTAG-TWICE] (AVR JTAGICE kompatibel, RS232, 2.7-5.5V, +ISP STK500v2) - Free update to version compatible with AVR JTAG MKII (coming soon)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Programmer und Debugger für USB (MKI) &lt;br /&gt;
* link tot 20100521 [http://www.paktek-shop.de/epages/61807596.sf/de_DE/?ObjectPath=/Shops/61807596/Categories/Produkte/AVR-Programmer]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pinout AVR-JTAG ===&lt;br /&gt;
&lt;br /&gt;
AVR benutzt einen 10poligen IDC-Stecker mit 2,54 mm Pinabstand und folgendem Pinout:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE mkII&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| (frei) || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Pinout AVR-JTAG ICE&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Signal || Pin || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| TCK    || 1   || 2   || GND&lt;br /&gt;
|-&lt;br /&gt;
| TDO    || 3   || 4   || VTref&lt;br /&gt;
|-&lt;br /&gt;
| TMS    || 5   || 6   || nSRST&lt;br /&gt;
|-&lt;br /&gt;
| Vcc || 7   || 8   || (nTRST)&lt;br /&gt;
|-&lt;br /&gt;
| TDI    || 9   || 10  || GND&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bemerkungen:&lt;br /&gt;
&lt;br /&gt;
* VTref &#039;&#039;muss&#039;&#039; beschaltet werden, von dieser Spannung werden die Pegelwandler des JTAG-ICE gespeist, und das ICE weigert sich zu arbeiten wenn keine Spannung anliegt&lt;br /&gt;
* nTRST wird vom JTAG ICE nicht benutzt, soll aber aus Kompatibilität mit anderen JTAG-Implementierungen frei bleiben&lt;br /&gt;
* Pin 7 war in der ersten Version des Atmel JTAG ICE als &#039;&#039;Vsupply&#039;&#039; bezeichnet und diente dort der Speisung des JTAG ICE aus der Zielhardware&lt;br /&gt;
* nSRST muss nicht zwingend an &#039;&#039;/RESET&#039;&#039; des AVR gelegt werden; wenn er fehlt,  kann das JTAG ICE eine schlafende CPU nicht wecken oder mit einem Controller arbeiten, dessen JTAG-Schnittstelle von der Software außer Betrieb genommen worden ist (Bit &#039;&#039;JTD&#039;&#039; im Register &#039;&#039;MCUCSR&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
AVR-JTAG lässt sich mit anderen JTAG-Implementierungen (oder weiteren AVRs) zu einer &#039;&#039;daisy chain&#039;&#039; verketten; dabei schiebt jeder AVR 4 Bits.&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
=== USB Anschluss auf Basis des FTDI FT2232 ===&lt;br /&gt;
Diese Adapter funktionieren mit Opensource-Tools wie OpenOCD (ARM-Debugger), xc3sprog (Xilinx Programmer), urjtag (generisches JTAG-Tool), gojtag, etc. Manchmal sind leichte Anpassungen des Source nötig. Bei einigen Adaptern ist auch die serielle Schnittstelle (3.3V-Level) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
* [http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/usbjtag/usbjtag.html USB to JTAG Interface] von Hubert Högl, Schaltplan&lt;br /&gt;
* [http://www.embedded-projects.net/index.php?page_id=175 USB JTAG Interface für usbprog und OpenOCD] von Benedikt Sauter (Zurzeit gibt es Bausätze für 22€. Der Adapter ist ein Universaladapter der mit verschiedenen Firmwares zu verschiedenen Geräte werden kann. Pläne, Quelltexte usw... Open Source!!!)&lt;br /&gt;
* [http://www.amontec.com/ Amontec] JTAGkey, JTAGkey-Tiny&lt;br /&gt;
* [http://section5.ch/icebear ICEbear] ICEbear (Plus|Light) JTAG adapter, spezielle Unterstützung für Flashen/Debuggen von Analog Devices Blackfin-Plattformen.&lt;br /&gt;
* [http://www.luminarymicro.com/products/ekk-lm3s811_evaluation_kit.html EKK-LM3S811] von LMI. Auf dem Testboard ist ein &amp;quot;on-board&amp;quot; JTAG-Adapter, der zu Ansteuerung des LM3S811 auf dem Board genutzt wird, aber auch an externe Controller angeschlossen werden kann. (Alle LMI Testboards verfügen über den JTAG Ein- und Ausgang.)&lt;br /&gt;
*[http://www.segger.com/cms/jlink.html SEGGER J-Link] sehr professioneller schneller JTAG Adapter. Für nichtkommerziellen Einsatz gibt es den J-Link Edu schon für 50€.&lt;br /&gt;
* [http://www.olimex.com/dev/arm-usb-ocd.html ARM-USB-OCD] von Olimex&lt;br /&gt;
* [http://www.signalyzer.com/ Xverve Signalyzer Tool]&lt;br /&gt;
&lt;br /&gt;
=== Parallelport-Anschluss (Wiggler und Wiggler-&amp;quot;kompatibel&amp;quot;) ===&lt;br /&gt;
* [http://www.macraigor.com/hwproducts.htm Macraigor] Original Wiggler&lt;br /&gt;
* [http://www.olimex.com/dev/arm-jtag.html Olimex ARM-JTAG] Wiggler-Nachbau&lt;br /&gt;
* [http://www.k9spud.com/jtag/ k9spud Wiggler-Schaltplan]&lt;br /&gt;
* [http://web.archive.org/web/20060411074457/http://bbs.circuitcellar.com/phpBB2/viewtopic.php?p=10059&amp;amp; bigakis Wiggler-Schaltplan] (74HC244 Levelshifter, BC547 Transistor zum Invertieren)(&#039;&#039;&#039;Webarchiv-Link&#039;&#039;&#039;,Orginal gelöscht)&lt;br /&gt;
* [http://wiki.openwrt.org/doc/hardware/port.jtag.cables Wiggler Schaltplan] von OpenWRT (ebenfalls mit 74HC244). &lt;br /&gt;
* [http://www.st.com/stonline/products/literature/um/12322.pdf ST FlashLink JTAG Programming Cable] STM Application-Note&lt;br /&gt;
&lt;br /&gt;
Man findet einige Schaltpläne für Wiggler-Nachbauten im Netz. Nicht alle sind identisch. Der original Schaltplan von Macraigor ist meines (M. Thomas) Wissens nicht verfügbar. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vollständige&amp;quot; Belegung des Wiggler-Clones von Olimex (Quelle: sparkfun-Forum)&lt;br /&gt;
* DB25.2 → INVERSE → JTAG.15 (NTRST) (mthomas: hier ist wohl nSRST gemeint)&lt;br /&gt;
* DB25.3 → JTAG.7 (TMS)&lt;br /&gt;
* DB25.4 → JTAG.9 (TCK)&lt;br /&gt;
* DB25.5 → JTAG.5 (TDI)&lt;br /&gt;
* DB25.6 → JTAG.3 (TRST)&lt;br /&gt;
* DB25.9 → VCC for the Level shifter i.e. JTAG enable/disable&lt;br /&gt;
* DB25.11 ← JTAG.13 (TDO)&lt;br /&gt;
* DB25.13 ← Target VCC sense (only when JTAG is enabled i.e. DB26.9 = 1) &lt;br /&gt;
&lt;br /&gt;
DB25.18, DB25.19, DB25.20, DB25.21, DB25.22, DB25.23, DB25.24, DB25.25 werden mit GND verbunden.&lt;br /&gt;
&lt;br /&gt;
Soll das Wiggler-Interface auch mit der Software ocdremote von Macraigor genutzt werden, ist eine Brücke zwischen zwischen DB25.8 und DB25.15 einzubauen. ocdremote ab (ca.) Version 2.06 erkennt daran das original Wiggler und auch einen mit der Brücke ausgestattenen Nachbau. Nutzt man zur Ansteuerung andere Software (z.&amp;amp;nbsp;B. OpenOCD oder H-JTAG) wird diese Verbindung nicht benötigt.&lt;br /&gt;
&lt;br /&gt;
Man beachte die Beschaltung von SRST und TRST: &lt;br /&gt;
&lt;br /&gt;
Üblicherweise wird Pin DB25.2 des Druckeranschlusses über eine Inverterschaltung (NPN Transistor) mit dem Reset-Pin des ARM-Controllers verbunden (&#039;&#039;&#039;nSRST&#039;&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
Pin DB25.6 des Druckeranschlusses wird über Levelshifter direkt mit dem &#039;&#039;&#039;TRST&#039;&#039;&#039;-Pin des Controllers verbunden. In manchen Schaltplänen findet man auch für TRST einen Inverter, aber dies scheint eher unüblich. &lt;br /&gt;
&lt;br /&gt;
Bei den sonstigen Pinbelegungen herrscht weitestgehend Einigkeit. Man muss lediglich Levelshifter ([[Pegelwandler]]) zwischenschalten, um zwischen den 5V des Druckeranschlusses und der Spannung des Controllers (üblicherweise 3,3V) zu &amp;quot;übersetzen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Allein ein 74HC244 als Levelshifter, wie in vielen Schaltungen verwendet, ist nicht ideal. Der Baustein wird dabei mit 3,3V aus der Zielschaltung betrieben und die Anpassung an die nominell 5V vom Druckerport an die 3,3V des HC244 erfolgt entweder durch Spannungsteiler oder durch Strombegrenzungswiderstände und die internen Überspannungsschutzdioden. Das Ausgangssignal TDO zurück zum Druckeranschluss ist maximal 3,3V. Beides nicht optimal aber es funktioniert zumindest meistens. Aufwändigere Schaltungen, wie z.&amp;amp;nbsp;B. der Olimex Wiggler-Nachbau (&amp;quot;ARM-JTAG&amp;quot;), nutzen eine Kombination aus einem 74AC244 und einem 74LCX244.&lt;br /&gt;
&lt;br /&gt;
=== sonstige ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ARM-JTAG-COOCOX/ ARM-JTAG-COOCOX], CoLinkEX Nachbau von Olimex, unterstützt JTAG sowie SWD&lt;br /&gt;
** [http://www.coocox.org/colinkEx.htm unterstützte uC]&lt;br /&gt;
** unterstütze IDEs: [http://www.keil.com/arm/mdk.asp Keil MDK-ARM 4.03] oder neuer, [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR Embedded Workbench 5.xx] oder neuer sowie die [http://www.coocox.org/CooCox_CoIDE.htm CooCox CoIDE]&lt;br /&gt;
&lt;br /&gt;
* Abatron BDI2000&lt;br /&gt;
* [http://www.amontec.com/index.shtml Amontec] JTAG Accelerator, Chameleon POD&lt;br /&gt;
* AZ-Electronics&lt;br /&gt;
* JtagConnection&lt;br /&gt;
* [http://www.lauterbach.de/mindex.html Lauterbach] Trace&lt;br /&gt;
* Macraigor Systems LLS&lt;br /&gt;
* Peedi&lt;br /&gt;
* Rowley Associates CrossConnect&lt;br /&gt;
* [http://bitrelle.wordpress.com/jtagbox/ Bitrelle JTAGkey]&lt;br /&gt;
&lt;br /&gt;
=== Anschlussbelegung ===&lt;br /&gt;
&lt;br /&gt;
Auf Evaluation-Boards verschiedener Hersteller (z.&amp;amp;nbsp;B. Atmel, IAR, Keil, Olimex) ist die JTAG-Schnittstelle über einen 20-poligen Wannenstecker (2·10, Raster 2,54mm) herausgeführt.&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 NC  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 nTRST&lt;br /&gt;
 | 4 GND &lt;br /&gt;
 |-&lt;br /&gt;
 | 5 TDI&lt;br /&gt;
 | 6 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 TMS&lt;br /&gt;
 | 8 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 TCK&lt;br /&gt;
 | 10 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 11 GND&lt;br /&gt;
 | 12 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 13 TDO&lt;br /&gt;
 | 14 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 15 nRESET/nSRST&lt;br /&gt;
 | 16 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 17 NC&lt;br /&gt;
 | 18 GND&lt;br /&gt;
 |-&lt;br /&gt;
 | 19 NC&lt;br /&gt;
 | 20 GND&lt;br /&gt;
 |-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Neuerdings propagiert ARM eine sehr kompakte Variante mit 2·5 Pins in einem 1,27 mm Raster:&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 RTCK&lt;br /&gt;
 | 8 TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GND&lt;br /&gt;
 | 10 nRESET/nSRST&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Daneben existiert noch eine weniger gebräuchliche aber dokumentierte Variante mit 14 Polen (2·7). &lt;br /&gt;
&lt;br /&gt;
Bei fertigen Geräten, für die keine Schaltpläne vorliegen, muss man sich die herstellerspezifische Anschlussbelegung anhand des Datenblatts des verwendeten Controllers und mittels Messgerät selbst ermitteln.&lt;br /&gt;
&lt;br /&gt;
=== Cortex Debug Connectors von ARM ===&lt;br /&gt;
&lt;br /&gt;
[http://infocenter.arm.com/help/topic/com.arm.doc.faqs/attached/13634/cortex_debug_connectors.pdf In diesem PDF Dokument hat ARM die Anschlussbelegung für Cortex-Prozessoren definiert.]&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
 |-&lt;br /&gt;
 | 1 Vcc  &lt;br /&gt;
 | 2 SWDIO/TMS  &lt;br /&gt;
 |-&lt;br /&gt;
 | 3 GND&lt;br /&gt;
 | 4 SWDCLK/TCK&lt;br /&gt;
 |-&lt;br /&gt;
 | 5 GND&lt;br /&gt;
 | 6 SWO/TDO&lt;br /&gt;
 |-&lt;br /&gt;
 | 7 Key (kein Pin)&lt;br /&gt;
 | 8 NC/TDI&lt;br /&gt;
 |-&lt;br /&gt;
 | 9 GNDDetect&lt;br /&gt;
 | 10 nRESET&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Der 10-polige JTAG Stecker von mmvisual (ARM, Cortex, Seriell kombiniert) ===&lt;br /&gt;
mmvisual hat mit dieser Steckerbelegung die Standard JTAG Schnittstelle erweitert:&lt;br /&gt;
&lt;br /&gt;
Ich habe einen 10-poligen Debug-Stecker entworfen, der alle Varianten sowie einen [[UART]]-Anschluss enthält und die Pins optimal angeordnet sind. Mit diesem Stecker können ARM7/9 und Cortex CPUs programmiert werden. An allen JTAG-Steckervarianten fehlen leider Funktionen, bzw. die Pins waren nicht optimal angeordnet. Daher habe ich den &amp;quot;perfekten&amp;quot; Stecker designt der viele Funktionen beinhaltet.&lt;br /&gt;
&lt;br /&gt;
[[bild:jtag-debug-port10.png]]&lt;br /&gt;
&lt;br /&gt;
==== Die Funktionen ====&lt;br /&gt;
* JTAG&lt;br /&gt;
* SWD&lt;br /&gt;
* Debug-UART-Anschluss (verbunden mit einem freien UART vom [[STM32]]) (alternativ ein MAX232 Chip dazwischen schalten)&lt;br /&gt;
* Weniger Platzbedarf auf der Platine (Standard-JTAG 20 Polig)&lt;br /&gt;
* Über 4-Poligen Würfel kann der UART benutzt werden (Pin 7/8/9/10)&lt;br /&gt;
* Es kann ein Jumper gesteckt werden für eine Option (Pin 9/10) ohne dass es sich mit dem RS232 Chip beißt (sofern er eingebaut wurde)&lt;br /&gt;
* Über einen 5-Poligen einreihigen Stecker kann SWD verwendet werden (Pin 1/3/5/7/9)&lt;br /&gt;
* den ganzen Stecker braucht es nur, wenn man den herkömmlichen JTAG nutzen möchte.&lt;br /&gt;
* Kurzschlussschutz, da GND und +3V3 nicht gegenüber liegen&lt;br /&gt;
&lt;br /&gt;
In all meinen Projekten verwende ich nur noch diese Anordnung, denn sie ist einfach praktisch. Alles drauf und die Pins sind perfekt angeordnet für jede Art der Anwendung.&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel ist der UART 1 ([[STM32]]) benutzt mit den Pins PA9/PA10. Wenn die Boot-Pins auf einen separaten Jumper-Block gelegt werden, so könnte auch mit der ST Software ein Flash Update durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Hier die Erklärung warum es die BOOT-Pins nicht auf dem JTAG-Stecker benötigt. Ich habe mir einen eigenen Bootloader geschrieben, der kommt ohne das&lt;br /&gt;
Interne Boot-ROM (und ohne die BOOT-Pins) aus. Ich habe den in die ersten 8KB Flash programmiert.&lt;br /&gt;
* Das PC-Programm senden über den UART den Befehl &amp;quot;GoTo Bootloader&amp;quot;, damit wird mein Bootloader angesprungen.&lt;br /&gt;
* Dann sendet das PC Programm die Update-Daten.&lt;br /&gt;
* Wenn fertig, dann geht es zurück in die Applikation.&lt;br /&gt;
* Der Bootloader ist immer beim Einschalten des Boards aktiv. Sobald eine Tastenkombination gedrückt wird, bleibt er &amp;quot;hängen&amp;quot; und irgend welche LEDs blinken. Also wenn das Flash &amp;quot;Zerschossen&amp;quot; sein sollte kann man mit einem Restart/Tasten den Bootloader aktivieren und erneut den Update ausführen.&lt;br /&gt;
* Der ST eigene Bootloader hat mir nicht gefallen, weil da keine LED&#039;s Blinken und dem User sagen, &amp;quot;Hallo ich lebe und bin im Bootloader&amp;quot;.&lt;br /&gt;
* Wenn die Tasten beim Einschalten nicht gedrückt werden, dann springt der Bootloader in die Applikation&lt;br /&gt;
* Der Bootloader kann jeden beliebigen UART nutzen.&lt;br /&gt;
&lt;br /&gt;
==== Die Adapterplatine ====&lt;br /&gt;
Mit der Adapterplatine kann von dem 10-poligen Stecker auf einen 20-poligen Standard JTAG Stecker verbunden werden. Zusätzlich ist hier ein TTL/V24 Wandler integriert um die UART Signale auf V24 um zu setzen. Hier kann der Schaltplan/Layout geladen werden: [[Datei:10-Pol-JTAG.zip]]&lt;br /&gt;
Die Platine ist 33×19mm klein.&lt;br /&gt;
&lt;br /&gt;
=== 10-pin JTAG im 20&#039;tel-Zoll Raster ===&lt;br /&gt;
&lt;br /&gt;
* Forumsbeitrag [http://www.mikrocontroller.net/topic/188659#1836129 &amp;quot;neuer JTAG-Stecker für ARM&amp;quot;]&lt;br /&gt;
* [http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm Keil ULINK2] (und Pinouts anderer JTAG-Stecker)&lt;br /&gt;
&lt;br /&gt;
== MSP430 JTAG ==&lt;br /&gt;
&lt;br /&gt;
Anschluß an Parallelport: &lt;br /&gt;
* [http://elmicro.com/files/olimex/msp430-jtag-d.pdf Olimex MSP430 JTAG (PDF)] bzw. ([http://www.olimex.com/dev/images/msp430-jtag-d-sch.gif (GIF)]). Siehe auch Diskussion im [http://www.mikrocontroller.net/topic/57208#442620 Forum].&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/90754#776070 Forumsbeitrag] mit Anhang eines chinesischen? Schaltplans (PDF)&lt;br /&gt;
&lt;br /&gt;
Anschluß an USB/Seriell:&lt;br /&gt;
* [http://goodfet.sourceforge.net/ GoodFET] von Travis Goodspeed. The GoodFET is an open source tool for programming microcontrollers and memories by [[SPI]], [[I2C]], JTAG ([[MSP430]], [[ARM]]), and a slew of vendor-proprietary protocols. (Stub für [http://events.ccc.de/congress/2009/Fahrplan/events/3490.en.html 26C3 Vortrag])&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Für Xilinx&lt;br /&gt;
** [http://www.freewebs.com/lykos1986/cpldprogrammer.htm Xilinx JTAG programmer] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.embedded-projects.net/index.php?page_id=157 Xilinx JTAG XSVF Player mit USBprog] ([[CPLD]], [[FPGA]])&lt;br /&gt;
** [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter Xilinx Platform Cable I Nachbau] - Nachbau des Originalem Xilinx Platform Cable I (DLC9)&lt;br /&gt;
** [http://warmcat.com/milksop/cheaptag.html Cheaptag] - Xilinx Parallel Jtag programming cable&lt;br /&gt;
** [http://embdev.net/topic/139121#new XSVF Player FTDI Bitbang] - XSVF Player with FTDI Bitbang mode&lt;br /&gt;
** [https://play.google.com/store/apps/details?id=com.wesche.xsvf XSVF Player FTDI Bitbang for Android] - XSVF Player with FTDI Bitbang mode for Android&lt;br /&gt;
&lt;br /&gt;
* Für Altera&lt;br /&gt;
** [http://translate.google.com/translate?js=n&amp;amp;prev=_t&amp;amp;hl=en&amp;amp;ie=UTF-8&amp;amp;layout=2&amp;amp;eotf=1&amp;amp;sl=auto&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Fmarsohod.org%2Findex.php%2Fourblog%2F11-blog%2F163-marsblaster Marsblaster] für Altera FPGA, serieller Port&lt;br /&gt;
** [http://www.altera.com/literature/ug/ug_bbii.pdf ALTERA ByteBlaster]&lt;br /&gt;
** [http://www.entner-electronics.com/tl/index.php/eeblaster.html EEBlaster], sehr günstig, kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
** [http://www.pyroelectro.com/tutorials/byteblaster/index.html Build A ByteBlaster] bei www.pyroelectro.com&lt;br /&gt;
** [http://www.ixo.de/info/usb_jtag/ USB-JTAG-Adapter], kompatibel zu ALTERA USB-Blaster&lt;br /&gt;
&lt;br /&gt;
* ColdFire BDM Pod&lt;br /&gt;
** [http://forums.freescale.com/t5/68K-ColdFire-reg-Microprocessors/TBLCF-open-source-debugging-cable/m-p/7543 TBLCF open source debugging cable]&lt;br /&gt;
** [http://www.rockbox.org/wiki/IriverBDM IriverBDM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- VERALTETE LINKS - PRODUKTE WERDEN DORT NICHT GEFUNDEN&lt;br /&gt;
* FCPU-X Platform Cable USB JTAG cable&lt;br /&gt;
** Bezugsquelle (DE): [http://www.vht-impex-shop.de/product_info.php?info=p786_HW-USB-platform-cable--FCPU-X-platform-cable-similar-to-HW-USB-Kabel-for-Xilinx-evaluation-boards-etc-.html&amp;amp;XTCsid=e613a7119493deac52e83e9038ce131a http://www.vht-impex-shop.de]&lt;br /&gt;
** Bezugsquelle (US): [http://www.celeritous.com/estore/index.php?main_page=product_info&amp;amp;cPath=1&amp;amp;products_id=129 http://www.celeritous.com] &lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Universal JTAG Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Versaloon ===&lt;br /&gt;
&lt;br /&gt;
[http://www.versaloon.com/ Versaloon] is a full-opensource multi-functional platform based on generic USB_TO_XXX protocol, which can now support more than 10 kinds of interfaces including [[ISP]], [[JTAG]], SWD, [[SPI]], [[IIC]] and so on. Programming is supported for: &lt;br /&gt;
* STM8 support(SWIM)&lt;br /&gt;
* STM32 support(ISP/JTAG/SWD) siehe auch Forumbeitrag von Bingo [http://www.mikrocontroller.net/topic/202785]&lt;br /&gt;
* LPC1000 support(ISP/JTAG/SWD)&lt;br /&gt;
* LM3S support(JTAG/SWD)&lt;br /&gt;
* AT91SAM3 support(JTAG/SWD)&lt;br /&gt;
* AT89S5X support(ISP)&lt;br /&gt;
* PSOC1 support(ISSP)&lt;br /&gt;
* MSP430(without TEST) support(JTAG)&lt;br /&gt;
* C8051F support(C2/JTAG)&lt;br /&gt;
* AVR8 support(ISP/JTAG)&lt;br /&gt;
* LPC900 support(ICP)&lt;br /&gt;
* HCS08 support(BDM)&lt;br /&gt;
* HCS12(X) support(BDM)&lt;br /&gt;
* SVF support(JTAG)&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
== AVR JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [[AVR-Studio]] (Windows)&lt;br /&gt;
* [[GDB]] in Verbindung mit [http://avarice.sourceforge.net/ AVaRICE] und AVR JTAGICE kompatibler Hardware. (Linux)&lt;br /&gt;
&lt;br /&gt;
== ARM JTAG ==&lt;br /&gt;
&lt;br /&gt;
* [[GDB]] bzw. Insight und auf die ARM JTAG Hardware abgestimmte GDB-Server (OCDRemote, [http://openocd.berlios.de/ OpenOCD], BDI2000, Peedi)&lt;br /&gt;
* [http://www.hjtag.com/ H-JTAG] und RDI-kompatible Debugger (SDT2.51, ADS1.2, RealView and IAR)&lt;br /&gt;
* Herstellerspezifische Software z.&amp;amp;nbsp;B. von Lauterbach&lt;br /&gt;
&lt;br /&gt;
== FPGA JTAG ==&lt;br /&gt;
&lt;br /&gt;
* Altera: Quartus Programmer (quartus_pgm)&lt;br /&gt;
* Lattice: ToDo... (Lattice setzt seit 2011 auf die JTAG-Funktionalität des FT2232 und benötigt daher keine speziellen USB-JTAG-Adapter mehr)&lt;br /&gt;
* Xilinx: Impact, xc3sprog, ...&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Tools ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.topjtag.com TopJTAG]: boundary-scan software for circuit debugging and flash programming.&lt;br /&gt;
* [http://www.ricreations.com/index.html Universal Scan]&lt;br /&gt;
* [http://urjtag.org UrJTAG]: Kommandozeilentool für Boundary Scan, FPGA und CPLD und Speicher lesen und schreiben u.v.a.m., Nachfolger von openwince JTAG Tools.&lt;br /&gt;
* [http://www.gojtag.com/ goJTAG]: graphisches Boundary-Scan-Tool zum manuellen Durchtesten von Verbindungen, besonders für Nicht-JTAG-Experten geeignet. Obwohl in Java geschrieben, funktioniert es nur unter Windows. Funktioniert im Prinzip mit allen FT2232(H) basierten Adaptern.&lt;br /&gt;
* [http://andreas-weschenfelder.de.vu FT2232 BoundaryScan Tool]: free boundary-scan software for flash programming [S29GL128N, S29GL256N, S29GL512N, M25PX16, M25PX32, M25PX64, etc ].&lt;br /&gt;
&amp;lt;!-- link tot 20100521 * [http://www.rsn-tech.demon.co.uk/pjtag/pjtag.html Pesonal JTAG]: halbfertiges Hobbyprojekt, ist bissel buggy, aber kleine Sachen gehen damit. --&amp;gt;&lt;br /&gt;
* [http://www.blunk-electronic.de/products.html]: boundary scan test system M-1 for board and system testing, runs on Linux, open source, no licensing ! Read more on http://www.blunk-electronic.de/products.html&lt;br /&gt;
&lt;br /&gt;
= Weblinks =&lt;br /&gt;
&lt;br /&gt;
*Debugging the Linux kernel with JTAG] von Alexander Sirotkin [http://www.embedded.com/design/operating-systems/4207333/Debugging-the-Linux-kernel-with-JTAG] (LPC3250 mit FemtoLinux, OpenOCD)&lt;br /&gt;
*[http://hri.sourceforge.net/tools/jtag_faq_org.html JTAG FAQ] auf sourceforge.net&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR]]&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:FPGA und Co]]&lt;br /&gt;
[[Kategorie:Datenübertragung]]&lt;/div&gt;</summary>
		<author><name>Ralfiboy</name></author>
	</entry>
</feed>