add 'flash list', rewrite 'flash banks'

Rename the existing 'flash banks' implementation as 'flash list', and
replace the broken 'flash_banks' TCL wrapper with a new command handler.

Adds documentation for the new 'flash list' command in the user guide.
This commit is contained in:
Zachary T Welch 2009-12-06 21:30:21 -08:00
parent 2bc4dee7e6
commit 30a6e683b8
3 changed files with 37 additions and 23 deletions

View File

@ -3638,12 +3638,18 @@ Use it in board specific configuration files, not interactively.
@comment the REAL name for this command is "ocd_flash_banks" @comment the REAL name for this command is "ocd_flash_banks"
@comment less confusing would be: "flash list" (like "nand list") @comment less confusing would be: "flash list" (like "nand list")
@deffn Command {flash banks} @deffn Command {flash banks}
Prints a one-line summary of each device declared Prints a one-line summary of each device that was
using @command{flash bank}, numbered from zero. declared using @command{flash bank}, numbered from zero.
Note that this is the @emph{plural} form; Note that this is the @emph{plural} form;
the @emph{singular} form is a very different command. the @emph{singular} form is a very different command.
@end deffn @end deffn
@deffn Command {flash list}
Retrieves a list of associative arrays for each device that was
declared using @command{flash bank}, numbered from zero.
This returned list can be manipulated easily from within scripts.
@end deffn
@deffn Command {flash probe} num @deffn Command {flash probe} num
Identify the flash, or validate the parameters of the configured flash. Operation Identify the flash, or validate the parameters of the configured flash. Operation
depends on the flash type. depends on the flash type.

View File

@ -816,14 +816,30 @@ COMMAND_HANDLER(handle_flash_bank_command)
flash_bank_add(c); flash_bank_add(c);
return ERROR_OK; return ERROR_OK;
} }
COMMAND_HANDLER(handle_flash_banks_command)
static int jim_flash_banks(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
{ {
if (argc != 1) { if (CMD_ARGC != 0)
Jim_WrongNumArgs(interp, 1, argv, "no arguments to flash_banks command"); return ERROR_INVALID_ARGUMENTS;
unsigned n = 0;
for (struct flash_bank *p = flash_bank_list(); p; p = p->next, n++)
{
LOG_USER("#%u: %s at 0x%8.8" PRIx32 ", size 0x%8.8" PRIx32 ", "
"buswidth %u, chipwidth %u", n,
p->driver->name, p->base, p->size,
p->bus_width, p->chip_width);
}
return ERROR_OK;
}
static int jim_flash_list(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
{
if (argc != 1)
{
Jim_WrongNumArgs(interp, 1, argv,
"no arguments to 'flash list' command");
return JIM_ERR; return JIM_ERR;
} }
@ -890,8 +906,14 @@ static const struct command_registration flash_config_command_handlers[] = {
{ {
.name = "banks", .name = "banks",
.mode = COMMAND_ANY, .mode = COMMAND_ANY,
.jim_handler = &jim_flash_banks, .handler = &handle_flash_banks_command,
.help = "return information about the flash banks", .help = "return readable information about the flash banks",
},
{
.name = "list",
.mode = COMMAND_ANY,
.jim_handler = &jim_flash_list,
.help = "returns a list of details about the flash banks",
}, },
COMMAND_REGISTRATION_DONE COMMAND_REGISTRATION_DONE
}; };

View File

@ -1,16 +1,2 @@
# Defines basic Tcl procs for OpenOCD flash module # Defines basic Tcl procs for OpenOCD flash module
# Show flash in human readable form
# This is an example of a human readable form of a low level fn
proc flash_banks {} {
set i 0
set result ""
foreach {a} [ocd_flash banks] {
if {$i > 0} {
set result "$result\n"
}
set result [format "$result#%d: %s at 0x%08x, size 0x%08x, buswidth %d, chipwidth %d" $i $a(name) $a(base) $a(size) $a(bus_width) $a(chip_width)]
set i [expr $i+1]
}
return $result
}