Relative long email.

I have not tried to use flashing so far. So today I tried to learn how to
flash the LPC2148 on board of the Olimex LPC-P2148.

I tried to halt the target and then use
"flash write_image isoc_io_sample.hex 0x0 ihex" but this does
not seem to work. Then I tried to use the following script from psas
(in part or in full, dcc or non-dcc)
http://www.linuxjournal.com/article/10421

#*****************
# open ocd (on chip debugger) script to flash lpc2148
# 'info .../OCD/src/openocd/doc/openocd.info'

# 3 is most. 0 is least info.
debug_level 1
# stop
reset halt
# log file
log_output write_flash.log
# pause...500mS
sleep 500
# current state
poll
# Force ARM7 into supervisor mode
reg cpsr 0x13
# mww: Memory word write
# Set the MEMMAP reg to point to flash (avoids problems while trying to flash)
mww 0xE01FC040 1
###
# * arm7_9 dcc_downloads <ENABLE|DISABLE> Enable the use of the debug
#     communications channel (DCC) to write larger (>128 byte) amounts
#     of memory. DCC downloads offer a huge speed increase, but might be
#     potentially unsafe, especially with targets running at a very low
#     speed. This command was introduced with OpenOCD rev. 60.
arm7_9 dcc_downloads enable
# Wait for target to enter debug mode. Default time is 5ms.
wait_halt
# pause
sleep 10
# current state
poll
# identify the flash
flash probe 0
# erase first bank only:
flash erase_sector 0 0 26
# pause
sleep 20
# memory display halfword <from address> [COUNT]
mdh 0x0 30
# pause
sleep 20
###
# * flash write_image [ERASE] <FILE> [OFFSET] [TYPE] Write the image
#     <FILE> to the current target's flash bank(s). A relocation
#     [OFFSET] can be specified and the file [TYPE] can be specified
#     explicitly as `bin' (binary), `ihex' (Intel hex), `elf' (ELF file)
#     or `s19' (Motorola s19). Flash memory will be erased prior to
#     programming if the `erase' parameter is given.
flash write_image isoc_io_sample.hex 0x0 ihex
#flash write_image serial.hex 0x0
#flash erase write_image serial.hex 0x0
#flash write_image serial.elf 0x0 elf
#flash write_image serial.hex 0x0 ihex
#flash write_image serial.bin 0x0 bin

# pause
sleep 20
# memory display halfword <from address> [COUNT]
mdh 0x0 30
# pause
sleep 20
# can't verify because of 0x14 reserved chksum address (LPC SPEC)
#verify_image serial.hex 0x0 bin
# memory display halfword <from address> [COUNT]
mdh 0x0 30

# pause
sleep 20
#reset run_and_halt
reset
halt

# pause
sleep 10
# stop the open ocd daemon.
#shutdown
#*****************


The flashing seem to be successful but the target is not working.

target state: halted
target halted in ARM state due to debug-request, current mode: System
cpsr: 0x8000005f pc: 0x0000088c
cpsr (/32): 0x00000013
dcc downloads are enabled
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x00000013 pc: 0x0000088c
flash 'lpc2000' found at 0x00000000
erased sectors 0 through 26 on flash bank 0 in 0.256274s
0x00000000: ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff
ffff ffff ffff ffff ffff
0x00000020: ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff
ffff ffff ffff
wrote 8036 byte from file isoc_io_sample.hex in 1.586009s (4.948053 kb/s)
0x00000000: f018 e59f f018 e59f f018 e59f f018 e59f f018 e59f 0000
e1a0 fff0 e51f f014 e59f
0x00000020: 0040 0000 00e4 0000 00e0 0000 00e4 0000 00e4 0000 00d8
0000 00dc 0000
0x00000000: f018 e59f f018 e59f f018 e59f f018 e59f f018 e59f 0000
e1a0 fff0 e51f f014 e59f
0x00000020: 0040 0000 00e4 0000 00e0 0000 00e4 0000 00e4 0000 00d8
0000 00dc 0000
Error: invalid mode value encountered
Error: cpsr contains invalid mode value - communication failure
Runtime error, file "oocd_flash_lpc2148.script", line 96:
    Warn : DBGACK set while target was in unknown state. Reset or
initialize target.
Error: invalid mode value encountered
Error: cpsr contains invalid mode value - communication failure
Warn : DBGACK set while target was in unknown state. Reset or initialize target.
... (keeps the  same error)

After this error, I have to unplug everything and then use lpc21isp
to flash the target so that I can run OpenOCD again with J-Link V3.

I know the hex is correct since the target works when flashing
with lpc21isp. The hex file is built from the lpcusb project and
tested with the Linux host program from psas.

What is the correct step to flash the LPC2148?

-- 
Xiaofan http://mcuee.blogspot.com
_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to