Ich habe einige kommerzielle JTAG-Debugger gesehen, wie zum Beispiel:
- iC6000 On-Chip Analyzer (mit Unterstützung des Aurora-Protokolls)
- Lauterbach - Mikroprozessor-Entwicklungswerkzeuge
Und OpenOCD FT2232H-basierte JTAG-Debugger:
Warum sind diese kommerziellen Debugger große Boxen 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?
Antworten:
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 benötigten 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 für das Original von Xilinx oder für einen chinesischen Abschlag bezahlen.
Die Links, die Sie haben, sind nicht für einfache JTAG-Kabel, sie sind weitaus spezialisierter. Ich persönlich würde diese als vollwertiges Testgerät betrachten. Sie sind im Grunde spezialisierte Protokollanalysatoren. Sie sind für die Schnittstelle mit spezieller Trace-Hardware ausgelegt, die in das zu testende Gerät integriert ist. Trace-Hardware unterscheidet sich von JTAG. Ziel ist es, die vollständige Ausführungsablaufverfolgung der laufenden Software (dh aller Zweigstellen) über alle Ausführungskerne hinweg aufzuzeichnen und über einen Hochgeschwindigkeitsbus an das externe Ablaufverfolgungssystem (die betreffende Box) weiterzuleiten. Die Ablaufverfolgung wird dann offline analysiert. Dies ist NICHT dasselbe wie das Debuggen, das über JTAG durchgeführt werden kann, indem Haltepunkte gesetzt und der Code durchlaufen werden. Die Traceerfassung soll für das laufende Programm vollständig transparent sein (keine Haltepunkte oder hinzugefügter Code). Da der zu testende Prozessor mehrere hundert Millionen Befehle pro Sekunde ausführen kann, erfordert das Speichern des Trace während seiner Erstellung viel Bandbreite und schnellen Speicher. Die verbundenen Geräte unterstützen das Aurora-Protokoll (wahrscheinlich unter anderem), ein 8b / 10b-codiertes serielles Hochgeschwindigkeitsprotokoll, das USB 3, seriellem ATA, seriellem Gigabit / 10G-Ethernet und PCIe ähnelt. Es ist in der Lage, Daten mit 6,25 Gbit / s zu übertragen, deutlich mehr als die USB-Verbindung zurück zum PC verarbeiten kann. Daher müssen die erfassten Daten für die Offline-Analyse im integrierten RAM gespeichert werden. Diese Geräte werden ziemlich hochwertige FPGAs mit internen Hochgeschwindigkeits-Deserialisierern enthalten, um die Daten zusammen mit ziemlich viel (mehreren GB) schnellem DRAM zu erfassen.
quelle
Der Unterschied liegt in der Software und Funktionalität, was sich stark auf die Hardware auswirkt.
Die FTDI-JTAG-Kabel verwenden einen Befehlssatz zur Erzeugung von JTAG-Signalen. Hierbei handelt es sich um Befehle auf sehr niedriger Ebene, die häufig genau auf die Funktionsweise und Bedienung der JTAG-Statemaschine eingehen. Die Logik zum Senden der richtigen Befehle für Ihr Setup erfolgt auf dem Debug-Host Ihres PCs.
Dies ist funktionale, billige Hardware, freie Software (GNU GCC + GDB + OpenOCD) usw. Sie ist flexibel genug (aufgrund des Befehlssatzes auf niedriger Ebene), dass es Ports für ARM-Debugging, FPGA-Programmierung oder generisches JTAG-Ketten-Scannen gibt .
Die kommerziellen Kabel sind viel spezifischer für eine Plattform und enthalten häufig Logik innerhalb des Kabels. Dadurch kann das PC-Programm abstrakter mit dem Gerät kommunizieren, 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 auch ausführen, er wird jedoch auf der PC-Seite in die Low-Level-JTAG-Befehle übersetzt, die das FTDI-Kabel versteht. Dies bedeutet auch, dass der übergeordnete Befehl (etwas Speicher schreiben) in viele weitere Unterbefehle unterteilt 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 einer höheren Geschwindigkeit führen.
Es liegt auch an den kommerziellen IDE-Anbietern, 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 Softwareprodukte unterstützen 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 4-Bit-Parallelbus zu erfassen. Hardware, die diese Funktion unterstützt, enthält häufig ein FPGA, um dies zu tun.
quelle