Was ist der Unterschied zwischen einem kommerziellen JTAG-Debugger und einem Open-Source-FT2232H-OpenOCD-Debugger?

Ich habe einige kommerzielle JTAG-Debugger gesehen, wie zum Beispiel:

  1. iC6000 On-Chip-Analysator (mit Unterstützung des Aurora-Protokolls)
  2. Lauterbach – Mikroprozessor-Entwicklungstools

Und OpenOCD FT2232H-basierte JTAG-Debugger:

  1. Fliegenklatsche
  2. NGX ARM-USB-JTAG

Warum sind diese kommerziellen Debugger große Kisten im Vergleich zu FT2232H JTAG-Debuggern, die nur eine kleine Leiterplatte in Kreditkartengröße haben? Welche zusätzliche Hardware ist in den kommerziellen Debuggern vorhanden und in welchem ​​Teil des Debuggens können diese helfen?

Ich stimme dafür, diese Frage als nicht zum Thema gehörend zu schließen, da sich die erforderlichen Informationen auf den Websites der Hersteller befinden.
Vielleicht sollte ich die Frage anders stellen

Antworten (2)

JTAG-Kabel können um alle möglichen Dinge herum gebaut werden. Xilinx JTAG-Kabel haben beispielsweise einen Cypress-Chip und ein FPGA. Atmel-Kabel enthalten im Allgemeinen einen AVR-Mikrocontroller mit USB-Unterstützung. Sie enthalten normalerweise auch einige Schnittstellen-/Ebenenübersetzungs-/Schutz-/Isolationskomponenten. Es hängt wirklich vom Hersteller ab, sie sind alle proprietär und nicht miteinander kompatibel. Im Allgemeinen benötigen Sie das Kabel, das mit der von Ihnen verwendeten Software funktioniert. Wenn Sie nur OpenOCD benötigen, ist ein FTDI-basiertes Kabel in Ordnung. Aber wenn Sie verwenden möchten, sagen Sie Xilinx ChipScope? Dann müssen Sie entweder das Original von Xilinx oder eine chinesische Nachahmung bezahlen.

Die Links, die Sie haben, sind nicht für einfache JTAG-Kabel, sie sind viel spezialisierter. Ich persönlich würde diese als vollwertiges Testgerät betrachten. Sie sind im Grunde spezialisierte Protokollanalysatoren. Sie sind so konzipiert, dass sie mit spezialisierter Trace-Hardware verbunden werden können, die in das zu testende Gerät integriert ist. Trace-Hardware unterscheidet sich von JTAG. Sein Zweck besteht darin, die vollständige Ablaufverfolgung der laufenden Software (dh alle genommenen Verzweigungen) über alle Ausführungskerne hinweg aufzuzeichnen und sie über einen Hochgeschwindigkeitsbus an das externe Ablaufverfolgungserfassungssystem (die betreffende Box) weiterzuleiten. Der Trace wird dann offline analysiert. Dies ist NICHT dasselbe wie das Debuggen, das über JTAG durchgeführt werden kann, indem Haltepunkte gesetzt und der Code schrittweise durchlaufen wird. Die Trace-Sammlung soll für das laufende Programm vollständig transparent sein (keine Breakpoints oder hinzugefügter Code). Da der zu testende Prozessor mehrere hundert Millionen Befehle pro Sekunde ausführen kann, erfordert das Speichern der Ablaufverfolgung, während sie erzeugt wird, viel Bandbreite und schnellen Speicher. Die verknüpften Geräte unterstützen das Aurora-Protokoll (wahrscheinlich unter anderem), das ein 8b/10b-codiertes serielles Hochgeschwindigkeitsprotokoll ist, das USB 3, Serial ATA, seriellem Gigabit/10G-Ethernet und PCIe etwas ähnelt. Es ist in der Lage, Daten mit 6,25 Gbit/s zu übertragen, deutlich mehr als die USB-Verbindung zurück zum PC bewältigen kann, sodass die erfassten Daten zur Offline-Analyse im integrierten RAM gespeichert werden müssen. Diese Geräte werden eher High-End-FPGAs mit internen Hochgeschwindigkeits-Deserialisierern enthalten, um die Daten zusammen mit ziemlich viel (mehrere GB) schnellem DRAM, wahrscheinlich DDR2 oder vielleicht sogar DDR3, zu erfassen. Die verknüpften Geräte unterstützen das Aurora-Protokoll (wahrscheinlich unter anderem), das ein 8b/10b-codiertes serielles Hochgeschwindigkeitsprotokoll ist, das USB 3, Serial ATA, seriellem Gigabit/10G-Ethernet und PCIe etwas ähnelt. Es ist in der Lage, Daten mit 6,25 Gbit/s zu übertragen, deutlich mehr als die USB-Verbindung zurück zum PC bewältigen kann, sodass die erfassten Daten zur Offline-Analyse im integrierten RAM gespeichert werden müssen. Diese Geräte werden eher High-End-FPGAs mit internen Hochgeschwindigkeits-Deserialisierern enthalten, um die Daten zusammen mit ziemlich viel (mehrere GB) schnellem DRAM, wahrscheinlich DDR2 oder vielleicht sogar DDR3, zu erfassen. Die verknüpften Geräte unterstützen das Aurora-Protokoll (wahrscheinlich unter anderem), das ein 8b/10b-codiertes serielles Hochgeschwindigkeitsprotokoll ist, das USB 3, Serial ATA, seriellem Gigabit/10G-Ethernet und PCIe etwas ähnelt. Es ist in der Lage, Daten mit 6,25 Gbit/s zu übertragen, deutlich mehr als die USB-Verbindung zurück zum PC bewältigen kann, sodass die erfassten Daten zur Offline-Analyse im integrierten RAM gespeichert werden müssen. Diese Geräte werden eher High-End-FPGAs mit internen Hochgeschwindigkeits-Deserialisierern enthalten, um die Daten zusammen mit ziemlich viel (mehrere GB) schnellem DRAM, wahrscheinlich DDR2 oder vielleicht sogar DDR3, zu erfassen. deutlich mehr, als die USB-Verbindung zurück zum PC verarbeiten kann, sodass die erfassten Daten zur Offline-Analyse im integrierten RAM gespeichert werden müssen. Diese Geräte werden eher High-End-FPGAs mit internen Hochgeschwindigkeits-Deserialisierern enthalten, um die Daten zusammen mit ziemlich viel (mehrere GB) schnellem DRAM, wahrscheinlich DDR2 oder vielleicht sogar DDR3, zu erfassen. deutlich mehr, als die USB-Verbindung zurück zum PC verarbeiten kann, sodass die erfassten Daten zur Offline-Analyse im integrierten RAM gespeichert werden müssen. Diese Geräte werden eher High-End-FPGAs mit internen Hochgeschwindigkeits-Deserialisierern enthalten, um die Daten zusammen mit ziemlich viel (mehrere GB) schnellem DRAM, wahrscheinlich DDR2 oder vielleicht sogar DDR3, zu erfassen.

8 GB für Spuren auf dem iC6000, mehr als der PC deiner Gramma wahrscheinlich :-) Und 6,25 Gbps Bandbreite über das Aurora-Kabel.

Der Unterschied liegt in der Software und Funktionalität, die sich stark auf die Hardware auswirkt.

Die FTDI JTAG-Kabel verwenden einen Befehlssatz, um JTAG-Signale zu erzeugen. Dies sind Befehle auf sehr niedriger Ebene, die oft auf die genauen Details eingehen, wie die JTAG-Zustandsmaschine funktioniert und betrieben wird. Die Logik zum Senden der richtigen Befehle für Ihr Setup erfolgt auf dem Debug-Host auf Ihrem PC.

Dies ist funktionale, billige Hardware, freie Software (GNU GCC+GDB+OpenOCD) usw. Es ist flexibel genug (aufgrund des Low-Level-Befehlssatzes), dass es Ports für ARM-Debugging, FPGA-Programmierung oder generisches JTAG-Chain-Scanning gibt .

Die kommerziellen Kabel sind viel spezifischer für eine Plattform und enthalten oft Logik innerhalb des Kabels. Dadurch kann das PC-Programm auf abstraktere Weise mit dem Gerät sprechen, was schneller sein kann.

Beispiel: Sehen Sie sich das JLINK USB-Protokoll an . Es enthält Befehle wie EMU_CMD_WRITE_MEM_ARM79. Die FTDI-Kabel können diesen Befehl ebenfalls ausführen, aber er wird auf der PC-Seite in die Low-Level-JTAG-Befehle übersetzt, die das FTDI-Kabel versteht. Es bedeutet auch, dass der High-Level-Befehl (etwas Speicher schreiben) in viele weitere Unterbefehle zerlegt ist, die der JLINK auf dem Kabel selbst ausführen kann. Dies kann zu einer besseren Latenz (unter Berücksichtigung der Einschränkungen von USB) und/oder höherer Geschwindigkeit führen.

Es hängt auch von den kommerziellen IDE-Anbietern ab, welches Kabel sie unterstützen, und es ist wahrscheinlicher, dass ein kommerzielles Kabel unterstützt wird. Andererseits ist es wahrscheinlicher, dass die kostenlosen IDEs die billigen FTDI-Debug-Kabel unterstützen.

Einige kommerzielle Software unterstützt auch Software-Code-Haltepunkte, bei denen Sie mehr Code-Haltepunkte festlegen können, als die Hardware zulässt.

Die Verwendung der Trace-Funktionalität einiger Mikrocontroller erfordert sehr schnelle Hardware, um einen parallelen 4-Bit-Bus zu erfassen. Hardware, die für diese Funktion geeignet ist, enthält häufig ein FPGA, um dies zu tun.

Ganz zu schweigen von der Bandbreite, die diese bewältigen können; Der für den High-End-Xilinx, nach dem das OP fragt (iC6000), kann 6,25-Gbit / s-Traces mit dem Aurora-Protokoll ausführen, das (1) von Flyswatters nicht unterstützt wird, und selbst wenn dies der Fall wäre, mit welcher Bandbreite würden diese umgehen? Und internen Speicher haben diese: 8GB für Traces auf dem iC6000.