diff options
author | oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2008-07-09 11:09:06 +0000 |
---|---|---|
committer | oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2008-07-09 11:09:06 +0000 |
commit | 077131854e2980196ee2350940a301caf2d76114 (patch) | |
tree | 84f9bfaabbe532fd85da78f790e42db47e71f7d3 /src/flash | |
parent | 876297c25c970da58de83245a4c3b3a9e4c1f9ed (diff) | |
download | openocd_libswd-077131854e2980196ee2350940a301caf2d76114.tar.gz openocd_libswd-077131854e2980196ee2350940a301caf2d76114.tar.bz2 openocd_libswd-077131854e2980196ee2350940a301caf2d76114.tar.xz openocd_libswd-077131854e2980196ee2350940a301caf2d76114.zip |
added flash_banks low level command.
git-svn-id: svn://svn.berlios.de/openocd/trunk@776 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/flash')
-rw-r--r-- | src/flash/flash.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/flash/flash.c b/src/flash/flash.c index 91a94db7..1332e123 100644 --- a/src/flash/flash.c +++ b/src/flash/flash.c @@ -41,6 +41,11 @@ #include <errno.h> #include <inttypes.h> +#include "../jim.h" + +extern Jim_Interp *interp; + + /* command handlers */ int handle_flash_bank_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); int handle_flash_banks_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); @@ -140,10 +145,47 @@ int flash_register_commands(struct command_context_s *cmd_ctx) return ERROR_OK; } +static int Jim_Command_flash_banks(Jim_Interp *interp, int argc, Jim_Obj *const *argv) +{ + if (argc != 1) { + Jim_WrongNumArgs(interp, 1, argv, "no arguments to flash_banks command"); + return JIM_ERR; + } + flash_bank_t *p; + int i = 0; + + if (!flash_banks) + { + return JIM_ERR; + } + + Jim_Obj *list=Jim_NewListObj(interp, NULL, 0); + for (p = flash_banks; p; p = p->next) + { + Jim_Obj *elem=Jim_NewListObj(interp, NULL, 0); + + + Jim_ListAppendElement(interp, elem, Jim_NewStringObj(interp, p->driver->name, -1)); + Jim_ListAppendElement(interp, elem, Jim_NewIntObj(interp, p->base)); + Jim_ListAppendElement(interp, elem, Jim_NewIntObj(interp, p->size)); + Jim_ListAppendElement(interp, elem, Jim_NewIntObj(interp, p->bus_width)); + Jim_ListAppendElement(interp, elem, Jim_NewIntObj(interp, p->chip_width)); + + Jim_ListAppendElement(interp, list, elem); + } + + Jim_SetResult(interp, list); + + return JIM_OK; +} + + int flash_init_drivers(struct command_context_s *cmd_ctx) { if (flash_banks) { + Jim_CreateCommand(interp, "flash_banks", Jim_Command_flash_banks, NULL, NULL ); + register_command(cmd_ctx, flash_cmd, "banks", handle_flash_banks_command, COMMAND_EXEC, "list configured flash banks "); register_command(cmd_ctx, flash_cmd, "info", handle_flash_info_command, COMMAND_EXEC, |