Wow ! What a speed-up :
Adding :
        int retval;
        if ((retval = jtag_execute_queue()) != ERROR_OK)
        {
                LOG_ERROR("register read failed");
                return retval;
        }

At the end of mips_ejtag_fastdata_scan() got me to :
downloaded 361540 bytes in 12.171962s (29.007 KiB/s)

Why this step is necessary ?

BR,
Drasko

On Fri, Apr 1, 2011 at 7:44 PM, Drasko DRASKOVIC
<[email protected]> wrote:
> On Fri, Apr 1, 2011 at 6:42 PM, Øyvind Harboe <[email protected]> wrote:
>>> last time i benchmarked the mips code removing the keep_alive made no change
>>> - only tested flash programming.
>>
>> There are a LOT of unnecessary USB roundtrips and Drasko is looking
>> into replacing clock out / in with clock out only where applicable.
>>
>> The added bonus of only clocking out is that clocking out can not fail,
>> so there is no need to propagate return values.
>
> Yes, and actually I saw that I introduced unnecessary latency with the
> latest patch, trying to correct  wait_for_pracc_rw().
>
> As an optimization, I tried taking out repeating instruction send, like this :
>
>  /* wait for the PrAcc to become "1" */
>        mips_ejtag_set_instr(ejtag_info, EJTAG_INST_CONTROL);
>        ejtag_ctrl = ejtag_info->ejtag_ctrl;
>
>        int retval;
>        if ((retval = jtag_execute_queue()) != ERROR_OK)
>        {
>                LOG_ERROR("fastdata load failed");
>                return retval;
>        }
>
>        while (1)
>        {
>                retval = mips_ejtag_drscan_32(ejtag_info, &ejtag_ctrl);
>                if (retval != ERROR_OK)
>                        return retval;
>
>                if (ejtag_ctrl & EJTAG_CTRL_PRACC)
>                        break;
>
>                if ( (timeout = timeval_ms()-then) > 1000 )
>                {
>                        LOG_DEBUG("DEBUGMODULE: No memory access in 
> progress!");
>                        return ERROR_JTAG_DEVICE_ERROR;
>                }
>        }
>
>
> As a result we have :
> downloaded 361540 bytes in 182.160828s (1.938 KiB/s)
>
> compared to previous :
> downloaded 361540 bytes in 362.964050s (0.973 KiB/s)
>
> I am really wondering for the FASTDATA loop, do we have to wait on
> PrAcc to be "1"... But trying not to wait (in order to prevent
> instruction sending, like in previous case), I am getting :
> Debug: 444 11073 ft2232.c:1959 ft2232_execute_scan(): ft2232 buffer
> size reached, sending queued commands (first_unsent: 0xb7bcb008, cmd:
> 0xb7cc122c)
>
> A lot of similar errors...
>
> BR,
> Drasko
>
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to