Was ist ein JTAG?


30

Ich bin ziemlich neu in Embedded-Systemen, und ich sehe diesen Begriff immer wieder, aber ich kann nicht ganz verstehen, was es ist. Eine schnelle Online-Suche liefert diese Wikipedia-Seite: https://en.wikipedia.org/wiki/Joint_Test_Action_Group, die sie als eine Art Protokoll für das Debuggen beschreibt. In anderen Kontexten war es jedoch möglich, den Speicher eines Chips wie einen Programmierer zu programmieren. Was ist es?


4
In dieser Frage sind einige nützliche Edelsteine ​​versteckt .
David

2
Ich habe dwelch eine +1 gegeben. Darüber hinaus wird JTAG manchmal als Verb missbraucht, das allgemein bedeutet, eine Sache zu debuggen / testen. Eine Person, die "JTAGs" ausführt, verwendet möglicherweise tatsächlich ein anderes Protokoll, das der Gerätehersteller mit den physischen JTAG-Pins (dh SWD) überlappt hat. Sie können SWD oder JTAG verwenden, aber nicht beide. Allerdings ist niemand SWD ("swoods"?) Ihre Geräte.
Jon

Ja, Sie können mit JTAG
Snoop am

Antworten:


21

Es ist wie USB, SPI, I2C und andere "Busse" und hat eine Reihe von beliebten Verwendungsmöglichkeiten, die nicht auf Folgendes beschränkt sind:

  • Eine davon betrifft das Testen von Silizium, bevor zu viel in jedes Teil investiert wird. Sie können beispielsweise den größten Teil des Teils überprüfen, während sich noch ein Chip auf dem Wafer befindet. Zugegebenermaßen kann das Würfeln des Wafers Schaden anrichten, sodass Sie es erneut testen möchten. Möglicherweise tun Sie dies jedoch vor dem Verpacken, möglicherweise danach.

  • Sie können es verwenden, um Boundary-Scans auf Boards durchzuführen. Sie können eine Platine in einer Produktionslinie einsetzen (vorausgesetzt, die Platine muss richtig konstruiert sein und ein gewisser Prozentsatz der Chips muss dies unterstützen), aber Sie können Konnektivitätstests mit niedriger Geschwindigkeit durchführen, den Stift an einem Ende einer Leiterbahn stimulieren und den anderen scannen Teile, um zu sehen, ob sie gemäß dem Design der Platine verbunden sind oder nicht.

  • Da die Chips bereits über diese dedizierten Pins verfügen, sollten Sie für Prozessoren dieselbe Schnittstelle verwenden, um mit einem On-Chip-Debugger (OCD) zu kommunizieren. Entwerfen Sie etwas im Prozessor, und lassen Sie zu, dass über jtag mit diesem gesprochen wird.

Dies ist eine generische Methode, mit der Sie Elemente in der Kette, an die Sie eine Reihe von Bits senden oder von denen Sie eine Reihe von Bits abrufen möchten, so isolieren können, dass jedes Element, mit dem Sie sprechen möchten, für verschiedene Zahlen ausgelegt werden kann von Bits von einer kleinen Zahl zu einer großen Zahl. Für einen Debugger müsste er natürlich in ein registergroßes Element in Ihrem Chip schreiben oder daraus lesen - möglicherweise ein 16-Bit-Register oder 32-Bit. Zum Testen von Silizium oder Platinen kann Ihre Scan-Kette jedoch aus Dutzenden von Bits bestehen. Jedes einzelne Objekt, das Sie ansprechen, kann in der Größe variieren, falls Sie dies wünschen. Dies macht diesen Bus zu einem sehr vielseitigen Bus mit einer relativ geringen Anzahl von Pins, der für diese Art von Anwendungsfällen attraktiv ist.

Vielleicht haben sie wegen der Beliebtheit beim Debuggen von Software jetzt einige Zwei-Pin-Lösungen, um die Anzahl der Pins für Mikrocontroller zu reduzieren, und vielleicht werden andere dies übernehmen, vielleicht auch nicht.


Gibt es technische Aspekte von JTAG, die es für diese Zwecke ausleihen, oder ist es nur aus historischen Gründen?
Owen

Lesen Sie den Wikipedia-Artikel. Meine Meinung ist, dass es bereits vorhanden und in die Platinen und Chips integriert war, und dass es flexibel genug war, um andere Anwendungen zu unterstützen, und zumindest einige Tools bereits vorhanden waren, muss jemand gesagt haben, warum es nicht für diese anderen Dinge verwendet werden sollte. Ich denke, seine Flexibilität im Vergleich zur Pinanzahl macht es sehr attraktiv. Es gibt und gibt noch andere Lösungen für Debugger oder in der Schaltkreisprogrammierung, aber dank der FTDI-MPSSE-Anweisungen und des allgemeinen Erfolgs von FTDI mit allem, was über USB verfügbar ist, sind jetzt preiswerte J-Tag-Tools weit verbreitet.
old_timer

10

JTAG war ursprünglich eine Schnittstelle zum Testen von Leiterplatten nach der Montage. Die E / A-Leitungen auf den Chips konnten über die JTAG-Ports gesteuert und gelesen werden, so dass eine Board-Testsequenz durchgeführt werden konnte. Später wurde es auch als Programmier- und Debug-Schnittstelle verwendet. Welche Funktionalität über JTAG verfügbar ist, hängt von dem jeweiligen IC ab, mit dem Sie sich befassen.

Ein Vorteil von JTAG gegenüber den meisten anderen Programmierschnittstellen besteht darin, dass Geräte in Reihe geschaltet werden können. Ein JTAG-Port kann also dazu dienen, mehrere Geräte zu programmieren / debuggen / testen (obwohl ich raten würde, Ihre Systeme so zu gestalten, dass verschiedene Marken von Chips auf verschiedene Ketten aufgeteilt werden können, während das JTAG-Protokoll auf niedriger Ebene leider ziemlich standardisiert ist und die Werkzeuge enthält, die Sie benötigen zum programmieren / debuggen sind die chips nicht).


9

JTAG ist ein merkwürdiger Begriff. Zu Beginn kann der Begriff einen bestimmten Konnektor und ein bestimmtes Protokoll angeben, das aus einem Taktsignal (TCK), einer Modusauswahl (TMS) und einem Dateneingang / -ausgang (TDI / TDO) besteht. Hierbei handelt es sich um ein Netzwerk von Geräten, bei dem das TDO jedes Geräts in einer sogenannten Scan-Kette mit dem TDI des nächsten Geräts verbunden ist. TMS wird verwendet, um alle Geräte gleichzeitig in verschiedene Modi zu versetzen .

Die Geräte in der Abtastkette sind typischerweise als ein großes Schieberegister verbunden, das aus Registern in jedem einzelnen Gerät besteht. Wenn sich Geräte im Status SHIFT_IR oder SHIFT_DR befinden, werden sie mit der Scan-Kette eines von zwei temporären Registern verbunden: Ein Befehlsregister und ein Datenregister.

Sobald ein Wert verschoben wurde, kann der UPDATE_IR- oder UPDATE_DR-Modus aktiviert werden, indem TMS beim Umschalten von TCK entsprechend eingestellt wird. Zu diesem Zeitpunkt wird der in das Register verschobene Wert "wirksam". Wenn Sie beispielsweise verschiedene Sequenzen in das IR eines FPGA verschieben und in UPDATE_IR wechseln, wechselt das FPGA in verschiedene Modi wie Konfiguration, Rücklesen, normale Laufzeit oder Zugriff auf bestimmte Benutzerregister und JTAG-spezifische Grundelemente, die im Entwurf instanziiert sind.

Ebenso können Erfassungszustände verwendet werden, um einen Wert aus dem Gerät zu "lesen" und in den IR oder DR zu stellen, um über TDO herausgeschoben und schließlich vom JTAG-Programmierer gelesen zu werden.


4

JTAG definiert ein serielles Protokoll und einige Befehle, um den Zugriff auf interne Register in komplexen ICs zu ermöglichen. Dies ermöglicht es einem Tester, mit wenigen Stiften auf übliche Weise Beobachtbarkeit und Steuerbarkeit zu erreichen .

Die ursprüngliche Verwendung war "Boundary Scan", bei dem alle E / A-Pins von einem großen Schieberegister gelesen und angesteuert werden konnten, das den Chip umkreist. Es wurde jedoch schnell erweitert, weitere Schieberegister hinzuzufügen, um auf die Interna des Chips einschließlich der Speicher zuzugreifen.

Sie verwenden selten Bit-Bang-JTAG. Der Zugriff erfolgt normalerweise über Bibliotheken, auch Treiber genannt, die vom IC-Hersteller bereitgestellt werden und vom Testsystem und vom Testzugriffsadapter verwendet werden.


Der Chip muss also tatsächlich einen JTAG sowohl von der Hardware als auch von der Software unterstützen?
UnTraDe

@UnTraDe Nein, der Chip unterstützt JTAG in Hardware und möglicherweise in Software (z. B. kann ein FPGA einige Schnittstellen zwischen JTAG und dem Benutzerdesign offen legen), es ist jedoch keine Software-Unterstützung auf dem Chip erforderlich. Die Werkzeuge, die man verwenden würde, um mit Geräten über JTAG zu interagieren, hätten sowohl Software- als auch Hardware-Unterstützung (Software auf einem Computer und Hardware in Bezug auf einen JTAG-Programmierer, der an diesen Computer angeschlossen ist)
ζ--

3

Es gibt das, was JTAG bedeutet, und es gibt das, was JTAG bedeutet. Wie andere aus JTAG hingewiesen haben ‚ist‘ eine Industriestandard-Schnittstelle zum Testen der Herstellung, wie dies in J Oint T est A ction G ruppe.

Was JTAG für einen Entwickler eingebetteter Software bedeutet, ist die Debug-Schnittstelle auf dem SoC / Mikroprozessor für das externe Debuggen eingebetteter Software, die auf dem Chip ausgeführt wird. Nahezu jede CPU / SoC auf dem Markt verwendet die JTAG-Schnittstelle nicht nur für Herstellungstests, sondern auch für die Unterstützung von Software-Debugs. Sie finden eine JTAG-Schnittstelle auf allen Servern, von x86-CPUs bis hin zu WLAN-Routern für Heimanwendungen unter 50 US-Dollar. Mit der richtigen Schnittstellenhardware und der richtigen Software können Sie über diese Schnittstellen Speicher lesen / schreiben, Haltepunkte setzen und in einem Schritt Code erstellen.

Der Schlüssel ist natürlich die richtige Hardware und Software. Auch wenn die grundlegende JTAG-Schnittstelle standardisiert ist, sind die spezifischen Software-Debug-Funktionen, die in einem Gerät verfügbar sind, möglicherweise nicht verfügbar. JTAG ist wie TCP / IP. Es befindet sich in der Mitte des Anwendungsstapels. Sie benötigen die richtige physikalische Schicht, um mit dem Gerät zu kommunizieren (dh, was bedeutet, dass dieses Ding 10-Base-2 verwendet?!?!?), Und Sie benötigen darüber die richtige Anwendungssoftware (was bedeutet, dass ich einen Gopher benötige) Klient?!?!?!). Die Stärke des ARM-Ökosystems hat jedoch zu einer gewissen Standardisierung geführt (siehe OpenOCD).

Sie haben auch nach der Verwendung von JTAG zum Programmieren von Flash gefragt. Ja, manche Software verwendet es auch für diesen Zweck. Der SoC kann JTAG-Funktionen zum Lesen / Schreiben von CPU-Speicheradressräumen bereitstellen, er kann direkten Zugriff auf Flash-Controller bereitstellen und JTAG bietet mindestens unformatierten Low-Level-Zugriff auf E / A-Pins am Rand des Chips (dies war ursprünglicher Zweck der JTAG, die Durchgangsprüfung von Chip-zu-Chip-Verbindungen während des Fertigungstests zu ermöglichen, dh „JTAG Boundary Scan“). Jede dieser Einrichtungen könnte von geschickten Programmierern verwendet werden, um die zum Umprogrammieren eines Flash-Chips erforderlichen Signale zu steuern, falls ein Gerät versehentlich zugemauert wird.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.