Here is what happens when I enable burst writes:
> load_image ./images/test.bin 0x80000000 bin
Data transfer failed. (84)
use 'arm11 memwrite burst disable' to disable fast burst mode
Runtime error, file "command.c", line 473:
> memwrite burst disable
Disabled memory write burst mode.
> mdw 0x80000000 0x100
0x80000000: e1a0c00d 00000000 e92dd800 00000000 e24cb004 00000000
e24dd004 00000000
0x80000020: e3a03000 00000000 e50b3010 00000000 e51b2010 00000000
e3a03ff9 00000000
0x80000040: e2833003 00000000 e1520003 00000000 ca000008 00000000
e59f2020 00000000
0x80000060: e59f301c 00000000 e5933000 00000000 e2833001 00000000
e5823000 00000000
0x80000080: e51b3010 00000000 e2833001 00000000 e50b3010 00000000
eafffff1 00000000
0x800000a0: e99da800 00000000 0a000058 00000000 00000000 00000000
00000000 00000000
So, every data word is written but at every other address. Note that all
data is written. So the variable mentioned below 'memrw_no_increment'
looks promising. However, I don't know how to set it?
What I did is to comment out the IDLE states in arm11_dbgtap.c
tap_state_t arm11_MOVE_DRPAUSE_IDLE_DRPAUSE_with_delay[] =
{
// was: TAP_DREXIT2, TAP_DRUPDATE, TAP_IDLE, TAP_IDLE, TAP_IDLE,
TAP_DRSELECT, TAP_DRCAPTURE, TAP_DRSHIFT
TAP_DREXIT2, TAP_DRUPDATE, TAP_IDLE, TAP_DRSELECT, TAP_DRCAPTURE,
TAP_DRSHIFT
};
This seemed to fix load_image with memwrite burst enable. The download
speed is quite good then, no error are reported and data is written
correctly.
I see though problems with mww after load_image (with or without above
changes but only when memwrite burst is enabled).
Any ideas how to debug this?
--Michal
On Fri, 2009-09-11 at 09:54 +0200, Øyvind Harboe wrote:
> On Fri, Sep 11, 2009 at 8:22 AM, Øyvind Harboe <[email protected]>
> wrote:
> > On Fri, Sep 11, 2009 at 6:54 AM, michal smulski <[email protected]>
> > wrote:
> >>
> >> Attached:
> >> 1. debug output for load_image without and with memburst write on
> >> arm1136. See the slow load time on first and error on the other one.
> >
> > Try "help arm11" and tinker with memrw_no_increment and
> > memwrite_error_fatal options.
> >
> > If manage to get load_image to succeed run a "verify_image" check
> > if the error is a red herring or not. You may need to fill the memory
> > with garbage to avoid verify_image succeeding when in fact
> > the last memory position wasn't touched.
>
> I've tried memwrite_burst enable here and I can download without
> getting the error message you see. Tried with a different file though...
> Modified size to fit in the debugger, still not reproducable.
>
> > reset init
> ....
> > load_image /config/firmware.phi 0x80000000 bin
> 1121390 byte written at address 0x80000000
> downloaded 1121390 byte in 34.139999s
> > memwrite_burst enable
> Enabled memory write burst mode.
> > load_image /config/firmware.phi 0x80000000 bin
> 1121390 byte written at address 0x80000000
> downloaded 1121390 byte in 84.540001s
>
>
>
>
> > idea on improving arm11 burst memory performance: add option to
> > make download open loop, i.e. do not check for completion of instructions...
>
> Strike that last one... already done in arm11 code.
>
>
test.bin
Description: Binary data
_______________________________________________ Openocd-development mailing list [email protected] https://lists.berlios.de/mailman/listinfo/openocd-development
