From: oharboe Date: Wed, 9 Jul 2008 11:09:06 +0000 (+0000) Subject: added flash_banks low level command. X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=077131854e2980196ee2350940a301caf2d76114;p=fw%2Fopenocd added flash_banks low level command. git-svn-id: svn://svn.berlios.de/openocd/trunk@776 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- diff --git a/src/flash/flash.c b/src/flash/flash.c index 91a94db73..1332e1235 100644 --- a/src/flash/flash.c +++ b/src/flash/flash.c @@ -41,6 +41,11 @@ #include #include +#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,