Forum: Mikrocontroller und Digitale Elektronik LPC11Cxx "verfused" - ist der noch zu retten?


von Alram L. (alram)


Angehängte Dateien:

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

von Andreas B. (bitverdreher)


Lesenswert?

Mit Reset und PIO0_1 kannst Du ihn doch via Bootloader mit neuer SW 
begluecken.
PIO1_6 und 7 sind RxD und TxD dazu.
Oder hast Du ihn mit mit CRP3 komplett ausgeknipst? Dann hilft nur 
loeten.

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

: Bearbeitet durch User
von J. S. (jojos)


Lesenswert?

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

von Alram L. (alram)


Angehängte Dateien:

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 ...

von Alram L. (alram)


Lesenswert?

Alram L. 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 ...

nö ... das wird leider nix: die machen das mit CRP1 und brauchen einen 
vom Befehlssatz her limitierten Bootloader. :(

von Alram L. (alram)


Angehängte Dateien:

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.

von Andreas B. (bitverdreher)


Lesenswert?

Das NO_ISP hatte ich so gar nicht auf dem Schirm. Dann sollte es doch 
mit normalem SWD gehen. Du blockierst ja nur ISP, nicht SWD.
Einschalten und auf Reset halten, dann SWD.

von Alram L. (alram)


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 ...

von Andreas B. (bitverdreher)


Lesenswert?

Wenn er versucht zu connecten, Reset loslassen.

von Alram L. (alram)


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.

von Alram L. (alram)


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.

von Andreas B. (bitverdreher)


Lesenswert?

Mit dem JLink kann ich nicht helfen. Ich programmiere die LPC mit den 
BMP oder manchmal auch mit dem MCU-link.

Evtl. hilfts:
https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/lpc/39003/1/SWD%20Programming%20AN11553.pdf

: Bearbeitet durch User
von Dieter S. (ds1)


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.

von Alram L. (alram)


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 ...

: Bearbeitet durch User
von Dieter S. (ds1)


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.

: Bearbeitet durch User
von J. S. (jojos)


Lesenswert?


von Alram L. (alram)


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...

von Dieter S. (ds1)


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.

von J. S. (jojos)


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.

von Alram L. (alram)


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

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.