]> git.sur5r.net Git - openocd/commitdiff
flash/nor/tcl: Make write_bank parameter optional
authorMarc Schink <openocd-dev@marcschink.de>
Fri, 4 Nov 2016 07:39:03 +0000 (08:39 +0100)
committerFreddie Chopin <freddie.chopin@gmail.com>
Sat, 17 Jun 2017 11:44:25 +0000 (12:44 +0100)
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: I8e9632b539ad9e83211e1ac6a06da4c8109cbc60
Signed-off-by: Marc Schink <openocd-dev@marcschink.de>
Reviewed-on: http://openocd.zylin.com/3860
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
doc/openocd.texi
src/flash/nor/tcl.c

index d26c55a68366e15377a7f4a3d213313debc5c724..329b705947bf50621426445a9c781a3175a19605 100644 (file)
@@ -4715,9 +4715,10 @@ each block, and the specified length must stay within that bank.
 @end deffn
 @comment no current checks for errors if fill blocks touch multiple banks!
 
 @end deffn
 @comment no current checks for errors if fill blocks touch multiple banks!
 
-@deffn Command {flash write_bank} num filename offset
+@deffn Command {flash write_bank} num filename [offset]
 Write the binary @file{filename} to flash bank @var{num},
 Write the binary @file{filename} to flash bank @var{num},
-starting at @var{offset} bytes from the beginning of the bank.
+starting at @var{offset} bytes from the beginning of the bank. If @var{offset}
+is omitted, start at the beginning of the flash bank.
 The @var{num} parameter is a value shown by @command{flash banks}.
 @end deffn
 
 The @var{num} parameter is a value shown by @command{flash banks}.
 @end deffn
 
index ed5f77eea85b715e152fd732771fcfbc24a3856f..2bc0f8a9ed83d88922d51b5166afd23c3be17388 100644 (file)
@@ -585,7 +585,7 @@ COMMAND_HANDLER(handle_flash_write_bank_command)
        uint8_t *buffer;
        struct fileio *fileio;
 
        uint8_t *buffer;
        struct fileio *fileio;
 
-       if (CMD_ARGC != 3)
+       if (CMD_ARGC < 2 || CMD_ARGC > 3)
                return ERROR_COMMAND_SYNTAX_ERROR;
 
        struct duration bench;
                return ERROR_COMMAND_SYNTAX_ERROR;
 
        struct duration bench;
@@ -596,7 +596,16 @@ COMMAND_HANDLER(handle_flash_write_bank_command)
        if (ERROR_OK != retval)
                return retval;
 
        if (ERROR_OK != 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;
+       }
 
        if (fileio_open(&fileio, CMD_ARGV[1], FILEIO_READ, FILEIO_BINARY) != ERROR_OK)
                return ERROR_FAIL;
 
        if (fileio_open(&fileio, CMD_ARGV[1], FILEIO_READ, FILEIO_BINARY) != ERROR_OK)
                return ERROR_FAIL;
@@ -921,10 +930,9 @@ static const struct command_registration flash_exec_command_handlers[] = {
                .name = "write_bank",
                .handler = handle_flash_write_bank_command,
                .mode = COMMAND_EXEC,
                .name = "write_bank",
                .handler = handle_flash_write_bank_command,
                .mode = COMMAND_EXEC,
-               .usage = "bank_id filename offset",
-               .help = "Write binary data from file to flash bank, "
-                       "starting at specified byte offset from the "
-                       "beginning of the bank.",
+               .usage = "bank_id filename [offset]",
+               .help = "Write binary data from file to flash bank. Allow optional "
+                       "offset from beginning of the bank (defaults to zero).",
        },
        {
                .name = "write_image",
        },
        {
                .name = "write_image",