Neue Debug-Schnittstellen Guter Draht zum Target

Neben Rechengeschwindigkeit, Datendurchsatz und Peripheriefunktionen ist bei Anwendungen auf SoC-Basis die Wahl der richtigen Debug-Schnittstelle entscheidend. JTAG als Interface zu den Entwicklungs- und Diagnosewerkzeugen wird heutigen Anforderungen bezüglich Geschwindigkeit, Pin-Anzahl und Robustheit nur noch bedingt gerecht. Aber es gibt eine Reihe interessanter Alternativen.

Die Anforderungen an die Hard- und Softwarewerkzeuge für ein System-on-Chip (SoC) während dessen Lebenszyklus sind je nach Phase sehr unterschiedlich: Stehen während der Entwicklung schnellstmögliche Kommunikation zum Zielsystem, eine hohe Beobachtbarkeit der entwickelten Applikation bis hin zum Echtzeit-Trace und eine effektive Nutzung von On-Chip-Debug-Ressourcen im Vordergrund, ist in der Produktionsphase eher die gleichzeitige Nutzung der Debug-Schnittstelle für Flash-Programmierung, automatisierte Tests oder Kalibrierung von Interesse.

Ursprünglich eigentlich für den Test von ICs entwickelt, gilt die nach fast 20 Jahren schon etwas betagte »JTAG«-Schnittstelle nach IEEE 1149.1 noch immer als De-facto-Standard für den Debug-Zugang. Mit den immer komplexer und schneller werdenden SoCs zeigt sie jedoch immer deutlichere Schwächen. Schon ohne besondere Anforderungen beansprucht JTAG mindestens fünf Steuerleitungen (TDI, TDO, TCK, TMS und TRST).

Für die Umsetzung einer kompletten Debug-Schnittstellenspezifikation sind darüber hinaus aber noch weitere Signale für Target-Reset, Target-Referenzspannung und herstellerspezifische Signale für das On-Chip-Debugsystem vonnöten.

Was ist also die Alternative? Zum Beispiel bei Entwicklung neuer Debug-Schnittstellen die Anzahl benötigter Pins zu reduzieren. Das funktioniert inzwischen auch ganz gut, wie anhand einiger nachfolgender Beispiele deutlich wird. Geht es jedoch darum, das System möglichst umfassend und in Echtzeit zu beobachten (ist also Trace gewünscht), steht die Forderung nach einer hohen Bandbreite an allerhöchster Stelle. Hier die Anzahl der Pins zu verringern, würde unrealistisch hohe Übertragungsfrequenzen auf den einzelnen Leitungen erfordern.

Low-Pin-Count-Schnittstellen

Neben der Kostenreduktion des SoCs hat die Verringerung der für den Debug-Zugang notwendigen Signale auch einen direkten Nutzen für den Anwender. Denn wegen des notwendigen Leiterplattenplatzes auf der Serienhardware und der mitunter recht teuren Steckverbinder verzichten Entwickler oft ganz auf eine Debug-Schnittstelle auf der Leiterplatte. Weniger Leitungen ermöglichen hingegen kleinere, preiswertere Steckverbinder und machen so die Realisierung eines Debug-Zuganges wieder attraktiv.

Device Access Port (DAP)

Beim »Device Access Port«, der von Infineon inzwischen in allen Mikrocontroller-Neuentwicklungen der Familien »XC2000/XE166«, »TriCore« und »XC800« Verwendung findet, ist die Anzahl der für die Übertragung des Debug-Protokolls erforderlichen Leitungen standardmäßig gegenüber JTAG von fünf auf zwei reduziert. Es handelt sich dabei um eine Taktleitung (DAP0) sowie um eine bidirektionale Signalleitung (DAP1). Die Implementierung erfolgt parallel zum ebenfalls noch vorhandenen JTAG-Interface. Dabei werden die JTAG-Pins »TMS« und »TCK« alternativ für JTAG oder DAP benutzt (Bild 1).

Die maximale DAP-Taktrate kann bis zu 80 MHz betragen. Damit sind trotz verringerter Leitungszahl mindestens die gleichen Übertragungsleistungen wie beim klassischen JTAG möglich. Zudem zeichnet sich die DAP-Schnittstelle durch eine Latenz im Mikrosekundenbereich und eine sehr robuste Kommunikation aus. Letztere wird durch eine im Protokoll integrierte, 6 Bit breite Checksumme (CRC) erreicht. Außerdem ist das Protokoll so aufgebaut, dass zum Beispiel ein Schreibbefehl vom Host zum Target rückbestätigt wird. Unverhoffte Änderungen im Target-Zustand oder Störungen in der Übertragung kann das Tool also sicher erkennen.

Serial Wire Debug (SWD)

Einen interessanten Weg hat auch ARM mit der »Serial Wire Debug«-Schnittstelle beschritten. SWD ist Teil eines ganzen Pakets neuer Debug- und Trace-Techniken, die unter dem Oberbegriff »CoreSight« zusammengefasst sind. Implementierungen der SWD-Schnittstelle gibt es bereits in den »Stellaris«-Bausteinen mit »Cortex-M3«-Kern von Luminary Micro, jetzt Texas Instruments, und in der »STM32«-Familie von STMicroelectronics. Neben dem klassischen JTAG-Port, der auch hier alternativ weiter zur Verfügung steht, bietet der Serial-Wire-Modus ein Zwei-Pin-Debug-Interface.

Die von ARM eingeführte strikte Trennung von Debug-Port (wahlweise JTAG oder SWD) und dem eigentlichen Access-Port, also dem Zugriff auf On-Chip-Debughardware, ermöglicht einen einfachen Austausch unter Beibehaltung sämtlicher Funktionen. Eine Besonderheit ist der kombinierte »Serial Wire JTAG Debug Port« (SWJ-DP), der beide Schnittstellen über Pin-Multiplexing vereint.

Im Serial-Wire-Modus fungiert »TCK« als Taktleitung, und über »TMS« werden bidirektional Daten ausgetauscht. Die Umschaltung erfolgt über definierte TMS-Sequenzen. Sofern ein Mikrocontrollerhersteller einen SWJ-DP implementiert hat, kann das TDO-Signal zur Ausgabe von unterschiedlichen Trace-Ereignissen über einen einzigen Pin genutzt werden, was sich wiederum in minimalen Chip-Kosten niederschlägt.

IEEE 1149.7 (Compact JTAG)

Die dritte zur Diskussion stehende Schnittstellenvariante ist der neue herstellerunabhängige Standard »IEEE 1149.7« (Compact JTAG oder cJTAG). Er wurde entwickelt, um aktuellen und zukünftigen Anforderungen im Bereich des Board- beziehungsweise Systemtests gerecht zu werden. Unter Beibehaltung der vollen Abwärtskompatibilität zum bisherigen IEEE-1149.1-Standard zeichnet sich cJTAG durch eine ganze Reihe neuer Eigenschaften wie Power-Management, Applikations-Debugging und Geräteprogrammierung aus.

Insgesamt sind sechs Klassen definiert, die durch IEEE-1149.7-kompatible TAP-Controller (TAP.7) implementiert werden können. Für eingebettete Anwendungen, bei denen es in erster Linie auf Kosten und Performance ankommt, sind vor allem die Klassen 4 und 5 interessant. Hier sind nur zwei Pins zur Kommunikation notwendig, und mehrere optimierte Scan-Protokolle steigern den Datendurchsatz wesentlich.