LPC11Cxx "verfused" - ist der noch zu retten?

OP #7584763
Lesenswert?

Hallo,

ich benötige wieder mal eure Hilfe :)

Hab hier eine PCB mit einem LPC11C14 drauf und bei den ersten Gehversuchen das Programm dafür zu entwickeln, ist mir gleich ein Mißgeschick passiert. Zusammengefasst:

  • ich hab die beiden Pin's für SWD auf GPIO's umkonfiguriert
  • die CRP Stelle im Flash (versehentlich) auf CRP_NO_ISP geschrieben

Dadurch hab ich natürlich gegen die Empfehlung von NXP verstossen (siehe Anhang) - ist jetzt aber schon passiert.

Reset Pin ist nicht umkonfiguriert und noch verfügbar.

Die Software, welche sich aktuell am Chip befindet ist nicht mehr als eine "Hello world" welche nicht viel tut ausser bisserl Hardware initialisieren und einen String auf den UART rausschreibt - und das funktioniert. Bietet aber keine Funktion an, um in den ROM Bootloader zu springen.

Jedenfalls ist mein Problem jetzt: ich kann den Chip mit dem Segger JLink (EDU) nicht mehr beschreiben. Ich schaff es nicht mal den Flash einfach zu löschen (dass debugen nicht funktioniert, ist eh keine Überraschung).

Ausgabe vom JLink sieht immer so aus (der µC macht dabei auch einen Reset - also JLink kann den µC erfolgreich resetten):

1
Connecting to target via SWD
2
Found SW-DP with ID 0x0BB11477
3
Failed to power up DAP
4
Connect fallback: Reset via Reset pin & Connect.
5
Found SW-DP with ID 0x0BB11477
6
Failed to power up DAP
7
Cannot connect to target.
8
J-Link>r
9
Target connection not established yet but required for command.
10
Device "LPC11C14/301" selected.

('Failed to power up DAP' dürfte die relevante Meldung sein)

Internetrecherche bringt mich auch nicht weiter - zumindest finde ich vieles dazu und keine Lösung hat bei mir bisher funktioniert. Entweder weil ich kein JTAG hab oder weil es die Option "connect under reset" nur bei ST programer zu geben scheint.

bspw.: https://stackoverflow.com/questions/62900417/how-to-fix-badly-configured-swd-pin => so etwas bräuchte ich wohl für Segger JLink.

Wenn man das gleiche für den Segger JLink sucht, werd ich einfach nicht fündig bzw. die commands in JLink funktonieren einfach nicht. Ich hab schon so viel probiert, dass alles hier auflisten zu viel wäre ...

Irgendwie hab ich die Hoffnung, dass wenn der JLink die CPU sofort nach einem Reset anhält und dann den Flash löscht alles wieder Gut wird :)

Hat jemand Erfahrung mit einem LPC11xx und Segger und kennt irgendwelche Tricks, welche ausprobiert werden können um den µC noch zu retten? (Bin ich überhaupt am richtigen Pfad oder kann mein Problem ganz wo anders liegen?)

Neuen µC einlöten wäre eine Option - aber die würd ich nur nehmen, wenn es wirklich nicht anders geht. Einerseits ist LQFP48 nicht so lustig zum Handlöten andererseits hat die Platine schon etwas gelitten und es besteht die realistische Gefahr, dass beim Einlöten eines neuen µC etwas schief geht und PCB gänzlich Schrott ist. Daher nur letzte Option ...

Danke & vG Alram

Angehängte Dateien:
OP #7584819
Lesenswert?

Andreas B. schrieb:

Oder hast Du ihn mit mit CRP3 komplett ausgeknipst?

Nein. Bei CRP3 wäre game over - da wäre fix löten angesagt.

ich hab "NO_ISP" - siehe Anhang. Das disabled SWD nicht - aber Pin0_1 und Pin0_3 sind nicht für ISP nutzbar. Ist in Kombination aber mit Umkonfigurieren der SWD Pin's aber nicht sonderlich empfehlenswert.

J. S. schrieb:

Bzw wenn man in den Bootloader gestartet hat kommt man auch mit SWD wieder dran.

Und genau das schaff ich gerade nicht: Ich komm nicht in den Bootloader.

Aus meiner Sicht müsste es einen kurzen Zeitraum geben, wo SWD funktioniert: Nach Reset aber bevor die Benutzerapplikation startet (und damit die SWD Pin's umkonfiguriert). Wenn es Tricks mit dem JLink gibt, wäre das wohl meine einzige Chance.

Andreas B. schrieb:

Oder das testen: https://wiki.newae.com/Tutorial_A9_Bypassing_LPC1114_Read_Protect

danke - den Link hab ich noch nicht gefunden gehabt. Les ich mir gleich mal durch ...

Angehängte Dateien:
OP #7584834
Lesenswert?

Wenn ich das hier beschriebene schaffe:

https://electronics.stackexchange.com/questions/86418/relationship-between-reset-pins-and-swd-functions-arm-cortex-m0 (oder Antwort siehe Anhang)

dann hätte ich gewonnen ... aber ich hab keinen Plan ob das bei meinem µC (LPC11C14) möglich ist und ob bzw. wie das mit JLink funktioniert.

Angehängte Dateien:
OP #7584892
Lesenswert?

Andreas B. schrieb:

Einschalten und auf Reset halten, dann SWD.

ja müsste - aber genau da scheitere ich :(

gerade ausprobiert:

  • power on mit gedrückter reset taste
  • programmieren starten und reset gedrückt halten

ergibt:

1
SEGGER J-Link Commander V7.94b (Compiled Dec 13 2023 17:07:41)
2
DLL version V7.94b, compiled Dec 13 2023 17:05:52
3

4

5
J-Link Command File read successfully.
6
Processing script file...
7
J-Link>device  LPC11C14
8
J-Link connection not established yet but required for command.
9
Connecting to J-Link via USB...O.K.
10
Firmware: J-Link ARM V8 compiled Nov 28 2014 13:44:46
11
Hardware version: V8.00
12
J-Link uptime (since boot): N/A (Not supported by this model)
13
S/N: 268006949
14
License(s): FlashBP, GDB
15
OEM: SEGGER-EDU
16
VTref=2.458V
17
J-Link>speed 4000
18
Selecting 4000 kHz as target interface speed
19
J-Link>loadbin "xxx.bin",0x0
20
Target connection not established yet but required for command.
21
Device "LPC11C14/301" selected.
22

23

24
Connecting to target via SWD
25
Failed to attach to CPU. Trying connect under reset.
26
Connect fallback: Reset via Reset pin & Connect.
27
Cannot connect to target.
28
J-Link>r
29
Target connection not established yet but required for command.
30
Device "LPC11C14/301" selected.
31

32

33
Connecting to target via SWD
34
Failed to attach to CPU. Trying connect under reset.
35
Connect fallback: Reset via Reset pin & Connect.
36
Cannot connect to target.
37
J-Link>qc
38

39
Script processing completed.

einfach JLink anwerfen ohne irgendetwas zu tun:

1
SEGGER J-Link Commander V7.94b (Compiled Dec 13 2023 17:07:41)
2
DLL version V7.94b, compiled Dec 13 2023 17:05:52
3

4

5
J-Link Command File read successfully.
6
Processing script file...
7
J-Link>device  LPC11C14
8
J-Link connection not established yet but required for command.
9
Connecting to J-Link via USB...O.K.
10
Firmware: J-Link ARM V8 compiled Nov 28 2014 13:44:46
11
Hardware version: V8.00
12
J-Link uptime (since boot): N/A (Not supported by this model)
13
S/N: 268006949
14
License(s): FlashBP, GDB
15
OEM: SEGGER-EDU
16
VTref=2.458V
17
J-Link>speed 4000
18
Selecting 4000 kHz as target interface speed
19
J-Link>loadbin "xxx.bin",0x0
20
Target connection not established yet but required for command.
21
Device "LPC11C14/301" selected.
22

23

24
Connecting to target via SWD
25
Found SW-DP with ID 0x0BB11477
26
Failed to power up DAP
27
Connect fallback: Reset via Reset pin & Connect.
28
Found SW-DP with ID 0x0BB11477
29
Failed to power up DAP
30
Cannot connect to target.
31
J-Link>r
32
Target connection not established yet but required for command.
33
Device "LPC11C14/301" selected.
34

35

36
Connecting to target via SWD
37
Found SW-DP with ID 0x0BB11477
38
Failed to power up DAP
39
Connect fallback: Reset via Reset pin & Connect.
40
Found SW-DP with ID 0x0BB11477
41
Failed to power up DAP
42
Cannot connect to target.
43
J-Link>qc
44

45
Script processing completed.

das JLink script ist recht überschaubar:

1
device  LPC11C14
2
speed 4000
3
loadbin "xxx.bin",0x0
4
r
5
qc

hätte auch versucht mal wild

1
r0
2
halt

einbauen - aber ich schaff es nicht ... daher die Frage nach Tipps ...

OP #7584894
Lesenswert?

mit folgende JLink script:

1
device  LPC11C14
2
speed 4000
3
r0
4
halt
5
loadbin "xxx.bin",0x0
6
r
7
qc

bekomme ich folgendes Ergebnis:

1
SEGGER J-Link Commander V7.94b (Compiled Dec 13 2023 17:07:41)
2
DLL version V7.94b, compiled Dec 13 2023 17:05:52
3

4

5
J-Link Command File read successfully.
6
Processing script file...
7
J-Link>device  LPC11C14
8
J-Link connection not established yet but required for command.
9
Connecting to J-Link via USB...O.K.
10
Firmware: J-Link ARM V8 compiled Nov 28 2014 13:44:46
11
Hardware version: V8.00
12
J-Link uptime (since boot): N/A (Not supported by this model)
13
S/N: 268006949
14
License(s): FlashBP, GDB
15
OEM: SEGGER-EDU
16
VTref=2.445V
17
J-Link>speed 4000
18
Selecting 4000 kHz as target interface speed
19
J-Link>r0
20
J-Link>halt
21
Target connection not established yet but required for command.
22
Device "LPC11C14/301" selected.
23

24

25
Connecting to target via SWD
26
Found SW-DP with ID 0x0BB11477
27
DPv0 detected
28
CoreSight SoC-400 or earlier
29
Scanning AP map to find all available APs
30
AP[0]: Stopped AP scan as end of AP map seems to be reached
31
Iterating through AP map to find AHB-AP to use
32
Attach to CPU failed. Executing connect under reset.
33
DPv0 detected
34
CoreSight SoC-400 or earlier
35
Scanning AP map to find all available APs
36
AP[0]: Stopped AP scan as end of AP map seems to be reached
37
Iterating through AP map to find AHB-AP to use
38
Could not find core in Coresight setup
39
Connect fallback: Reset via Reset pin & Connect.
40
Found SW-DP with ID 0x0BB11477
41
Failed to power up DAP
42
Cannot connect to target.
43
J-Link>loadbin "xxx.bin",0x0
44
Target connection not established yet but required for command.
45
Device "LPC11C14/301" selected.
46

47

48
Connecting to target via SWD
49
Found SW-DP with ID 0x0BB11477
50
Failed to power up DAP
51
Connect fallback: Reset via Reset pin & Connect.
52
Found SW-DP with ID 0x0BB11477
53
Failed to power up DAP
54
Cannot connect to target.
55
J-Link>r
56
Target connection not established yet but required for command.
57
Device "LPC11C14/301" selected.
58

59

60
Connecting to target via SWD
61
Found SW-DP with ID 0x0BB11477
62
Failed to power up DAP
63
Connect fallback: Reset via Reset pin & Connect.
64
Found SW-DP with ID 0x0BB11477
65
Failed to power up DAP
66
Cannot connect to target.
67
J-Link>qc
68

69
Script processing completed.
OP #7584897
Lesenswert?

Andreas B. schrieb:

Wenn er versucht zu connecten, Reset loslassen.

Mehrfach versucht: programmieren starten und "im richtigen moment" Reset loslassen. Hab's leider nicht geschafft. Ich hab aber auch das Gefühl, dass das Zeitfenster nur ein paar µs lang ist ... Ich glaube daher, dass das nur mit (der) richtigen befehlsreihenfolge im JLink script funktionieren kann. Aber alle Versuche sind derweil gescheitert.

#7584916
Lesenswert?

Bekommt der LPC11C14 externen Takt? Dann könnte man eventuell versuchen ihn langsamer zu machen.

Das J-Link Log sieht ja so aus als ob nach dem Reset SWD funktioniert, sonst würde kein SW-DP gefunden. Aber wenn dann die SWD Pins wegkonfiguriert werden geht es nicht weiter. Daher wäre ein Ansatz das Zeitfenster nach dem Reset zu verlängern. Der SWD Takt ist wohl mit 4 MHz bereits am Limit des J-Link.

OP #7584943
Lesenswert?

Dieter S. schrieb:

Bekommt der LPC11C14 externen Takt? Dann könnte man eventuell versuchen ihn langsamer zu machen.

Leider nein - läuft mit default clock settings (12MHz)

Dieter S. schrieb:

Der SWD Takt ist wohl mit 4 MHz bereits am Limit des J-Link.

Guter Ansatz - kann mich erinnern, dass ich mit 8MHz auch noch erfolgreich programmiert habe. also schneller geht's. Grad durchprobiert: ich kann sogar auf 100MHz rauf gehen und der JLink akzeptiert es ...

1
NDisplay\LPC11C14-JLink.jlink
2
SEGGER J-Link Commander V7.94b (Compiled Dec 13 2023 17:07:41)
3
DLL version V7.94b, compiled Dec 13 2023 17:05:52
4

5

6
J-Link Command File read successfully.
7
Processing script file...
8
J-Link>device  LPC11C14
9
J-Link connection not established yet but required for command.
10
Connecting to J-Link via USB...O.K.
11
Firmware: J-Link ARM V8 compiled Nov 28 2014 13:44:46
12
Hardware version: V8.00
13
J-Link uptime (since boot): N/A (Not supported by this model)
14
S/N: 268006949
15
License(s): FlashBP, GDB
16
OEM: SEGGER-EDU
17
VTref=2.445V
18
J-Link>speed 100000
19
Selecting 100000 kHz as target interface speed
20
J-Link>loadbin "xxx.bin",0x0
21
Target connection not established yet but required for command.
22
Device "LPC11C14/301" selected.
23

24

25
Connecting to target via SWD
26
Found SW-DP with ID 0x0BB11477
27
Failed to power up DAP
28
Connect fallback: Reset via Reset pin & Connect.
29
Found SW-DP with ID 0x0BB11477
30
Failed to power up DAP
31
Cannot connect to target.
32
J-Link>r
33
Target connection not established yet but required for command.
34
Device "LPC11C14/301" selected.
35

36

37
Connecting to target via SWD
38
Found SW-DP with ID 0x0BB11477
39
Failed to power up DAP
40
Connect fallback: Reset via Reset pin & Connect.
41
Found SW-DP with ID 0x0BB11477
42
Failed to power up DAP
43
Cannot connect to target.
44
J-Link>qc
45

46
Script processing completed.

Aber ob wirklich 100MHz verwendet werden, weiss ich nicht. Hab es mit 8,10,15,20,30,40,50,70 und 100MHz probiert. Ergebnis ist überall das gleiche ...

#7584978
Lesenswert?

J-Link macht beim Connect relativ viel was man nicht zwingend benötigt um die CPU anzuhalten. Man könnte nach dem Connect versuchen per Reset und den Kommandos "SWDSelect", "SWDWriteDP" und "SWDWriteAP" die CPU selber anzuhalten. Dazu muss man sich die Doku von ARM für die CPU anschauen, das ist alles etwas Fummelei, funktioniert aber.

Allerdings ist die Frage ob man damit schneller ist und die CPU rechtzeitig anhalten kann.

OP #7584995
Lesenswert?

J. S. schrieb:

das hier wäre noch einen Versuch Wert: https://wiki.rdu.im/_pages/Notes/HOWTOs/howto-recover-swd-after-disabled-with-jlink.html

Klingt gut ... Leider ist der ursprüngliche thread wohl nicht mehr erreichbar. :( Und die 100 commands find ich auf die schnelle wohl nicht raus.

Werd heute Abend wohl den Lötkolben anwerfen. Es scheint wohl keine einfache Lösung zu geben...

#7584999
Lesenswert?

Alram L. schrieb:

Und die 100 commands find ich auf die schnelle wohl nicht raus.

Es geht doch nur um 100 mal "h" für "halt". Die Idee ist ähnlich wie mein Vorschlag mit den SWD Kommandos: nach dem Connect (was relativ lange dauert) macht man einen Reset und führt gezielt Kommandos aus die dann hoffentlich schnell genug sind. In diesem Fall geht es darum dass eines der 100 "h" zum Erfolg führt.

#7585001
Lesenswert?

genau. Deshalb könnte es mit einer BMP mit modifizierter SW besser gehen. Die erzeugt direkt die SWD Sequenzen und könnte auch sofort nach dem connect einen halt ausführen. Diese Variante ist natürlich etwas aufwändiger, aber im 1BitSquared Discord wird bei so speziellen Problemen auch gerne geholfen.

OP #7585135
Lesenswert?

Dieter S. schrieb:

Es geht doch nur um 100 mal "h" für "halt".

danke - das hab ich komplett falsch interpretiert.

ich habs soeben versucht und leider hat das auch nicht funktioniert. was bei mir - entgegen der Anleitung - anders ist: JLink kann bei mir auch bei gedrückter reset taste keinen connect ausführen.

danke für alle, die versucht haben zu helfen. aber jetzt wird gelötet und gehofft, dass die platine durchhält :)

vG Alram

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren