Frage:
Wie identifiziere und verwende ich JTAG?
mrduclaw
2013-03-29 23:32:04 UTC
view on stackexchange narkive permalink

Ich bin durch und durch ein Software-Typ. Aber wenn ich Hardware auseinander nehme, muss ich regelmäßig nach JTAG- und RS232-Ports suchen. Bisher hatte ich immer Glück und konnte Stifte an den RS232-Port anlöten und eine serielle Verbindung herstellen.

Kann mir jemand in den zukünftigen Zeiten, in denen ich Pech habe, erklären, was JTAG ist (dh es gibt nur einen JTAG-Typ und ich kann davon ausgehen, dass er an einen einzelnen Porttyp angeschlossen wird, z. B. einen DB-9 für serielle?) Und wie ich damit Firmware von einem eingebetteten System sichern würde oder ist alles herstellerspezifisch?

Vier antworten:
#1
+24
Mellowcandle
2013-03-30 01:54:24 UTC
view on stackexchange narkive permalink

Es sind einige JTAG-Anschlüsse verfügbar, daher ist es schwer zu sagen, welcher und wie die Stifte positioniert sind.

Ich schlage vor, Sie nehmen eine Lupe und lesen das Mikrocontrollermodell. Mit dem Modell können Sie das Datenblatt im Internet finden. Sehen Sie sich die PIN des Mikrocontrollers an und sehen Sie, wie viele JTAG-Ausgänge es hat. Einige neuere Chips haben Trace-Ausgänge, andere nicht. Dies kann Ihre Optionen wirklich einschränken.

Vielleicht möchten Sie hier einen kurzen Blick auf verschiedene JTAG-Konnektoren werfen.

Eine weitere wertvolle Sache Erwähnt haben verschiedene Mikrocontroller ein bestimmtes Bit, dass beim Setzen die JTAG-Anschlüsse deaktiviert sind. Dies erfolgt bei der Veröffentlichung, um sicherzustellen, dass niemand versucht, die Firmware zu stehlen oder das System zu debuggen. Die einzige Möglichkeit, den JTAG wieder zu aktivieren, besteht darin, den Mikrocontroller hart zurückzusetzen. Dies führt zu einem vollständigen Zurücksetzen des internen Flashs, sodass die gesamte Firmware verloren geht ...

Ich möchte nur hinzufügen, dass meiner Erfahrung nach (High-End-Geräte) ein hartes Zurücksetzen häufig nicht funktioniert, um die JTAG zu aktivieren. Diese Schnittstellen werden häufig durch Durchbrennen einer Sicherung dauerhaft verriegelt. In den anderen Fällen sind sie durch 64-Bit-Schlüssel passwortgeschützt, mit erheblichen Verzögerungen (Millisekunden bis zu einer Sekunde) zwischen möglichen Entsperrversuchen. Nur um sicherzugehen, dass Sie nicht einmal daran denken möchten, sie mit einer Farm von Geräten brutal zu erzwingen. Und um dich ein bisschen zu täuschen, geben sie dir manchmal auch gerne einen Entsperrversuch und ignorieren dann stillschweigend den Reset bis zu einem Kalt-Reset.
#2
+21
0xC0000022L
2013-04-25 00:17:13 UTC
view on stackexchange narkive permalink

JTAG wurde ursprünglich zum Testen / Überprüfen von Hardwaregeräten erstellt. Der Prozess wird als Boundary Scanning bezeichnet, und JTAG wurde nach der Arbeitsgruppe benannt: Gruppe, einige Zeit in den 1980er Jahren.

Die Idee war, eine Schnittstelle zu definieren, die zum Testen von Hardware (Mikrocontroller und angeschlossene Peripheriegeräte nach der Herstellung) verwendet werden kann. Das heißt, nach der Entwicklung der Hardware und der anschließenden Herstellung.

Die Geräte, mit denen der Grenzscan gemäß JTAG durchgeführt wird, werden als JTAG-Sonden bezeichnet. Früher waren sie mit dem parallelen Anschluss Ihres Computers verbunden, heutzutage werden sie jedoch häufiger über USB angeschlossen und basieren auf einem der FTDI-Chips.

Auf einer Leiterplatte bilden die Chips und Peripheriegeräte eine "Daisy Chain", verbunden mit dem TAP (Test Access Port). So können Sie die verschiedenen Komponenten über einen Port testen. Die Anweisung BYPASS wird verwendet, um ein Gerät früher in der Kette anzuweisen, Ihre Befehle zu ignorieren und weiterzugeben. IDCODE wird verwendet, um das Gerät und einige grundlegende Merkmale zu identifizieren.

Eine übersichtliche Übersicht einiger technischer Details finden Sie hier: JTAG - Eine technische Übersicht, aber auch der Wikipedia-Artikel und seine Referenzliste liefern wertvolle Informationen. Denken Sie daran, dass dies vor dem WWW festgestellt wurde und dass viele Informationen dazu auf toten Bäumen verboten wurden.

Der Begriff Boundary Scan wird weiterhin zur Beschreibung des Prozesses verwendet und ist Teil des Akronyms BSDL ( Boundary Scan-Beschreibungssprache), mit dem Sie normalerweise Kontakt aufnehmen würden mit, wenn Sie ein Gerät / einen Chip an der Grenze scannen und der Anbieter dies von Ihnen erwartet. Ansonsten neigen sie dazu, ziemlich geheim zu sein. Der Grund für die Geheimhaltung ist, dass sie im Wesentlichen einen Teil ihres Hardware-Designs verschenken, den die meisten dieser Hardwareanbieter als Geschäftsgeheimnis betrachten. Ich hatte das Glück, unter NDA auf die BSDL-Datei zugreifen zu können, obwohl es sich nicht um die genaue Silizium-Revision handelte, die ich debuggte. Aber mir wurde versichert, dass die BSDL-Datei mit der Silizium-Revision des Chips, den ich hatte, gut funktionieren würde. Wenn Sie es sich jedoch nicht leisten können, Ihre Hardware zu zerstören, müssen Sie sicherstellen, dass Ihre BSDL-Daten mit der Hardware übereinstimmen, mit der Sie eine Verbindung herstellen .

Heutzutage wird JTAG nicht nur für nur testen . Natürlich ist Hardware-Debugging eine Teilmenge von Tests, also meine ich das nicht. Ich meine, mit JTAG-Sonden können Sie auch Firmware auf ansonsten defekter Hardware flashen. Und das ist wichtig beim Debricking von gemauerter Hardware .

Mögliche Probleme

Bei der Verwendung von JTAG gibt es mehrere Probleme, die Sie lösen müssen beiseite von der Identifizierung der Anschlüsse überwinden. Und ich werde das in seiner Antwort erwähnte Bit Mellowcandle ignorieren.

Sie müssen sicher sein, dass Sie alles richtig gemacht haben, da Sie sonst Ihre Hardware braten können, anstatt zum Beispiel

Identifizieren Sie die JTAG-Pins.

Oft finden Sie TMS, TCK, TDI usw. auf Ihrer Leiterplatte, sodass Sie wissen, dass es sich um ein Gerät handelt das unterstützt JTAG. Lupen können hilfreich sein;)

Dies ist jedoch keine wirklich arkane Kunst - es wird schwieriger, wenn die Stifte nicht beschriftet sind und Sie sich auf die Dokumentation von Drittanbietern verlassen müssen. P. >

Natürlich ist es auch möglich, dass Ihr Board einen JTAG-Header anstelle von bloßen Pins / Kontakten hat.

Identifizieren Sie den Mikrocontroller

Ja, In der Tat müssen Sie die Art des Chips identifizieren, den Sie vor sich haben, und herausfinden, welche Spannung erwartet wird, da Sie andernfalls Ihren Chip oder Ihre JTAG-Sonde oder beides braten können.

Wenn Sie Glück haben, haben Sie einen JTAG-Header auf Ihrem Gerät, mit dem Sie herausfinden können, was es ist und implizit, welche Spannung es erwartet und so weiter. Meines Wissens gibt es Quasi-Standards für ARM und MIPS. Lesen Sie die Antwort von Mellowcandle für die erstere und diese und diese für die letztere.

Verwenden Sie alle verfügbaren Dokumentationen, um alle Annahmen zu überprüfen du machst. DSL-Router enthalten häufig MIPS-CPUs, aber auch ARM und möglicherweise auch andere. Projekte wie OpenWRT verfügen über eine Fülle von Informationen über Hardware, auch über Hardware, die nicht direkt von ihnen unterstützt wird.

Die JTAG-Sonden

Normalerweise werden die Hardwareanbieter dies tun behaupten, dass sie den McCraigor Wiggler oder eine andere schrecklich teure JTAG-Sonde unterstützen. Dies bedeutet, dass Sie alleine sind, wenn Sie keine "nicht unterstützte" (vom Hersteller) JTAG-Sonde verwenden! Das bedeutet nicht, dass es nicht funktioniert, aber es bedeutet, dass Sie verdammt sicher sein müssen, was Sie tun (Spannung, JTAG-Befehle, die Sie senden und so weiter).

Tools

FLOSS zur Verwendung von JTAG

GDB () kann in einigen Szenarien (z. B. OpenOCD) in Verbindung mit diesen verwendet werden.

"Günstig "JTAG-Sonden

Hinweis: Manchmal hören Sie die Begriffe Debugger oder Emulator für die JTAG-Sonden selbst.

  • AVR JTAGICE, Atmel - if Wenn Sie AVR-Controller verwenden, sind dies die Sonden der Wahl.
  • JTAGkey2 und Freunde, Amontec
  • PicoTAP, Gopel - Der PicoTAP wurde vor einiger Zeit auch kostenlos in einem Lernkit (mit CD und dergleichen) verschenkt.
  • Es gibt mehrere billige JTAG-Lösungen von Olimex (besonders nützlich, wenn Sie mitmachen OpenOCD)
  • BusBlaster von Dangerous Prototypes
  • Last but not least: Wenn Sie gerne löten: OpenJTAG
#3
+8
Igor Skochinsky
2013-06-19 21:35:57 UTC
view on stackexchange narkive permalink

Um die JTAG-Pinbelegung herauszufinden, gibt es bei Google viele Treffer für "JTAG Finder". Ich habe auch meine eigene Implementierung:

http://mbed.org/users/igorsk/code/JTAG_Search/

Es ist für mbed, aber ich habe es versucht

Hier ist ein Zitat aus dem Kommentar, das den grundlegenden Ansatz beschreibt:

  Die Gesamtidee: 1) Wählen Sie 2 beliebige Pins als TMS und TCK. 2) Verwenden Sie diese, setzen Sie TAP zurück und verschieben Sie dann DR, während Sie den Zustand aller anderen Pins beobachten. 3) Für jeden Pin, der eine TAP-ID erhalten hat (dh Bit 0 ist 1): 4) Verwenden Sie den Pin als TDI, geben Sie ein bekanntes Muster in den TAP ein. 5) Verschieben Sie weiter und überwachen Sie den Rest der Pins. 6) Wenn einer der verbleibenden Pins das Muster empfangen hat, handelt es sich um TDO  
#4
+7
samuirai
2013-06-19 18:54:25 UTC
view on stackexchange narkive permalink

Ich habe ein Video erstellt, in dem ich eine mögliche JTAG-Verbindung mit einem Multimeter identifiziert habe. Hier ist ein Bild, das zeigt, welche Pins verbunden sind und das mit einer Standard-JTAG-Pinbelegung für VCC em übereinstimmt > und GND . Dies ist ein Hinweis darauf, dass es sich um JTAG handeln könnte, dies muss jedoch nicht sein.

example JTAG connector



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...