GELÖST - SIEHE UNTER "BEARBEITEN 3" UNTERTITEL.
Platine mit LPC4337 (links) und Platine mit ATSAM3X8E (rechts), JTAG verbunden, unter Verwendung des FT2232H-Chips, der auf der Platine links als Schnittstelle gelötet ist.
Der erste (LPC4337) kann programmiert werden. Der zweite (ATSAM3X8E) kann auch programmiert werden, solange die Leiterbahnen zwischen dem Programmierchip (FT2232H) und der LPC4337 MCU unterbrochen werden. Wenn keine Spuren geschnitten werden (sowohl LPC4337 als auch ATSAM3X8E mit dem JTAG verbunden), kann ich nicht auf den ATSAM3X8E-Chip zugreifen. Ich verwende OpenOCD. Dies ist die OpenOCD-Ausgabe, wenn beide Chips mit dem JTAG verbunden sind:
...
Info: JTAG Tap: lpc4337.m4 Tap/Device gefunden: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part:0xba00, ver: 0x4)
Info: JTAG Tap: lpc4337.m0 Tap/Gerät gefunden: 0x0ba01477 (mfg: 0x23b (ARM Ltd.), part:0xba01, ver: 0x0)
Info: JTAG Tap: sam3.m3 Tap/Device gefunden: 0xfffffff (mfg: 0x7ff (), part:0xffff, ver: 0xf)
Fehler: sam3.m3: IR-Aufnahmefehler; sah 0x0f nicht 0x01
Warnen: Umgehen von JTAG-Setup-Ereignissen aufgrund von Fehlern
Fehler: Ungültiges ACK (4) in DAP-Antwort
Fehler: Ungültiges ACK (4) in DAP-Antwort
Fehler: Ungültige ACK (4) in ... (viele mehr)
Fehler: Ungültiges ACK (0) in DAP-Antwort
Fehler: Der Debug-Port konnte nicht initialisiert werden
Einige Anmerkungen: Wenn ich die OpenOCD-Konfiguration ändere, um den „IR-Erfassungsfehler“ zu ignorieren, schlägt die Verbindung trotzdem fehl, das erste Problem ist, dass die sam3.m3-TAP-ID als 0xfffffff usw. erkannt wird.
Gleiche Ausgabe mit LPC4337 JTAG-Spuren geschnitten (nur ATSAM3X8E angeschlossen):
...
Info: JTAG Tap: sam3.m3 Tap/Gerät gefunden: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part:0xba00, ver: 0x4)
Info: sam3.m3: Hardware hat 6 Breakpoints, 4 Watchpoints
Einige Anmerkungen: Dies ist eine erfolgreiche Verbindung.
Eine interessante Sache ist, dass sowohl LPC4337 als auch ATSAM3X8E dieselbe JTAG-TAP-ID teilen. Ist dieser Wert nicht vom Hersteller gewählt? Ist es ein seltsamer Zufall, verschiedene Chips mit derselben JTAG-ID zu haben? Kann dies das Problem sein, das mich daran hindert, beide mit dem JTAG zu verbinden? Ich habe schon früher gesehen, dass OpenOCD wiederholte JTAG-IDs verarbeitet, aber immer mit verschiedenen Instanzen desselben Chips, nicht wie in diesem Fall aus verschiedenen Chipfamilien. Gibt es eine Möglichkeit, die JTAG-ID des Chips zu ändern? Welche anderen Probleme könnten dieses Verhalten verursachen? Ich bin interessiert, irgendwelche freundlichen Vorschläge zu hören, auch wenn sie nicht die Lösung sind, die sie helfen könnten.
Einige andere Anmerkungen: Ich habe es mit zwei verschiedenen ATSAM3X8E-Boards versucht, damit ich weiß, dass die Chips nicht fehlerhaft sind. Beide Boards waren Arduino Due und funktionierten, als LPC4337 JTAG-Spuren geschnitten wurden. Ich verwende OpenOCD Version 0.10.0 ("Freddie Chopin" kompilierte Version) unter Windows. Ich habe kein Oszilloskop. Ich möchte mit beiden MCUs arbeiten, ohne weitere Modifikationen hinzuzufügen oder Spuren zu schneiden. Ich würde auch gerne den Fehler verstehen, der mich daran hindert, diese Chips zu programmieren, falls ich in Zukunft etwas mit ihnen entwerfe.
Abschließend möchte ich der Community für ihre Zeit danken. Ich hoffe, dass dieser Beitrag in Zukunft einigen anderen Menschen hilft!
BEARBEITEN:
Dies sind die JTAG-Schnittstellenschemata der beiden miteinander verbundenen Platinen. Das Flachkabel verbindet Pin1 des "P3"-Anschlusses auf dem Schaltplan der LPC4337-Platine mit Pin1 des "JTAG"-Anschlusses des ATSAM3X8E-Platinenschaltplans usw. (Alle 10 Pins entsprechend verbunden, mit einem Multimeter auf Durchgang getestet). Dies ist der Schaltplan der LPC4337-Platine .
Dies ist der Schaltplan der ATSAM3X8E-Platine .
BEARBEITEN 2:
Dank der Antworten fand ich heraus, dass ich eine Stern-JTAG-Topologie verwendete, aber eine Daisy-Chain-JTAG-Topologie wäre der Standardansatz. Ich werde meine Verkabelung ändern und meine Ergebnisse posten. Danke für die Hilfe. Dies wird meine Verdrahtungstopologie sein (aber mit zwei Geräten): EDIT 3:
JTAG wurde von einer Sterntopologie auf eine Daisy-Chain-Topologie geändert. LPC4337 TDO wird an den Anschluss und schließlich an ATSAM3X8E TDI geleitet. ATSAM3X8E TDO wird über den Stecker mit der FT2232H-Schnittstelle verbunden. Wenn kein Gerät angeschlossen ist und nur der LPC4337 programmiert wird, kann ein kleiner Stecker (siehe Abbildung unten) (anstelle des Kabels) eingesteckt werden und den LPC4337 TDO direkt mit der FT2232H-Schnittstelle überbrücken. Die OpenOCD-Verbindung ist erfolgreich und gibt Folgendes aus:
...
Info: JTAG Tap: lpc4337.m4 Tap/Device gefunden: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part:0xba00, ver: 0x4)
Info: JTAG Tap: lpc4337.m0 Tap/Gerät gefunden: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part:0xba00, ver: 0x4)
Info: JTAG Tap: sam3.m3 Tap/Gerät gefunden: 0x4ba01477 (mfg: 0x23b (ARM Ltd.), part:0xba00, ver: 0x4)
Info: lpc4337.m4: Hardware hat 6 Breakpoints, 4 Watchpoints
Info: lpc4337.m0: Hardware hat 6 Breakpoints, 4 Watchpoints
Info: sam3.m3: Hardware hat 6 Breakpoints, 4 Watchpoints
(Die 0x4ba01477 TAP-ID wurde zum ATSAM3X8E, ich frage mich, ob OpenOCD in einer anderen Reihenfolge angeordnet werden könnte [atsam, lpc m0, lpc m4] und in einer Sterntopologie arbeiten könnte oder nicht)
Vielen Dank für Ihre Hilfe!
Die Kommentare deuten darauf hin, dass Sie versuchen, in einer „Sterntopologie“ zu arbeiten, aber soweit ich weiß, ist dies keine genau definierte Implementierung.
Bitte bestätigen Sie, dass Sie eine Daisy-Chain- Topologie verwenden , bei der mehrere TAPs ein einziges langes Schieberegister bilden. Debug-Tools sollten damit fertig werden, da es manchmal in einem einzelnen Chip implementiert vorkommt.
Die von Ihnen angegebenen TAP-IDs gelten für die Debug-Schnittstelle, sie identifizieren (und müssen) die einzelne Hardware nicht. Sie definieren lediglich, dass diese Komponenten Arm CoreSight JTAG-DP verwenden, das eine Schnittstelle zu speicherabgebildeten Debug-Komponenten bietet. Wenn Sie auf die Debug-Komponenten in dieser Speicherkarte zugreifen (die anhand der vom DP bereitgestellten Register erkennbar sind), sollten Sie einen ID-Wert finden, der den Chip letztendlich identifiziert.
Das JTAG-DP-IDCODE-Register ist hier in ARM DDI 0314H beschrieben.
Andi aka
Juan Manuel Lopez Manzano
Lior Bilia
Andi aka
Juan Manuel Lopez Manzano
Juan Manuel Lopez Manzano