Forum: Mikrocontroller und Digitale Elektronik LPC2129 flash mit OpenOCD-USB programmieren Error: (-902)


von Sven (Gast)


Lesenswert?

Hallo alle zusammen.

Folgendes Problem beschäftigt mich nun schon seid fast einer Woche:


Ich muss für meine Diplomarbeit einen LPC2000 von NXP Programmieren.

Zum einarbeitenin die Thematik habe ich ein MCB2100 mit LPC2129 von Keil 
zur Verfügung gestellt bekommen. Ich benutze die Yagarto Toolchain mit 
Eclipse. Das Funktioniert auch alles wunderbar. Ich habe schon einige 
Testprogramme geschrieben, erfolgreich Compiliert und auch per ISP auf 
den Controller übertragen.

Jetzt will ich aber nicht immer mit dem Seriellen Kabel rumbasteln 
müssen, sondern ich möchte den OpenOCD-USB von embedded-projects 
benutzen.
Das einrichten von dem Teil hat mich bestimmt einige Jahre meines Lebens 
und einige Nächte im Internet gekostet aber es geht jetzt.
Ich kann jetzt das Programm per FlashMagic auf den Controller braten und 
dann mit OpenOCD und Eclipse mein Programm debuggen. (da debuggin im 
Flash nur mit 2 HW Breakpoints, macht aber nichts, ist allemal mehr als 
nichts oder son paar blink LEDs)

Das einzige was jetzt noch nicht klappt ist das Flashen über JTAG.

Ich bin mittlerweile bei folgenden Einstellungen angekommen:

--- oocdlink.cfg (config Datei für die openocd-ftd2xx.exe): ---


# sam7s-oocdlink.cfg
# Openocd configuration for OpenOCD-USB connected to an AT91SAM7S256
# 2008-04-26 <Hubert.Hoegl@hs-augsburg.de>

#daemon configuration
telnet_port 4444
gdb_port 3333

# tell gdb our flash memory map
gdb_memory_map enable
# enable flash programming
gdb_flash_program enable

#interface
interface ft2232
ft2232_device_desc "Dual RS232 A"
ft2232_layout oocdlink
ft2232_vid_pid 0x0403 0x6010

# JTAG speed needs to be slower otherwise there are strange timeouts
# when trying to configure the device to go.
jtag_speed 50
jtag_nsrst_delay 200
jtag_ntrst_delay 200

reset_config trst_and_srst srst_pulls_trst

#jtag scan chain
#   format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, 
IDCODE)
jtag_device 4 0x1 0xf 0xe

#target configuration
daemon_startup reset

#target arm7tdmi <endian> <reset mode> <chainpos> <variant>
target arm7tdmi little run_and_halt 0 lpc2000
run_and_halt_time 0 30

sleep 500
arm7_9 force_hw_bkpts enable

arm7_9 dcc_downloads enable

#flash probe 0
#flash erase  0 0 26

working_area 0 0x00000000 0x400000 nobackup

sleep 500
flash bank lpc2000 0x0 0x40000 0 0 0 lpc2000_v1 12000 calc_checksum
sleep 500


--- EOF ---

--- Und das initialisierungs script: ---

# init.gdb

target remote localhost:3333

set logging file gdb.log
set logging on
set history filename gdb.history
set history save
set history size 512
set history expansion on

monitor arm7_9 write_xpsr 0x000000d3 0
monitor mww 0xE01FC040 0x00000001
monitor mww 0xE01FC080 0x00000001
monitor mww 0xE01FC084 0x00000023
monitor mww 0xE01FC08C 0x000000AA
monitor mww 0xE01FC08C 0x00000055
monitor sleep 10
monitor mww 0xFFE00004 0x22000400
monitor mww 0xFFE00000 0x10002C65
monitor mww 0xE002C014 0x0F014924
monitor sleep 10

monitor wait_halt
monitor sleep 500
monitor poll
monitor soft_reset_halt
monitor arm7_9 sw_bkpts disable
monitor arm7_9 force_hw_bkpts enable
monitor mww 0xE01FC040 0x0001
monitor mdw 0xE01FC040

monitor halt
monitor wait_halt
monitor sleep 500

monitor flash write_image canall.hex 0x00 ihex

--- EOF ---

Wenn ich nun das debuggen starten will bekomme ich schlussendlich diese 
Fehlermeldung:

monitor flash write_image canall.hex 0x00 ihex
memory write caused data abort (address: 0x00001000, size: 0x4, count: 
0x2)
memory write caused data abort (address: 0x00001008, size: 0x4, count: 
0x6)
memory write caused data abort (address: 0x00001020, size: 0x4, count: 
0x3)
lpc2000 prepare sectors returned -1
error writing to flash at address 0x00000000 at offset 0x00000000


Jemand ne Idee?
Ich bin mir sicher, dass man das init script und die config erheblich 
ausmisten kann, aber ich weis nicht an welchen Stellen. Und am 
wichtigsten: Warum kann ich den Controller nicht Programmieren obwohl es 
mit FlashMagic und Serieller schnitstelle klappt???

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

- Welche OpenOCD-Version?
- "working_area 0 0x00000000 0x400000 nobackup" sieht nicht gut aus. 
Startaddresse nicht im RAM, Größe passt nicht zur LPC2129 RAM
- testweise vor flash write_image noch flash probe 0

von Sven (Gast)


Lesenswert?

Version:

D:\Dokumente und Einstellungen\Sven>openocd-ftd2xx.exe
Open On-Chip Debugger (2008-06-19 19:00) svn: 717


Muss die Working Area ins RAM wenn ich im Flash debuggen will? Bzw, was 
ist mit Workung Area überhaupt gemeint?
Und die Größe passt natürlich nichtzum Ram sondern zum Flash, ich dachte 
ja, es müsse der Bereich angegeben werden in dem Das ding Arbeiten soll, 
also der Flash speicher, und der ist beim LPC2129 256Kbyte groß, oder?
Ich schau schnell nach...

Jop.. von 0x00000000 bis 0x0003ffff

Oh, ich sehe grade, ich hab mich bei den Nullen verzählt.. -.-

Geändert. --> Geht aber immer noch nicht.

(ist echt frustrierend... man kommt immer näher ran aber eben nicht zum 
Ziel...)

---

flash probe 0 liefert:

monitor flash probe 0
flash 'lpc2000' found at 0x00000000

von Sven (Gast)


Lesenswert?

So. Geht.

Ich werd in den nächsten Tagen mal beschreiben, wie ichs gelöst hab. Den 
entscheidenden Tip hab ich hier im Chat bekommen...

Danke nochmal für die Hilfe!

von kay (Gast)


Lesenswert?

Und?
Wie ist die Loesung? :-)
Ich haette Interesse daran.

cu

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.