Forum: Mikrocontroller und Digitale Elektronik Lauterbach TRACE32: Kein Zugriff auf LPC55S69


von Rolf (rolf_dq)


Lesenswert?

Moin,

es will mir nicht gelingen mit dem Lauterbach Debugger per SWD auf einen 
leeren LPC55S69 zuzugreifen. Diese MCU sperrt nämlich den Zugriff auf 
die dazu notwendigen JTAG-APs wenn kein gültiges Image im Flash steht.

Ich habe hier die TRACE32-Version 2021.02 bei der sich die beiden Cores 
des LPC55S69 mit SYSTEM.CPU auswählen lassen. Obwohl also anscheinend 
von der Software unterstützt, gelingt der Debug-Zugriff dennoch nur wenn 
zuvor auf anderem Wege ein Programm ins Flash geladen wurde. Löscht man 
dieses Image mit dem Lauterbach, ist danach keine erneute Debugsession 
mehr möglich. Die kargen Lauterbach-Beispiel-Scripts gehen davon aus daß 
Zugriff immer möglich ist, bzw. automatisch ermöglicht wird.

Mache ich was offensichtliches falsch? War jemand erfolgreicher als ich?

Der Debugger muß den Zugriff aktiv über ein wohl NXP-spezifisches "debug 
session protocol" anfordern. Theoretisch könnte man das über die 
low-level JTAG.SWD.xyz Befehle des Lauterbach selbst machen, leider ist 
die Dokumentation dieser TRACE32-Befehle, sagen wir mal so, hier und da 
ausbaufähig...  Dementsprechend war ich auch dort nicht erfolgreich.

Bin für jeden Hinweis dankbar!
Rolf

von Dieter S. (ds1)


Lesenswert?

Meinst Du den Abschnitt "51.6.1 Debug session with uninitialized/invalid 
flash image or ISP mode" im User Manual (UM11126) und das 
Beispielskript?

Zum TRACE32 gibt es das Beispiel "demo\arm\etc\dap\sample-swd-raw.cmm", 
das sollte eigentlich schon einen großen Teil der benötigten SWD 
Zugriffe implementieren (wenn man das Low-Level in SWD implmentieren 
will und es nicht eventuell mit anderen TRACE32 Funktionen auf höherer 
Ebene machbar ist).

: Bearbeitet durch User
von Rolf (rolf_dq)


Lesenswert?

Ja genau, das ist das entsprechende Kapitel im User Manual!

Vielen Dank für den Hinweis auf das Script! Ich mußte aber erst die 
neueste TRACE32 Version entpacken um es zu finden, in meiner 
installierten Version 2021.02 (die letzte die mein Ausleih-Dongle noch 
unterstützt...) ist es noch nicht dabei.

Das Script verwendet ausschließlich JTAG.SWD.SHIFT, also den 
Low-Level-Befehl unter den Low-Level-Befehlen :-)  Mache mich aber mal 
drüber her!

von Dieter S. (ds1)


Lesenswert?

Rolf schrieb:
>
> Das Script verwendet ausschließlich JTAG.SWD.SHIFT, also den
> Low-Level-Befehl unter den Low-Level-Befehlen :-)  Mache mich aber mal
> drüber her!

Ich denke dass JTAG.SWD.ReadDapBus und JTAG.SWD.ReadScan bzw. 
JTAG.SWD.WriteDapBus und JTAG.SWD.WriteScan ähnlich funktionieren wie 
das Beispielskript. Mit dem Beispielskript für JTAG.SWD.Shift hat man 
aber vermutlich mehr Kontrolle, zumindest wenn man es bei Problemen mit 
der Spezifikation des ARM Debug Interface vergleicht.

von Rolf (rolf_dq)


Lesenswert?

Kurzer Zwischenbericht aus Eriwan: Im Prinzip geht's, aber...

Aus dem Beispielscript habe ich mir das Notwendige heraus geholt und bin 
nun in der Lage den Debugport für beide Cores freizuschalten! War etwas 
holprig, dem Beispielscript fehlt der Schritt um überhaupt Zugriff auf 
Access Ports zu bekommen (man muß im Debug Port CTRL-Register Requests 
für Debug- und System-Powerup setzen). Wäre schön wenn das Script sowas 
drin hätte, würde viel Zeit sparen! Und leider war auch noch ein Bug im 
Script: Registerzugriffe auf Adresse 0 und 1 funktionieren, bei Register 
2 und 3 wird ein Parityfehler erzeugt :-(

Elegant ist das alles ohne echte Integration in andere TRACE32-Befehle 
nicht. Der Befehl SYSTEM.DETECT.DAP z.B. kann auch nach der 
Freischaltung die JTAP-APs der Cores nicht anzeigen. Er führt nämlich 
dazu daß (vermutlich durch Initialisierung vorab) die Debug-Verbindung 
wieder gesperrt wird!

Das Flash programmieren steht als nächstes auf der Tagesordnung.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.