- retired variable stuff.
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Fri, 11 Jul 2008 12:17:56 +0000 (12:17 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Fri, 11 Jul 2008 12:17:56 +0000 (12:17 +0000)
- drscan is now a low level tcl command:
 execute DR scan <device> <num_bits> <value> <num_bits1> <value2>
- removed obsolete partial command text support

git-svn-id: svn://svn.berlios.de/openocd/trunk@791 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/Makefile.am
src/helper/Makefile.am
src/helper/command.c
src/helper/command.h
src/helper/interpreter.c [deleted file]
src/jtag/Makefile.am
src/jtag/jtag.c
src/openocd.c
src/openocd_tcl.h [moved from src/helper/interpreter.h with 65% similarity]
src/target/target/at91eb40a.cfg

index 1c96fb474bf58ab1027a2b03b409764d078c1f2e..fae00866a2ae0debf94f384cffb7998a47370893 100644 (file)
@@ -10,7 +10,7 @@ endif
 openocd_SOURCES = $(MAINFILE) openocd.c startup.c
 
 # set the include path found by configure
-INCLUDES = -I$(top_srcdir)/src/helper \
+INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/src/helper \
        -I$(top_srcdir)/src/jtag -I$(top_srcdir)/src/target -I$(top_srcdir)/src/xsvf -I$(top_srcdir)/src/server \
        -I$(top_srcdir)/src/flash -I$(top_srcdir)/src/pld $(all_includes)
 
index e518bc7f218963f33d043199838c48a2954dca2d..1f3d76b6ec76d35d14fdd645daeffd1c702b1dc7 100644 (file)
@@ -9,7 +9,7 @@ else
 CONFIGFILES = options.c
 endif
 
-libhelper_a_SOURCES = binarybuffer.c $(CONFIGFILES) configuration.c log.c interpreter.c command.c time_support.c \
+libhelper_a_SOURCES = binarybuffer.c $(CONFIGFILES) configuration.c log.c command.c time_support.c \
        replacements.c fileio.c
 noinst_HEADERS = binarybuffer.h configuration.h types.h log.h command.h \
-       interpreter.h time_support.h replacements.h fileio.h
+       time_support.h replacements.h fileio.h
index 6acd53c1e650c014026dfc85c5ed21c1d68ed218..d2abb0c2ab43de4900667606f523f6d14785a6d6 100644 (file)
@@ -49,52 +49,11 @@ int handle_fast_command(struct command_context_s *cmd_ctx, char *cmd, char **arg
 /* forward declaration of jim_command */
 extern int jim_command(command_context_t *context, char *line);
 
-int build_unique_lengths(command_context_t *context, command_t *commands)
-{
-       command_t *c, *p;
-
-       /* iterate through all commands */
-       for (c = commands; c; c = c->next)
-       {
-               /* find out how many characters are required to uniquely identify a command */
-               for (c->unique_len = 1; c->unique_len <= strlen(c->name); c->unique_len++)
-               {
-                       int foundmatch = 0;
-                       
-                       /* for every command, see if the current length is enough */
-                       for (p = commands; p; p = p->next)
-                       {
-                               /* ignore the command itself */
-                               if (c == p)
-                                       continue;
-                               
-                               /* compare commands up to the current length */
-                               if (strncmp(p->name, c->name, c->unique_len) == 0)
-                                       foundmatch++;
-                       }
-                       
-                       /* when none of the commands matched, we've found the minimum length required */
-                       if (!foundmatch)
-                               break;
-               }
-               
-               /* if the current command has children, build the unique lengths for them */
-               if (c->children)
-                       build_unique_lengths(context, c->children);
-       }
-       
-       return ERROR_OK;
-}
 
-/* Avoid evaluating this each time we add a command. Reduces overhead from O(n^2) to O(n). 
- * Makes a difference on ARM7 types machines and is not observable on GHz machines.
- */
-static int unique_length_dirty = 1; 
 
 command_t* register_command(command_context_t *context, command_t *parent, char *name, int (*handler)(struct command_context_s *context, char* name, char** args, int argc), enum command_mode mode, char *help)
 {
        command_t *c, *p;
-       unique_length_dirty = 1;
        
        if (!context || !name)
                return NULL;
@@ -110,7 +69,6 @@ command_t* register_command(command_context_t *context, command_t *parent, char
                c->help = strdup(help);
        else
                c->help = NULL;
-       c->unique_len = 0;
        c->next = NULL;
        
        /* place command in tree */
@@ -150,8 +108,6 @@ int unregister_all_commands(command_context_t *context)
 {
        command_t *c, *c2;
        
-       unique_length_dirty = 1;
-       
        if (context == NULL)
                return ERROR_OK;
        
@@ -189,8 +145,6 @@ int unregister_command(command_context_t *context, char *name)
 {
        command_t *c, *p = NULL, *c2;
        
-       unique_length_dirty = 1;
-       
        if ((!context) || (!name))
                return ERROR_INVALID_ARGUMENTS;
        
@@ -351,21 +305,11 @@ command_t *find_command(command_context_t *context, command_t *commands, char *w
 {
        command_t *c;
        
-       if (unique_length_dirty)
-       {
-               unique_length_dirty = 0;
-               /* update unique lengths */
-               build_unique_lengths(context, context->commands);
-       }
-       
        for (c = commands; c; c = c->next)
        {
-               if (strncasecmp(c->name, words[start_word], c->unique_len))
+               if (strcasecmp(c->name, words[start_word]))
                        continue;
 
-               if (strncasecmp(c->name, words[start_word], strlen(words[start_word])))
-                       continue;
-               
                if ((context->mode == COMMAND_CONFIG) || (c->mode == COMMAND_ANY) || (c->mode == context->mode) )
                {
                        if (!c->children)
@@ -533,10 +477,7 @@ int command_print_help_match(command_context_t* context, command_t* c_first, cha
        {
                if (argc > 0)
                {
-                       if (strncasecmp(c->name, args[0], c->unique_len))
-                               continue;
-
-                       if (strncasecmp(c->name, args[0], strlen(args[0])))
+                       if (strcasecmp(c->name, args[0]))
                                continue;
 
                        if (argc > 1)
index 6a1da02410fa36ec6bb21418110af4cb8914d3e4..bc4d332e669d57c3ce173ccda1b18e9e4d6eb174 100644 (file)
@@ -60,7 +60,6 @@ typedef struct command_s
        int (*handler)(struct command_context_s *context, char* name, char** args, int argc);
        enum command_mode mode;
        char *help;
-       int unique_len;
        struct command_s *next;
 } command_t;
 
diff --git a/src/helper/interpreter.c b/src/helper/interpreter.c
deleted file mode 100644 (file)
index 8dbb790..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-/***************************************************************************
- *   Copyright (C) 2005 by Dominic Rath                                    *
- *   Dominic.Rath@gmx.de                                                   *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
- ***************************************************************************/
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "interpreter.h"
-#include "configuration.h"
-
-#include "binarybuffer.h"
-#include <stdlib.h>
-#include <string.h>
-
-var_t *variables = NULL;
-
-int handle_var_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-int handle_field_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-int handle_script_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-
-int interpreter_register_commands(struct command_context_s *cmd_ctx)
-{
-       register_command(cmd_ctx, NULL, "var", handle_var_command,
-               COMMAND_ANY, "allocate, display or delete variable <name> [num_fields|'del'] [size1] ...");
-       register_command(cmd_ctx, NULL, "field", handle_field_command,
-               COMMAND_ANY, "display/modify variable field <var> <field> [value|'flip']");
-       register_command(cmd_ctx, NULL, "script", handle_script_command,
-               COMMAND_ANY, "execute commands from <file>");
-
-       return ERROR_OK;
-}
-
-var_t* get_var_by_num(int num)
-{
-       int count = 0;
-       var_t *var = variables;
-
-       if (var)        
-       {
-               if (num == count)
-                       return var;
-               while (var->next)
-               {
-                       var = var->next;
-                       count++;
-                       if (num == count)
-                               return var;
-               }
-       }
-       return NULL;
-}
-
-var_t* get_var_by_name(char *name)
-{
-       var_t *var = variables;
-
-       if (var)        
-       {
-               if (strcmp(var->name, name) == 0)
-                       return var;
-               while (var->next)
-               {
-                       var = var->next;
-                       if (strcmp(var->name, name) == 0)
-                               return var;
-               }
-       }
-       return NULL;
-}
-
-var_t* get_var_by_namenum(char *namenum)
-{
-       if ((namenum[0] >= '0') && (namenum[0] <= '9'))
-               return get_var_by_num(strtol(namenum, NULL, 0));
-       else
-               return get_var_by_name(namenum);
-       
-}
-
-int field_le_to_host(u8 *buffer, void *priv, struct scan_field_s *dummy)
-{
-       var_field_t *field = priv;
-       field->value = buf_get_u32(buffer, 0, field->num_bits);
-
-       return ERROR_OK;
-}
-
-int handle_var_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
-{
-       var_t **last_var_p = &variables;
-       int i;
-
-       if (argc >= 2)
-       {
-               while (*last_var_p)
-               {
-                       if (strcmp((*last_var_p)->name, args[0]) == 0)
-                       {
-                               if (strcmp(args[1], "del") == 0)
-                               {
-                                       var_t *next = (*last_var_p)->next;
-                                       free ((*last_var_p)->fields);
-                                       free (*last_var_p);
-                                       *last_var_p = next;
-                                       command_print(cmd_ctx, "variable %s deleted", args[0]);
-                               }
-                               else
-                                       command_print(cmd_ctx, "variable of that name already exists");
-                               return ERROR_OK;
-                       }
-                       last_var_p = &((*last_var_p)->next);
-               }
-
-               if ((args[0][0] >= '0') && (args[0][0] <= '9'))
-               {
-                       command_print(cmd_ctx, "invalid name specified (first character may not be a number)");
-                       return ERROR_OK;
-               }
-
-               *last_var_p = malloc(sizeof(var_t));
-               (*last_var_p)->name = strdup(args[0]);
-               (*last_var_p)->num_fields = argc - 1;
-               (*last_var_p)->next = NULL;
-
-               (*last_var_p)->fields = malloc(sizeof(var_field_t) * (*last_var_p)->num_fields);
-               for (i = 0; i < (*last_var_p)->num_fields; i++)
-               {
-                       (*last_var_p)->fields[i].num_bits = strtol(args[1+i], NULL, 0);
-                       (*last_var_p)->fields[i].value = 0x0;
-               }
-               return ERROR_OK;
-       }
-
-       if (argc == 1)
-       {
-               var_t *var = get_var_by_namenum(args[0]);
-               if (var)
-               {
-                       int i;
-                       command_print(cmd_ctx, "%s (%i fields):", var->name, var->num_fields);
-                       for (i = 0; i < (var->num_fields); i++)
-                       {
-                               command_print(cmd_ctx, "0x%x (/%i)", var->fields[i].value, var->fields[i].num_bits);
-                       }
-               }
-               else
-               {
-                       command_print(cmd_ctx, "variable %s doesn't exist", args[0]);
-               }
-       }
-
-       if (argc == 0)
-       {
-               var_t *var = variables;
-               int count = 0;
-               while (var)
-               {
-                       command_print(cmd_ctx, "%i: %s (%i fields)", count, var->name, var->num_fields);
-                       var = var->next;
-                       count++;
-               }
-       }
-
-       return ERROR_OK;
-}
-
-int handle_field_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
-{
-
-       if (argc < 2)
-               return ERROR_COMMAND_SYNTAX_ERROR;
-
-       if (argc >= 2)
-       {
-               var_t *var = get_var_by_namenum(args[0]);
-               int field_num = strtol(args[1], NULL, 0);
-               if (!var)
-               {
-                       command_print(cmd_ctx, "variable %s doesn't exist", args[0]);
-                       return ERROR_OK;
-               }
-               if (field_num >= var->num_fields)
-                       command_print(cmd_ctx, "variable field %i is out of bounds (max. %i)", field_num, var->num_fields - 1);
-               if ((var) && (field_num < var->num_fields))
-               {
-                       if (argc > 2)
-                       {
-                               if (strcmp(args[2], "flip") == 0)
-                                       var->fields[field_num].value = flip_u32(var->fields[field_num].value, var->fields[field_num].num_bits);
-                               else
-                                       var->fields[field_num].value = strtoul(args[2], NULL, 0);
-                       }
-
-                       command_print(cmd_ctx, "%s(%i): 0x%x (/%i)", var->name, field_num, var->fields[field_num].value, var->fields[field_num].num_bits);
-               }
-       }
-
-       return ERROR_OK;
-}
-
-int handle_script_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
-{
-       FILE *script_file;
-
-       if (argc != 1)
-               return ERROR_COMMAND_SYNTAX_ERROR;
-
-       
-       /* Run a tcl script file */
-       return command_run_linef(cmd_ctx, "source [find {%s}]", args[0]);
-}
index 0b40ab2339d598b07cfa719a8a8b7140696040cd..b5a3d8a6afdc339ad654348773df2640ecd3262b 100644 (file)
@@ -9,7 +9,7 @@ else
 FTD2XXINC =
 endif
 
-INCLUDES = -I$(top_srcdir)/src/helper $(FTD2XXINC) $(all_includes) -I$(top_srcdir)/src/target 
+INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/src/helper $(FTD2XXINC) $(all_includes) -I$(top_srcdir)/src/target 
 METASOURCES = AUTO
 noinst_LIBRARIES = libjtag.a
 
index 27b453d55de09b6228eb655cda3ec2ab19aa18b2..93e47af7ae77b5c7995604b40299b5001edbf2dd 100644 (file)
 
 #include "command.h"
 #include "log.h"
-#include "interpreter.h"
 
 #include "stdlib.h"
 #include "string.h"
 #include <unistd.h>
 
+#include "openocd_tcl.h"
+
 
 /* note that this is not marked as static as it must be available from outside jtag.c for those 
    that implement the jtag_xxx() minidriver layer 
@@ -268,7 +269,7 @@ int handle_endstate_command(struct command_context_s *cmd_ctx, char *cmd, char *
 int handle_jtag_reset_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
 int handle_runtest_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
 int handle_irscan_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-int handle_drscan_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
+int Jim_Command_drscan(Jim_Interp *interp, int argc, Jim_Obj *const *argv);
 
 int handle_verify_ircapture_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
 
@@ -1492,8 +1493,8 @@ int jtag_register_commands(struct command_context_s *cmd_ctx)
                COMMAND_EXEC, "move to Run-Test/Idle, and execute <num_cycles>");
        register_command(cmd_ctx, NULL, "irscan", handle_irscan_command,
                COMMAND_EXEC, "execute IR scan <device> <instr> [dev2] [instr2] ...");
-       register_command(cmd_ctx, NULL, "drscan", handle_drscan_command,
-               COMMAND_EXEC, "execute DR scan <device> <var> [dev2] [var2] ...");
+       
+       add_jim("drscan", Jim_Command_drscan, "execute DR scan <device> <num_bits> <value> <num_bits1> <value2> ...");
 
        register_command(cmd_ctx, NULL, "verify_ircapture", handle_verify_ircapture_command,
                COMMAND_ANY, "verify value captured during Capture-IR <enable|disable>");
@@ -2042,63 +2043,78 @@ int handle_irscan_command(struct command_context_s *cmd_ctx, char *cmd, char **a
        return ERROR_OK;
 }
 
-int handle_drscan_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+/* FIX!!! this command is busted for > 32 bits */
+int Jim_Command_drscan(Jim_Interp *interp, int argc, Jim_Obj *const *args)
 {
+       int retval;
        scan_field_t *fields;
-       int num_fields = 0;
+       int num_fields;
        int field_count = 0;
-       var_t *var;
        int i, j;
        
-       if ((argc < 2) || (argc % 2))
+       if ((argc < 4) || ((argc % 2)!=0))
        {
-               return ERROR_COMMAND_SYNTAX_ERROR;
+               return JIM_ERR;
        }
 
-       for (i = 0; i < argc; i+=2)
+       for (i = 2; i < argc; i+=2)
        {
-               var = get_var_by_namenum(args[i+1]);
-               if (var)
-               {
-                       num_fields += var->num_fields;
-               }
-               else
+               long bits;
+               Jim_GetLong(interp, args[i], &bits);
+               if ((bits<=0)||(bits>32))
                {
-                       command_print(cmd_ctx, "variable %s doesn't exist", args[i+1]);
-                       return ERROR_OK;
+//                     LOG_ERROR("minimum 1/maximum 32 bit fields - patches gratefully accepted!");
+                       return JIM_ERR;
                }
        }
+       long device;
+       Jim_GetLong(interp, args[1], &device);
+       num_fields=(argc-2)/2;
 
        fields = malloc(sizeof(scan_field_t) * num_fields);
 
-       for (i = 0; i < argc; i+=2)
+       for (i = 2; i < argc; i+=2)
        {
-               var = get_var_by_namenum(args[i+1]);
-       
-               for (j = 0; j < var->num_fields; j++)
-               {
-                       fields[field_count].device = strtol(args[i], NULL, 0);
-                       fields[field_count].num_bits = var->fields[j].num_bits;
-                       fields[field_count].out_value = malloc(CEIL(var->fields[j].num_bits, 8));
-                       buf_set_u32(fields[field_count].out_value, 0, var->fields[j].num_bits, var->fields[j].value);
-                       fields[field_count].out_mask = NULL;
-                       fields[field_count].in_value = fields[field_count].out_value;
-                       fields[field_count].in_check_mask = NULL;
-                       fields[field_count].in_check_value = NULL;
-                       fields[field_count].in_handler = field_le_to_host;
-                       fields[field_count++].in_handler_priv = &(var->fields[j]);
-               }
+               long bits;
+               Jim_GetLong(interp, args[i], &bits);
+               long val;
+               Jim_GetLong(interp, args[i+1], &val);
+               
+               fields[field_count].device = device;
+               fields[field_count].num_bits = bits;
+               fields[field_count].out_value = malloc(CEIL(bits, 8));
+               buf_set_u32(fields[field_count].out_value, 0, bits, val);
+               fields[field_count].out_mask = NULL;
+               fields[field_count].in_value = fields[field_count].out_value;
+               fields[field_count].in_check_mask = NULL;
+               fields[field_count].in_check_value = NULL;
+               fields[field_count].in_handler = NULL;
+               fields[field_count++].in_handler_priv = NULL;
        }
 
        jtag_add_dr_scan(num_fields, fields, -1);
-       jtag_execute_queue();
+       retval=jtag_execute_queue();
        
-       for (i = 0; i < argc / 2; i++)
-               free(fields[i].out_value);
+       field_count=0;
+       Jim_Obj *list=Jim_NewListObj(interp, NULL, 0);
+       for (i = 2; i < argc; i+=2)
+       {
+               long bits;
+               Jim_GetLong(interp, args[i], &bits);
+               
+               u32 val = buf_get_u32(fields[field_count].in_value, 0, bits);
 
+               Jim_ListAppendElement(interp, list, Jim_NewIntObj(interp, val));
+               
+               free(fields[field_count].out_value);
+               field_count++;
+       }
+       
+       Jim_SetResult(interp, list);
+       
        free(fields);
 
-       return ERROR_OK;
+       return retval?JIM_OK:JIM_ERR;
 }
 
 int handle_verify_ircapture_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
index eef6e60dca30e7234c8076c87ab483885349fd6e..1dfe5515ceb577580d3fa88739e192c145ea7849 100644 (file)
@@ -28,7 +28,6 @@
 #include "types.h"
 #include "jtag.h"
 #include "configuration.h"
-#include "interpreter.h"
 #include "xsvf.h"
 #include "target.h"
 #include "flash.h"
 
 #include "replacements.h"
 
-int launchTarget(struct command_context_s *cmd_ctx)
-{
-       int retval;
-       /* Try to examine & validate jtag chain, though this may require a reset first
-        * in which case we continue setup */
-       jtag_init(cmd_ctx);
-
-       /* try to examine target at this point. If it fails, perhaps a reset will
-        * bring it up later on via a telnet/gdb session */
-       target_examine(cmd_ctx);
-
-       retval=flash_init_drivers(cmd_ctx);
-       if (retval!=ERROR_OK)
-               return retval;
-       LOG_DEBUG("flash init complete");
-
-       retval=nand_init(cmd_ctx);
-       if (retval!=ERROR_OK)
-               return retval;
-       LOG_DEBUG("NAND init complete");
-
-       retval=pld_init(cmd_ctx);
-       if (retval!=ERROR_OK)
-               return retval;
-       LOG_DEBUG("pld init complete");
-       return retval;
-}
 
 /* Give TELNET a way to find out what version this is */
 int handle_version_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
@@ -722,6 +694,13 @@ static char* openocd_jim_fgets(char *s, int size, void *cookie)
        return NULL;
 }
 
+void add_jim(const char *name, int (*cmd)(Jim_Interp *interp, int argc, Jim_Obj *const *argv), const char *help)
+{
+       Jim_CreateCommand(interp, name, cmd, NULL, NULL);
+       /* FIX!!! add scheme to accumulate help! */
+       
+}
+
 void initJim(void)
 {
        Jim_CreateCommand(interp, "openocd", Jim_Command_openocd, NULL, NULL);
@@ -755,6 +734,19 @@ void initJim2(void)
        }
 }
 
+
+int handle_script_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+{
+       FILE *script_file;
+
+       if (argc != 1)
+               return ERROR_COMMAND_SYNTAX_ERROR;
+
+       
+       /* Run a tcl script file */
+       return command_run_linef(cmd_ctx, "source [find {%s}]", args[0]);
+}
+
 command_context_t *setup_command_handler(void)
 {
        command_context_t *cmd_ctx;
@@ -773,7 +765,7 @@ command_context_t *setup_command_handler(void)
        tcl_register_commands(cmd_ctx); /* tcl server commands */
        log_register_commands(cmd_ctx);
        jtag_register_commands(cmd_ctx);
-       interpreter_register_commands(cmd_ctx);
+       register_command(cmd_ctx, NULL, "script", handle_script_command, COMMAND_ANY, "execute commands from <file>");
        xsvf_register_commands(cmd_ctx);
        target_register_commands(cmd_ctx);
        flash_register_commands(cmd_ctx);
similarity index 65%
rename from src/helper/interpreter.h
rename to src/openocd_tcl.h
index c4f8acfbbb819c72fab99e22adab8690dd8f935d..af29fb7f24befea0d5bbc1c551e943983dd7a3e4 100644 (file)
@@ -1,49 +1,25 @@
-/***************************************************************************
- *   Copyright (C) 2005 by Dominic Rath                                    *
- *   Dominic.Rath@gmx.de                                                   *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
- ***************************************************************************/
-#ifndef INTERPRETER_H
-#define INTERPRETER_H
-
-#include "types.h"
-#include "command.h"
-#include "log.h"
-
-typedef struct var_field_s
-{
-       int num_bits;
-       u32 value;
-} var_field_t;
-
-typedef struct var_s
-{
-       char *name;
-       int num_fields;
-       var_field_t *fields;
-       struct var_s *next;
-} var_t;
-
-extern var_t *variables;
-
-struct scan_field_s;
-extern int field_le_to_host(u8 *buffer, void *priv, struct scan_field_s *field);
-
-extern var_t* get_var_by_namenum(char *namenum);
-extern int interpreter_register_commands(struct command_context_s *cmd_ctx);
-
-#endif /* INTERPRETER_H */
+/***************************************************************************\r
+ *   Copyright (C) 2008 by Ã˜yvind Harboe                                   *\r
+ *   oyvind.harboe@zylin.com                                               *\r
+ *                                                                         *\r
+ *   This program is free software; you can redistribute it and/or modify  *\r
+ *   it under the terms of the GNU General Public License as published by  *\r
+ *   the Free Software Foundation; either version 2 of the License, or     *\r
+ *   (at your option) any later version.                                   *\r
+ *                                                                         *\r
+ *   This program is distributed in the hope that it will be useful,       *\r
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *\r
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *\r
+ *   GNU General Public License for more details.                          *\r
+ *                                                                         *\r
+ *   You should have received a copy of the GNU General Public License     *\r
+ *   along with this program; if not, write to the                         *\r
+ *   Free Software Foundation, Inc.,                                       *\r
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *\r
+ ***************************************************************************/\r
+#ifndef OPENOCD_TCL_H\r
+#define OPENOCD_TCL_H\r
+#include <jim.h>\r
+void add_jim(const char *name, int (*cmd)(Jim_Interp *interp, int argc, Jim_Obj *const *argv), const char *help);\r
+extern Jim_Interp *interp;\r
+#endif\r
index 2ca15d9115fe38805350b5ffc24a5cf0b85838e8..18cc04a8e3ab769182003dabeefce39f4d699506 100644 (file)
@@ -17,7 +17,7 @@ jtag_device 4 0x1 0xf 0xe
 target arm7tdmi little 0 arm7tdmi-s_r4
 
 # speed up memory downloads
-arm7 fast_memory_access enable
+arm7_9 fast_memory_access enable
 arm7_9 dcc_downloads enable
 
 #flash driver
@@ -32,6 +32,7 @@ working_area 0 0x00000000 0x20000 nobackup
 #subsequent config script.
 arm7_9 force_hw_bkpts enable
 
+global reset_count
 set reset_count 0
 
 proc target_reset_0 {} {

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)