Open Source im professionellen Einsatz

Entdeckungen erkunden

Dieses Risiko lässt sich deutlich reduzieren, indem Vorsichtige die TCK-, TMS- und TDI-Leitungen des Adapters zunächst nur über in Serie geschaltete Widerstände mit dem Gerät verbinden. Der Widerstand begrenzt den maximalen Strom, der zwischen Adapter und dem Gerät fließt. Bei 3,3 Volt limitiert ein 330-Ohm-Widerstand den Strom auf 10 Milliampere. Dies gilt meist als sicherer Wert. Auch der JTAG-Finder verwendet ihn. Dennoch bleibt bei derartigen Hardware-Eingriffen naturgemäß immer ein Restrisiko.

Haben sie die Pins erst einmal identifiziert, greifen Anwender über einen Adapter vom Linux-Rechner auf das zu untersuchende Gerät zu. Die zwei wichtigsten Softwarepakete dazu sind Ur-JTAG [6] und Open OCD [7]. Bei der Wahl des JTAG-Adapters sollten sich Hardware-Forscher daher für einen Typ entscheiden, den sowohl Ur-JTAG als auch Open OCD unterstützen. FT2232-basierte Adapter, die diesen Konverter-Chip von FTDI verbauen, sind eine kluge Wahl, da beide Programme ihn unterstützen. Eine Liste weiterer Adapter findet sich ebenso wie Schaltpläne und Platinenlayouts für den Eigenbau auf einer Seite der Hochschule Augsburg [8].

Nachdem Entwickler den JTAG-Adapter wie beschrieben mit den wahrscheinlichen JTAG-Pins verbunden und Ur-JTAG installiert haben, testen sie den JTAG-Zugriff. Dazu starten sie - mit den erforderlichen Zugriffsrechten auf den USB-Bus versehen - Ur-JTAG mit dem Kommando »jtag«. Mit dem Kommando »cable FT2232« initialisieren sie dann den JTAG-Adapter.

Mit dem Befehl »detect« lassen sich die in der JTAG-Kette vorhandenen Chips identifizieren und anzeigen. Dazu nutzt Ur-JTAG die »IDCODE«-Anweisung. Die meisten Chips laden sie automatisch in das Instruktionsregister, sobald der Zustandsautomat in den Test-Logic-Reset-Zustand gelangt. Im Datenregister befindet sich dann die 32-Bit-Identifikationsnummer. Sie setzt sich aus einer Hersteller- und Chip-ID sowie einer Revisionsnummer zusammen.

Zeigt die Software keine Device-IDs an, ist der JTAG-Adapter entweder falsch angeschlossen oder die Chips geben den »IDCODE« nicht von sich aus preis. Zeigt Ur-JTAG nicht zumindest die Länge der Instruktionsregister an - beispielsweise durch die Ausgabe »IR length: 14« -, so ist der Adapter höchstwahrscheinlich falsch angeschlossen oder die JTAG-Schnittstelle des Geräts deaktiviert.

Belegungen nachschlagen

Kann Ur-JTAG dagegen nur die Komponenten nicht identifizieren, gibt der Anwender den Chip mit dem »include«-Kommando notfalls von Hand an. Ur-JTAG unterstützt bereits einige Chips und lässt sich gut erweitern. Das Programm kennt beispielsweise auch Dateien der Boundary Scan Description Language (BSDL). Sie beschreiben Chips und die von ihnen unterstützten Instruktionen in einer standardisierten Form und finden sich als Online-Sammlung [9].

Ur-JTAG vermag auch auf viele Flashspeicher via JTAG zuzugreifen und unterstützt das Serial Vector Format (SVF), das zusätzlich den Zugriff auf FPGAs ermöglicht. Die jeweilige Vorgehensweise hängt immer vom vorliegenden Chip ab, aber der Funktionsumfang von Ur-JTAG und seine Dokumentation helfen Anwendern mit einer Befehlsreferenz und einigen Anwendungsbeispielen.

Neben Ur-JTAG lässt sich JTAG unter Linux auch mit der Open-OCD-Software nutzen. Sie widmet sich primär ARM-Controllern und beherrscht im Gegensatz zu Ur-JTAG auch On-Chip-Debugging mit GDB. Auch dieses Projekt verfügt über detaillierte Erläuterungen verschiedener Chips und eine gute Einleitung [10].

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook