JTAG vs SWD-Debugging

41

Nachdem ich diesen Artikel durchgesehen habe , frage ich mich, welche Vorteile SWD-Debugging gegenüber JTAG-Debugging bietet.

Ich verstehe, dass SWD weniger Drähte / Pins verwendet, weniger Platz benötigt 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 unterbrochen / angehalten und durchlaufen werden?

Kann ein ARM-Chip über die SWD-Schnittstelle programmiert werden, wie ich es in JTAG glaube?

josef.van.niekerk
quelle
ARM-basierte Chips mit neueren Kernen (z. B. Cortex) können über SWD programmiert und debuggt werden.
B Pete
@BPete: Ich habe festgestellt, dass es mit SWD schwierig ist, ST-basierte Chips zu debuggen, die den Schlafmodus verwenden. Unsere aktuellen Boards haben keine Pins für JTAG, aber ich habe mich gefragt, ob JTAG in dieser Hinsicht besser sein könnte.
Superkatze
2
Diese (SWD) ähnelt in etwa der Spy-Bi-Wire-Schnittstelle, die TI für eine Untergruppe ihrer MSP430-Prozessoren verwendet. Es handelt sich um ein JTAG-ähnliches 2-Draht-Gerät (plus Strom und Masse), bei dem SBWTCLK und SBWTDIO auf zwei Nicht-GPIO-Pins (TEST und RST / NMI) eines Beispielgeräts gemultiplext sind. Unterstützt vom EZ430-Devkit. Und es (SBW) unterstützt Stepping und Breakpoints! Ich weiß nicht, ob die ARMs von TI dieselbe Schnittstelle haben, aber es wäre interessant, wenn sie genug Gemeinsamkeiten hätten, um Programmier- / Debug-Tools gemeinsam zu nutzen.
Brian Drummond
Ihr Artikel-Link ist tot, aber vielleicht war das der Artikel? arm.com/files/pdf/Serial_Wire_Debug.pdf
Gabriel Staples

Antworten:

12

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.

user468662
quelle
Schauen Sie sich diesen Link im Serial Wire Viewer an. keil.com/download/files/swv_on_cortex-m3.pdf
user468662
37

Elektrisch

  • Pin Count
    • JTAG benötigt 4 Signalleitungen
    • SWD benötigt nur 2 Signalleitungen
    • Die in IEEE 1149.7 spezifizierte 2-Draht-JTAG-Schnittstelle senkt die Pin-Anzahl, scheint jedoch auf vielen ICs nicht allgemein verfügbar zu sein. Es reduziert auch die Bandbreite.
  • Topologie
    • JTAG verwendet eine Daisy-Chain-Konfiguration für die Datenleitungen zwischen den Chips. Die Geschwindigkeit von JTAG wird daher durch den langsamsten Chip in der Kette begrenzt. Die Rücksetz- und Löschleitungen sind jedoch mit einem Bus verbunden (nicht verkettet), was die Interoperabilität über SWDJ-DP ermöglicht (siehe Diskussion unten).
    • 2-Draht-JTAG ermöglicht eine Sterntopologie, wird jedoch nicht häufig verwendet.
    • SWD ermöglicht Sterntopologien

Funktionell

  • SWD ist ein ARM-spezifisches Protokoll, das speziell für das Micro-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 / Boards in der Produktion zu überprüfen. Das Debuggen und Flashen von Mikros war eine Weiterentwicklung seiner Anwendung im Laufe der Zeit.
  • JTAG wird neben ARM für mehrere Mikrocontroller- / Prozessorarchitekturen verwendet.

Allgemeine Diskussion

JTAG wird ab 2017 in größerem Umfang von Nicht-ARM-Mikros, Programmierern und Produktionslinien unterstützt. Programmierer für JTAG sind in Form von FT232H [*] Breakouts und anderen derartigen Programmiergeräten günstig zu haben . SWD hat jedoch einen deutlichen Geschwindigkeitsvorteil und andere Vorteile beim Debuggen von ARM-Chips.

Aufgrund der gespaltenen Zielsetzung von JTAG beim Testen und SWD beim Debuggen bietet ARM über seine CoreSight-Technologie SWJ-DP (Serial Wire / Jtag Debug Port), mit dem SWD-Pins auf die Takt- und Reset-Leitungen von JTAG abgebildet werden. SWJ-DP ermöglicht daher die Verwendung beider Protokolle auf derselben physischen Verbindung, jedoch nicht unbedingt zur selben Zeit oder mit denselben Programmierern, wie JTAG und SWD zeitlich gemultiplext werden müssten.

Nützliche Referenzen

zurückgestreut
quelle
7

Ich bin vielleicht ein bisschen 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 ausführen usw.). Eclipse hier mit GDB über J-Link EDU nutzen, das kostet ~ 50 Euro. Es gibt einige Fehler (Zurücksetzen des Ziels über den Debugger, manchmal keine Verbindung herstellen oder Karten abrufen), aber es ist relativ billig und brauchbar, sobald Sie sich mit den Macken vertraut gemacht haben

stiebrs
quelle
7

Alte Frage, aber keine der Antworten befasst sich mit dem Leistungsvergleich. Obwohl die Funktionen zwischen SWD und JTAG (bei Verwendung eines CoreSight-DAP) nahezu identisch sind, sind die SWD-Sequenzen etwa 10% kürzer als die entsprechenden JTAG-Sequenzen.

In den meisten Fällen geht keine Datenbandbreite verloren (insbesondere beim Lesen oder Schreiben von Streams, wenn die Bandbreite am wichtigsten ist).

Sean Houlihane
quelle