target: increase chunk size in dump_image
Replace the big stack-allocated buffer with a much bigger heap-allocated. There was no explanation for the apparently arbitrary chunk size, and performance was improved by increasing it, leveling out at about 4k. Change-Id: I3b06d4469092ec8d89d0ce05bff0b7cf213c5062 Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/404 Tested-by: jenkins Reviewed-by: Marti Bolivar <mbolivar@leaflabs.com> Reviewed-by: Øyvind Harboe <oyvindharboe@gmail.com>
This commit is contained in:
parent
fce4ac5714
commit
61f3d4b7e4
|
@ -2797,7 +2797,7 @@ COMMAND_HANDLER(handle_load_image_command)
|
|||
COMMAND_HANDLER(handle_dump_image_command)
|
||||
{
|
||||
struct fileio fileio;
|
||||
uint8_t buffer[560];
|
||||
uint8_t *buffer;
|
||||
int retval, retvaltemp;
|
||||
uint32_t address, size;
|
||||
struct duration bench;
|
||||
|
@ -2809,17 +2809,23 @@ COMMAND_HANDLER(handle_dump_image_command)
|
|||
COMMAND_PARSE_NUMBER(u32, CMD_ARGV[1], address);
|
||||
COMMAND_PARSE_NUMBER(u32, CMD_ARGV[2], size);
|
||||
|
||||
uint32_t buf_size = (size > 4096) ? 4096 : size;
|
||||
buffer = malloc(buf_size);
|
||||
if (!buffer)
|
||||
return ERROR_FAIL;
|
||||
|
||||
retval = fileio_open(&fileio, CMD_ARGV[0], FILEIO_WRITE, FILEIO_BINARY);
|
||||
if (retval != ERROR_OK)
|
||||
if (retval != ERROR_OK) {
|
||||
free(buffer);
|
||||
return retval;
|
||||
}
|
||||
|
||||
duration_start(&bench);
|
||||
|
||||
retval = ERROR_OK;
|
||||
while (size > 0)
|
||||
{
|
||||
size_t size_written;
|
||||
uint32_t this_run_size = (size > 560) ? 560 : size;
|
||||
uint32_t this_run_size = (size > buf_size) ? buf_size : size;
|
||||
retval = target_read_buffer(target, address, this_run_size, buffer);
|
||||
if (retval != ERROR_OK)
|
||||
{
|
||||
|
@ -2836,6 +2842,8 @@ COMMAND_HANDLER(handle_dump_image_command)
|
|||
address += this_run_size;
|
||||
}
|
||||
|
||||
free(buffer);
|
||||
|
||||
if ((ERROR_OK == retval) && (duration_measure(&bench) == ERROR_OK))
|
||||
{
|
||||
int filesize;
|
||||
|
|
Loading…
Reference in New Issue