Forum: Mikrocontroller und Digitale Elektronik LPC1768 nach PLL-Tests nicht mehr ansprechbar


von Eduard S. (rfk)


Lesenswert?

Zur Zeit spiele ich ein bisschen mit einem Entwicklungsboard, das über 
einen NXP LPC1768 verfügt. Der Mikrocontroller wird bzw. wurde unter 
Linux mit einem Olimex ARM-USB-OCD JTAG-Adapter mit OpenOCD 
programmiert. Leider kann ich den Controller nicht mehr ansprechen, seit 
darauf eine Firmware läuft, bei der ich mit der PLL experimentiert habe:
1
# openocd -f openocd.cfg 
2
Open On-Chip Debugger 0.4.0-rc1 (2010-02-05-08:18)
3
For bug reports, read
4
        http://openocd.berlios.de/doc/doxygen/bugs.html
5
jtag_nsrst_delay: 200
6
jtag_ntrst_delay: 200
7
trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain
8
500 kHz
9
Info : clock speed 500 kHz
10
Info : JTAG tap: lpc1768.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
11
Warn : Timeout (1000ms) waiting for ACK = OK/FAULT in SWJDP transaction
12
Warn : Block read error address 0xe000ed00, count 0x1
13
Warn : Timeout (1000ms) waiting for ACK = OK/FAULT in SWJDP transaction
14
...

Ich habe versucht, den Prozessor auf jedwede Art anzuhalten, damit ich 
den Flash wieder löschen kann, alle Befehle dazu (reset halt, reset 
init, soft_reset_halt, etc.) werden jedoch mit einem Timeout verweigert. 
Manche Befehle hingegen (z.B. flash probe) funktionieren noch.

Meine OpenOCD-Target-Konfiguration entspricht weitestgehend dem 
Standard:
1
# NXP LPC1768 Cortex-M3 with 512kB Flash and 32kB+32kB Local On-Chip SRAM,
2
# clocked with 4MHz internal RC oscillator
3
4
if { [info exists CHIPNAME] } {
5
  set  _CHIPNAME $CHIPNAME
6
} else {
7
  set  _CHIPNAME lpc1768
8
}
9
10
if { [info exists ENDIAN] } {
11
  set  _ENDIAN $ENDIAN
12
} else {
13
  set  _ENDIAN little
14
}
15
16
if { [info exists CPUTAPID ] } {
17
  set _CPUTAPID $CPUTAPID
18
} else {
19
  set _CPUTAPID 0x4ba00477
20
}
21
22
#delays on reset lines
23
jtag_nsrst_delay 200
24
jtag_ntrst_delay 200
25
26
# LPC2000 & LPC1700 -> SRST causes TRST
27
#reset_config trst_and_srst srst_pulls_trst
28
reset_config trst_and_srst separate
29
30
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
31
32
set _TARGETNAME $_CHIPNAME.cpu
33
target create $_TARGETNAME cortex_m3 -endian $_ENDIAN -chain-position $_TARGETNAME
34
35
# LPC1768 has 32kB of SRAM on its main system bus (so-called Local On-Chip SRAM)
36
$_TARGETNAME configure -work-area-phys 0x10000000 -work-area-size 0x8000 -work-area-backup 0
37
38
$_TARGETNAME configure -event reset-init {
39
  # Force target into ARM state
40
  #arm core_state arm
41
  #do not remap 0x0000-0x0020 to anything but the flash
42
#  mwb 0xE01FC040 0x01
43
  mwb 0xE000ED08 0x00
44
}
45
46
# LPC1768 has 512kB of user-available FLASH (bootloader is located in separate dedicated region).
47
# flash bank lpc1700 <base> <size> 0 0 <target#> <variant> <cclk> [calc_checksum]
48
49
set _FLASHNAME $_CHIPNAME.flash
50
flash bank $_FLASHNAME lpc2000 0x0 0x80000 0 0 $_TARGETNAME lpc1700 12000 calc_checksum
51
52
# 4MHz / 6 = 666kHz, so use 500
53
jtag_khz 500

Wer hat eine Idee?

von Smarti (Gast)


Lesenswert?

Nun ja,

das Prob hatte ich mit einem LPC2388 auch schon, über Flash Magic konnte 
er wieder neu geschrieben werden und die alten (falsche) PLL 
Einstellungen wurden überschrieben.

http://www.flashmagictool.com/

Viel Erfolg

von Eduard S. (rfk)


Lesenswert?

Danke für den Tipp, aber meines Wissens kann FlashMagic nicht via JTAG 
programmieren? Ich habe nämlich nur eine JTAG Schnittstelle zur 
Verfügung.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Nein, aber über den UART1. Also an pins Drähte ran und einen RS232/TTL 
Wandler ran.
Boot-Pin / Reset, dann kann es los gehen.

von Eduard S. (rfk)


Lesenswert?

Über JTAG gibt es da wirklich keine Möglichkeit? Aber wie auch immer, 
mittels ISP (UART0!) konnte ich den Controller auf jeden Fall retten. 
Danke!

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Flashmagictool kennt keine JTAG-Adapter. Wenn man die alle die es auf 
dem Markt gibt dort rein machen wollte, dann wäre es eine Wissenschaft 
für sich und das Tool wäre sicher nicht mehr kostenlos im Internet.
Sorry, ich meinte den ersten UART = UART0, ist schon über 1 Jahr her...

von bg (Gast)


Lesenswert?

Hi,
ich hab so ziemlich das gleiche Problem, nur mit einem LM3S9B90 von TI.
Ich hab's mit dem Flash util von TI probiert über die UART zu flashen, 
aber ohne Erfolg.
Verzweifele immer mehr und bin für jeden Tip dankbar.

mfg
 bg

von bg (Gast)


Lesenswert?

Hi,
hab eine Lösung gefunde.
Das Windows Flash-Util von TI bietet eine unlock Funktion.
Nach ein wenig spielen damit hab ich das Board wieder lauffähig 
bekommen.

mfg
 bg

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.