Forum: Mikrocontroller und Digitale Elektronik OpenOCD LPC2148 Flash programmieren -Problem-


von nobody (Gast)


Lesenswert?

hallo,

ich habe ein kleinen problem.
ich habe das olimex lpc2148 board und den jtag-adapter(parport) von 
olimex (soll ein wiggler-clone sein).

ich habe nun folgenden aufruf, um über jtag zu flashen.

openocd-pp -f lpc2xxx_pp.cfg

leider passiert dann nix, also er flasht nicht.

die lpc2xxx_pp.cfg-datei:

#daemon configuration
telnet_port 4444
gdb_port 3333

#interface
interface parport
parport_port 0x378
parport_cable wiggler
jtag_speed 0

#use combined on interfaces or targets that can't set TRST/SRST 
separately
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 <type> <startup mode>
#target arm7tdmi <reset mode> <chainpos> <endianness> <variant>
target arm7tdmi little run_and_halt 0 arm7tdmi-s_r4

run_and_halt_time 0 30
# flash-options LPC2138
target_script 0 reset openocd_lpc2148_flash.script

working_area 0 0x40000000 0x4000 nobackup
# LPC2138 @ 12MHz / 0x7D000 from 500*1024 (not 512!)
flash bank lpc2000 0x0 0x7D000 0 0 lpc2000_v2 0 12000 calc_checksum

# For more information about the configuration files, take a look at:
# http://openfacts.berlios.de/index-en.phtml?title=Open+On-Chip+Debugger

und openocd_lpc2148_flash.script

arm7_9 dcc_downloads enable
wait_halt
sleep 10
poll
flash probe 0
# erase first bank only:
flash erase 0 0 0
# erase all banks:
# flash erase 0 0 26
flash write 0 main.bin 0x0
reset run
sleep 10
shutdown

wenn ich openocd mit der cfg datei ohne die zeile
target_script 0 reset openocd_lpc2148_flash.script
starte, und mich per telnet einwähle und dann nacheinander die script 
befehle eingebe, dann kann ich flashen und er macht genau das was ich 
möchte.
nur wenn ich diese zeile in der cfg-datei drin habe, dann klappt es 
nicht!!

ich hoffe mir kann einer weiter helfen.



von Ale (Gast)


Lesenswert?

Ich habe auch ein Olimex protoboard, aber mit 2294, und es ist so daß 
die script lauft nicht, aber per telnet es geht. Ich habe die Docs von 
openOCD, nicht gut gelesen so villeicht gibt etwas mehr. Aber du bist 
nicht alleine.
Ich benuzte Insight so ich kann debuggen, so es ist noch sinlos, aber 
bald... ich muss auch ein lösung finden. (Was für ein version habst du 
?)

von Dominic R. (dominic)


Lesenswert?

Hi nobody,
(gilt evtl. auch Ale, nur kenne ich Ale's .cfg nicht)

du verwendest folgende Target Konfiguration:
target arm7tdmi little run_and_halt 0 arm7tdmi-s_r4

run_and_halt bedeutet, dass das Target für eine bestimmte Zeit läuft, 
und dann angehalten wird - ohne, dass etwas weiter passiert
run_and_init bedeutet, dass zusätzlich das "reset" script ausgeführt 
wird

Die verschiedenen Reset-Modi sind auch im OpenOCD Wiki erklärt: 
http://openfacts.berlios.de/index-en.phtml?title=OpenOCD_configuration

Die Kommentare in openocd_lpc2148_flash.script sind nicht ganz richtig:
"flash erase 0 0 0" löscht auf Bank 0 (das erste definierte Flash) von 
Block 0 bis Block 0, also nur den ersten Block.
"flash erase 0 0 26" löscht von Block 0 bis Block 26, also alle 27 
Blöcke
Sobald die zu Flashende Datei also grösser als der erste Block wird, 
muss die "erase" Zeile angepasst werden.

Gruss,

Dominic

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.