flash/nor/tcl: Make verify_bank parameter optional

Make the 'offset' parameter optional, if omitted simply start at the
beginning of the flash bank.

Additionally, check if the argument is out of bounds of the flash bank.

Change-Id: Id1959eee5c395666c35f26342c3c50134dd564e5
Signed-off-by: Marc Schink <openocd-dev@marcschink.de>
Reviewed-on: http://openocd.zylin.com/3858
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
This commit is contained in:
Marc Schink 2016-11-04 08:09:56 +01:00 committed by Freddie Chopin
parent 790a7b2a8d
commit 45f0e6d062
2 changed files with 18 additions and 8 deletions

View File

@ -4656,9 +4656,10 @@ and write the contents to the binary @file{filename}.
The @var{num} parameter is a value shown by @command{flash banks}. The @var{num} parameter is a value shown by @command{flash banks}.
@end deffn @end deffn
@deffn Command {flash verify_bank} num filename offset @deffn Command {flash verify_bank} num filename [offset]
Compare the contents of the binary file @var{filename} with the contents of the Compare the contents of the binary file @var{filename} with the contents of the
flash @var{num} starting at @var{offset}. Fails if the contents do not match. flash bank @var{num} starting at @var{offset}. If @var{offset} is omitted,
start at the beginning of the flash bank. Fail if the contents do not match.
The @var{num} parameter is a value shown by @command{flash banks}. The @var{num} parameter is a value shown by @command{flash banks}.
@end deffn @end deffn

View File

@ -707,7 +707,7 @@ COMMAND_HANDLER(handle_flash_verify_bank_command)
size_t filesize; size_t filesize;
int differ; int differ;
if (CMD_ARGC != 3) if (CMD_ARGC < 2 || CMD_ARGC > 3)
return ERROR_COMMAND_SYNTAX_ERROR; return ERROR_COMMAND_SYNTAX_ERROR;
struct duration bench; struct duration bench;
@ -718,7 +718,16 @@ COMMAND_HANDLER(handle_flash_verify_bank_command)
if (ERROR_OK != retval) if (ERROR_OK != retval)
return retval; return retval;
COMMAND_PARSE_NUMBER(u32, CMD_ARGV[2], offset); offset = 0;
if (CMD_ARGC > 2)
COMMAND_PARSE_NUMBER(u32, CMD_ARGV[2], offset);
if (offset > p->size) {
LOG_ERROR("Offset 0x%8.8" PRIx32 " is out of range of the flash bank",
offset);
return ERROR_COMMAND_ARGUMENT_INVALID;
}
retval = fileio_open(&fileio, CMD_ARGV[1], FILEIO_READ, FILEIO_BINARY); retval = fileio_open(&fileio, CMD_ARGV[1], FILEIO_READ, FILEIO_BINARY);
if (retval != ERROR_OK) { if (retval != ERROR_OK) {
@ -926,10 +935,10 @@ static const struct command_registration flash_exec_command_handlers[] = {
.name = "verify_bank", .name = "verify_bank",
.handler = handle_flash_verify_bank_command, .handler = handle_flash_verify_bank_command,
.mode = COMMAND_EXEC, .mode = COMMAND_EXEC,
.usage = "bank_id filename offset", .usage = "bank_id filename [offset]",
.help = "Read binary data from flash bank and file, " .help = "Compare the contents of a file with the contents of the "
"starting at specified byte offset from the " "flash bank. Allow optional offset from beginning of the bank "
"beginning of the bank. Compare the contents.", "(defaults to zero).",
}, },
{ {
.name = "protect", .name = "protect",