.cfg files are now executed as Jim Tcl. Commands that terminate script w/error message.
git-svn-id: svn://svn.berlios.de/openocd/trunk@790 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
parent
0f2dfabd3b
commit
381f9a2e8a
|
@ -474,59 +474,6 @@ int command_run_line(command_context_t *context, char *line)
|
||||||
return jim_command(context, line);
|
return jim_command(context, line);
|
||||||
}
|
}
|
||||||
|
|
||||||
int command_run_file(command_context_t *context, FILE *file, enum command_mode mode)
|
|
||||||
{
|
|
||||||
int retval = ERROR_OK;
|
|
||||||
int old_command_mode;
|
|
||||||
char *buffer=malloc(4096);
|
|
||||||
if (buffer==NULL)
|
|
||||||
{
|
|
||||||
return ERROR_INVALID_ARGUMENTS;
|
|
||||||
}
|
|
||||||
|
|
||||||
old_command_mode = context->mode;
|
|
||||||
context->mode = mode;
|
|
||||||
|
|
||||||
while (fgets(buffer, 4096, file))
|
|
||||||
{
|
|
||||||
char *p;
|
|
||||||
char *cmd, *end;
|
|
||||||
|
|
||||||
/* stop processing line after a comment (#, !) or a LF, CR were encountered */
|
|
||||||
if ((p = strpbrk(buffer, "#!\r\n")))
|
|
||||||
*p = 0;
|
|
||||||
|
|
||||||
/* skip over leading whitespace */
|
|
||||||
cmd = buffer;
|
|
||||||
while (isspace(*cmd))
|
|
||||||
cmd++;
|
|
||||||
|
|
||||||
/* empty (all whitespace) line? */
|
|
||||||
if (!*cmd)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
/* search the end of the current line, ignore trailing whitespace */
|
|
||||||
for (p = end = cmd; *p; p++)
|
|
||||||
if (!isspace(*p))
|
|
||||||
end = p;
|
|
||||||
|
|
||||||
/* terminate end */
|
|
||||||
*++end = 0;
|
|
||||||
if (strcasecmp(cmd, "quit") == 0)
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* run line */
|
|
||||||
if ((retval = command_run_line(context, cmd)) == ERROR_COMMAND_CLOSE_CONNECTION)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
context->mode = old_command_mode;
|
|
||||||
|
|
||||||
|
|
||||||
free(buffer);
|
|
||||||
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
int command_run_linef(command_context_t *context, char *format, ...)
|
int command_run_linef(command_context_t *context, char *format, ...)
|
||||||
{
|
{
|
||||||
|
|
|
@ -76,7 +76,6 @@ extern void command_print_sameline(command_context_t *context, char *format, ...
|
||||||
extern int command_run_line(command_context_t *context, char *line);
|
extern int command_run_line(command_context_t *context, char *line);
|
||||||
extern int command_run_linef(command_context_t *context, char *format, ...);
|
extern int command_run_linef(command_context_t *context, char *format, ...);
|
||||||
extern int command_run_line_internal(command_context_t *context, char *line);
|
extern int command_run_line_internal(command_context_t *context, char *line);
|
||||||
extern int command_run_file(command_context_t *context, FILE *file, enum command_mode mode);
|
|
||||||
extern void command_output_text(command_context_t *context, const char *data);
|
extern void command_output_text(command_context_t *context, const char *data);
|
||||||
|
|
||||||
#define ERROR_COMMAND_CLOSE_CONNECTION (-600)
|
#define ERROR_COMMAND_CLOSE_CONNECTION (-600)
|
||||||
|
|
|
@ -221,17 +221,7 @@ int handle_script_command(struct command_context_s *cmd_ctx, char *cmd, char **a
|
||||||
if (argc != 1)
|
if (argc != 1)
|
||||||
return ERROR_COMMAND_SYNTAX_ERROR;
|
return ERROR_COMMAND_SYNTAX_ERROR;
|
||||||
|
|
||||||
script_file = open_file_from_path (args[0], "r");
|
|
||||||
|
|
||||||
if (!script_file)
|
/* Run a tcl script file */
|
||||||
{
|
return command_run_linef(cmd_ctx, "source [find {%s}]", args[0]);
|
||||||
command_print(cmd_ctx, "couldn't open script file %s", args[0]);
|
|
||||||
return ERROR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
command_run_file(cmd_ctx, script_file, cmd_ctx->mode);
|
|
||||||
|
|
||||||
fclose(script_file);
|
|
||||||
|
|
||||||
return ERROR_OK;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -110,15 +110,7 @@ int parse_cmdline_args(struct command_context_s *cmd_ctx, int argc, char *argv[]
|
||||||
break;
|
break;
|
||||||
case 'f': /* --file | -f */
|
case 'f': /* --file | -f */
|
||||||
{
|
{
|
||||||
char *t=strrchr(optarg, '.');
|
snprintf(command_buffer, 128, "script %s", optarg);
|
||||||
if (strcmp(t, ".tcl")==0)
|
|
||||||
{
|
|
||||||
/* Files ending in .tcl are executed as Tcl files */
|
|
||||||
snprintf(command_buffer, 128, "source [find {%s}]", optarg);
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
snprintf(command_buffer, 128, "script %s", optarg);
|
|
||||||
}
|
|
||||||
add_config_command(command_buffer);
|
add_config_command(command_buffer);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,9 +20,6 @@ target arm7tdmi little 0 arm7tdmi-s_r4
|
||||||
arm7 fast_memory_access enable
|
arm7 fast_memory_access enable
|
||||||
arm7_9 dcc_downloads enable
|
arm7_9 dcc_downloads enable
|
||||||
|
|
||||||
# OpenOCD does not have a flash driver for for AT91FR40162S
|
|
||||||
target_script 0 reset event/at91eb40a_reset.script
|
|
||||||
|
|
||||||
#flash driver
|
#flash driver
|
||||||
flash bank ecosflash 0x01000000 0x200000 2 2 0 ecos/at91eb40a.elf
|
flash bank ecosflash 0x01000000 0x200000 2 2 0 ecos/at91eb40a.elf
|
||||||
|
|
||||||
|
@ -34,3 +31,25 @@ working_area 0 0x00000000 0x20000 nobackup
|
||||||
#often than not. The user can disable this in his
|
#often than not. The user can disable this in his
|
||||||
#subsequent config script.
|
#subsequent config script.
|
||||||
arm7_9 force_hw_bkpts enable
|
arm7_9 force_hw_bkpts enable
|
||||||
|
|
||||||
|
set reset_count 0
|
||||||
|
|
||||||
|
proc target_reset_0 {} {
|
||||||
|
global reset_count
|
||||||
|
# Reset script for AT91EB40a
|
||||||
|
reg cpsr 0x000000D3
|
||||||
|
mww 0xFFE00020 0x1
|
||||||
|
mww 0xFFE00024 0x00000000
|
||||||
|
mww 0xFFE00000 0x01002539
|
||||||
|
mww 0xFFFFF124 0xFFFFFFFF
|
||||||
|
mww 0xffff0010 0x100
|
||||||
|
mww 0xffff0034 0x100
|
||||||
|
set reset_count [expr $reset_count+1]
|
||||||
|
echo "Testing reset $reset_count !"
|
||||||
|
}
|
||||||
|
|
||||||
|
proc target_pre_reset_0 {} {
|
||||||
|
global reset_count
|
||||||
|
set reset_count [expr $reset_count+1]
|
||||||
|
echo "Testing pre_reset $reset_count !"
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue