summaryrefslogtreecommitdiff
path: root/src/flash
diff options
context:
space:
mode:
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-07-09 11:09:06 +0000
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-07-09 11:09:06 +0000
commit077131854e2980196ee2350940a301caf2d76114 (patch)
tree84f9bfaabbe532fd85da78f790e42db47e71f7d3 /src/flash
parent876297c25c970da58de83245a4c3b3a9e4c1f9ed (diff)
downloadopenocd+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.c42
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,