PHYTEC LPC3250 with OLIMEX ARM-USB_TINY and OPENOCD 4.0

I am trying a very simple thing.

In OPENOCD telnet cession I do

reset halt

mww 0 5 1

I get the message

memory write caused data abort (address: 0x00000000, size: 0x4, count: 0x1)

Command handler execution failed

in procedure ‘mww’

My configuration is listed bellow

any clue of what is wrong with this picture would be greatly appreciated :slight_smile:

Regards

Jean-Pierre Sainfeld

openocd.cfg

find more details about configuration at

http://openfacts.berlios.de/index-en.ph … figuration

source [ find ./interface-olimex.cfg]

source [ find ./chip-lpc3250.cfg ]

Port on which to listen for incoming telnet connections

telnet_port 4444

#First port on which to listen for incoming GDB connections. The GDB port for the first target will be gdb_port, the second target will #listen on gdb_port + 1, and so on.

gdb_port 3333

set debug_level 3

source [ find ./target-lpc3250.cfg ]

define the NAND flash devices

The command is of the form

nand device <[configparams…]>

Declares a NAND device, which can be read and written to after it has been configured

• name … may be used to reference the NAND bank in most other NAND commands.

A number is also available.

• driver … identifies the NAND controller driver associated with the NAND device being declared.

• target … names the target used when issuing commands to the NAND controller.

• configparams … controllers may support, or require, additional parameters.

nand device ournand lpc3250 0 13000

This procedure is to meant to store a SE blob

from a specified file to a specified block within

a specified FLASH Bank

proc save_blob { bk_id fname blk } {

set offset [format %x [expr $blk * 16384]];

set blk_size 16384;

set size [file size $fname];

set nb_blk [ expr $size / $blk_size];

set round_up [ expr $size % $blk_size];

if { $round_up } {

incr nb_blk;

}

set erase_len [ format %x [expr $nb_blk * $blk_size]];

puts “$fname is $size bytes long”;

puts “we will erase $nb_blk blocks - 0x$erase_len bytes”;

puts “Storing $fname at block $blk [0x$offset] in NAND $bk_id”;

puts “erasing $bk_id 0x$offset 0x$erase_len”;

nand erase $bk_id 0x$offset 0x$erase_len;

puts “writing $fname at 0x$offset in NAND $bk_id”;

nand write $bk_id $fname 0x$offset oob_raw;

puts “verifying $fname at 0x$offset from NAND $bk_id”;

nand verify $bk_id $fname 0x$offset oob_raw;

puts “Done.”;

}

proc nandbb { bk_id sb nb } {

set offset [format %x [expr $sb * 16384]];

set len [ format %x [expr $nb * 16384]];

puts “checking for bad blocks $bk_id 0x$offset 0x$len”;

nand check_bad_blocks $bk_id 0x$offset 0x$len;

}

==============chip-lpc3250.cfg

lpc3250 config

set _CHIPNAME lpc3250

set _ENDIAN little

set _CPUTAPID 0x17926f0f

set _SJCTAPID 0x1b900f0f

jtag newtap $_CHIPNAME sjc -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_SJCTAPID

jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID

set _TARGETNAME $_CHIPNAME.cpu

target create $_TARGETNAME arm926ejs -endian little -chain-position $_TARGETNAME -work-area-phys 0x0B000000 -work-area-size 0xffffff -work-area-backup 0

proc power_restore {} { puts “Sensed power restore. No action.” }

proc srst_deasserted {} { puts “Sensed nSRST deasserted. No action.” }

======interface-olimex.cfg

Olimex ARM-USB-TINY

http://www.olimex.com/dev/arm-usb-tiny.html

interface ft2232

ft2232_device_desc

The USB device description of the FTDI FT2232 device. If not specified, the FTDI default value is used. This setting is only valid if

compiled with FTD2XX support.

ft2232_device_desc “Olimex OpenOCD JTAG TINY”

ft2232_layout

The layout of the FT2232 GPIO signals used to control output-enables and reset signals

ft2232_layout olimex-jtag

ft2232_vid_pid

The vendor ID and product ID of the FTDI FT2232 device. If not specified, the FTDI default values are used

ft2232_vid_pid 0x15ba 0x0004

================target-lpc3250.cfg

Olimex ARM-USB-TINY

http://www.olimex.com/dev/arm-usb-tiny.html

interface ft2232

ft2232_device_desc

The USB device description of the FTDI FT2232 device. If not specified, the FTDI default value is used. This setting is only valid if

compiled with FTD2XX support.

ft2232_device_desc “Olimex OpenOCD JTAG TINY”

ft2232_layout

The layout of the FT2232 GPIO signals used to control output-enables and reset signals

ft2232_layout olimex-jtag

ft2232_vid_pid

The vendor ID and product ID of the FTDI FT2232 device. If not specified, the FTDI default values are used

ft2232_vid_pid 0x15ba 0x0004

====

Well it seems that you can not write to that memory after executing reset halt

Something from the OpenOCD documentation (user guide http://openocd.berlios.de/web/?page_id=54 )

Once OpenOCD has entered the run stage,a number of commands become available. A
number of these relate to the debug targets you may have declared. For example, the mww
command will not be available until a target has been successfuly instantiated. If you want
to use those commands, you may need to force entry to the runstage.

And Olimex interface configuration is listed twice?! Or was it accidental copy/paste while you were writing the message?