JTAG vs. SWD-Debugging

Nachdem ich diesen Artikel überflogen habe, frage ich mich, welche Vorteile das SWD-Debugging gegenüber dem JTAG-Debugging hat.

Ich verstehe, dass SWD weniger Drähte/Pins benötigt, weniger Platz einnimmt usw. Aber wie spielt es sich in Bezug auf Leistung, Funktionen und Kosten der Hardware-Programmierer/Debugger-Geräte ab? Kann Code in IDEs wie Eclipse immer noch gebrochen/angehalten und schrittweise durchlaufen werden?

Kann ein ARM-Chip mit der SWD-Schnittstelle programmiert werden, wie ich glaube, dass dies in JTAG möglich ist?

ARM-basierte Chips mit den neueren Kernen (z. B. Cortex) können über SWD programmiert und debuggt werden.
@BPete: Ich habe festgestellt, dass es mit SWD schwierig ist, ST-basierte Chips zu debuggen, die den Ruhemodus verwenden. Unsere derzeitigen Boards haben keine Pins für JTAG, aber ich habe mich gefragt, ob JTAG in dieser Hinsicht vielleicht besser ist?
Dies (SWD) sieht ein bisschen wie die Spy Bi-Wire-Schnittstelle aus, die TI auf eine Teilmenge ihrer MSP430-Prozessoren aufgesetzt hat. Es ist ein 2-Draht-JTAG-ähnlich (plus Strom und Masse) mit SBWTCLK und SBWTDIO, die auf zwei Nicht-GPIO-Pins (TEST und RST/NMI) auf einem Beispielgerät gemultiplext sind. Unterstützt durch das EZ430-Entwicklungskit. Und es (SBW) unterstützt Stepping und Breakpoints! Ich weiß nicht, ob die eigenen ARMs von TI dieselbe Schnittstelle haben, aber es wäre interessant, wenn es genug Gemeinsamkeiten zwischen ihnen gäbe, um Programmier-/Debug-Tools gemeinsam zu nutzen.
Ihr Artikellink ist tot, aber vielleicht war das der Artikel? arm.com/files/pdf/Serial_Wire_Debug.pdf
@GabrielStaples, auch dein Link ist tot. Hier ist die gute Wayback-Maschine: web.archive.org/web/20190410232511/https://www.arm.com/files/…

Antworten (4)

SWD sollte in der Lage sein, den ARM-Chipsatz zu programmieren, und Sie können Haltepunkte debuggen und hinzufügen. Das andere Gute an SWD ist, dass Sie den Serial Wire Viewer für Ihre printf-Anweisungen zum Debuggen verwenden können. Ich habe es nur mit dem Keil-Compiler verwendet.

Sehen Sie sich diesen Link im Serial Wire Viewer an. keil.com/download/files/swv_on_cortex-m3.pdf

Elektrisch

  • Pin-Anzahl
    • JTAG benötigt 4 Signalleitungen
    • SWD benötigt nur 2 Signalleitungen
    • Die in IEEE 1149.7 spezifizierte 2-Draht-JTAG-Schnittstelle verringert die Anzahl der Pins, scheint aber auf vielen ICs nicht weit verbreitet zu sein. Es reduziert auch die Bandbreite.
  • Topologie
    • JTAG verwendet eine Daisy-Chain-Konfiguration für seine Datenleitungen zwischen Chips. Die Geschwindigkeit von JTAG wird daher durch den langsamsten Chip in der Kette begrenzt. Seine Reset- und Clear-Leitungen sind jedoch gebused (nicht verkettet), was eine Interoperabilität über SWDJ-DP ermöglicht (siehe Diskussion unten).
    • 2-Draht-JTAG ermöglicht eine Sterntopologie, wird aber nicht oft verwendet.
    • SWD ermöglicht Sterntopologien

Funktionell

  • SWD ist ein ARM-spezifisches Protokoll, das speziell für das Mikro-Debugging entwickelt wurde.
  • JTAG (Joint Test Action Group) wurde hauptsächlich für das Testen von Chips und Platinen entwickelt. Es wird für Boundary Scans verwendet , um Fehler in Chips/Platinen in der Produktion zu überprüfen. Das Debuggen und Flashen von Mikros war im Laufe der Zeit eine Weiterentwicklung seiner Anwendung.
  • Neben ARM wird JTAG für mehrere Mikrocontroller-/Prozessorarchitekturen verwendet.

Allgemeine Diskussion

JTAG wird ab 2017 von Mikros, Programmierern und Produktionslinien, die nicht von ARM stammen, in größerem Umfang unterstützt. Programmierer für JTAG sind günstig in Form von FT232H [*] Breakouts und ähnlichen Programmiergeräten zu haben. SWD hat jedoch einen deutlichen Vorteil in Bezug auf Geschwindigkeit und andere Bereiche beim Debuggen von ARM-Chips.

Aufgrund der Aufspaltung der Zweckbestimmung von JTAG beim Testen und SWD beim Debuggen stellt ARM SWJ-DP (Serial Wire/jtag Debug Port) über seine CoreSight-Technologie bereit, die SWD-Pins auf die Takt- und Reset-Leitungen von JTAG abbildet. SWJ-DP ermöglicht daher die Verwendung beider Protokolle auf derselben physikalischen Verbindung, wenn auch nicht unbedingt gleichzeitig oder mit denselben Programmierern, da JTAG und SWD zeitlich gemultiplext werden müssten.

Nützliche Referenzen

Alte Frage, aber keine der Antworten spricht den Leistungsvergleich an. Obwohl der Funktionsumfang zwischen SWD und JTAG (bei Verwendung eines CoreSight-DAP) nahezu gleich ist, sind SWD-Sequenzen etwa 10 % kürzer als die entsprechenden JTAG-Sequenzen.

In den meisten Fällen gibt es keinen Verlust an Datenbandbreite (insbesondere beim Streaming von Lese- oder Schreibvorgängen, bei denen die Bandbreite am wichtigsten ist).

Ich bin vielleicht etwas zu spät für OP, aber vielleicht ist es für einige andere Leute mit der gleichen Frage nützlich. Also, los geht's (persönliche Erfahrung): Es ist möglich, mit SWD zu programmieren und zu debuggen (Speicher abrufen / Karten registrieren, unterbrechen, von einem bestimmten Punkt aus ausführen usw.). Verwenden Sie hier Eclipse mit GDB über J-Link EDU, was ~50 Euro kostet. Es gibt einige Fehler (Ziel über Debugger zurücksetzen, manchmal wird keine Verbindung hergestellt oder Karten abgerufen), aber es ist relativ billig und brauchbar, sobald Sie sich mit seinen Macken vertraut gemacht haben