better error messages for target event scripts.
git-svn-id: svn://svn.berlios.de/openocd/trunk@810 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
parent
8766d39617
commit
396d73ad0c
|
@ -100,6 +100,8 @@ command_t* register_command(command_context_t *context, command_t *parent, char
|
||||||
}
|
}
|
||||||
/* accumulate help text in Tcl helptext list. */
|
/* accumulate help text in Tcl helptext list. */
|
||||||
Jim_Obj *helptext=Jim_GetGlobalVariableStr(interp, "ocd_helptext", JIM_ERRMSG);
|
Jim_Obj *helptext=Jim_GetGlobalVariableStr(interp, "ocd_helptext", JIM_ERRMSG);
|
||||||
|
if (Jim_IsShared(helptext))
|
||||||
|
helptext = Jim_DuplicateObj(interp, helptext);
|
||||||
Jim_Obj *cmd_entry=Jim_NewListObj(interp, NULL, 0);
|
Jim_Obj *cmd_entry=Jim_NewListObj(interp, NULL, 0);
|
||||||
|
|
||||||
Jim_Obj *cmd_list=Jim_NewListObj(interp, NULL, 0);
|
Jim_Obj *cmd_list=Jim_NewListObj(interp, NULL, 0);
|
||||||
|
|
|
@ -734,6 +734,9 @@ void add_jim(const char *name, int (*cmd)(Jim_Interp *interp, int argc, Jim_Obj
|
||||||
/* FIX!!! it would be prettier to invoke add_help_text...
|
/* FIX!!! it would be prettier to invoke add_help_text...
|
||||||
accumulate help text in Tcl helptext list. */
|
accumulate help text in Tcl helptext list. */
|
||||||
Jim_Obj *helptext=Jim_GetGlobalVariableStr(interp, "ocd_helptext", JIM_ERRMSG);
|
Jim_Obj *helptext=Jim_GetGlobalVariableStr(interp, "ocd_helptext", JIM_ERRMSG);
|
||||||
|
if (Jim_IsShared(helptext))
|
||||||
|
helptext = Jim_DuplicateObj(interp, helptext);
|
||||||
|
|
||||||
Jim_Obj *cmd_entry=Jim_NewListObj(interp, NULL, 0);
|
Jim_Obj *cmd_entry=Jim_NewListObj(interp, NULL, 0);
|
||||||
|
|
||||||
Jim_Obj *cmd_list=Jim_NewListObj(interp, NULL, 0);
|
Jim_Obj *cmd_list=Jim_NewListObj(interp, NULL, 0);
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
# Commands can be more than one word and they are stored
|
# Commands can be more than one word and they are stored
|
||||||
# as "flash banks" "help text x x x"
|
# as "flash banks" "help text x x x"
|
||||||
|
|
||||||
global ocd_helptext
|
|
||||||
set ocd_helptext {}
|
set ocd_helptext {}
|
||||||
|
|
||||||
proc add_help_text {cmd cmd_help} {
|
proc add_help_text {cmd cmd_help} {
|
||||||
|
@ -123,3 +122,18 @@ proc unknown {args} {
|
||||||
# the command twice.
|
# the command twice.
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
proc target_script {target_num eventname scriptname} {
|
||||||
|
if {[string compare $eventname reset]==0} {
|
||||||
|
set eventname post_reset
|
||||||
|
}
|
||||||
|
|
||||||
|
# This is the script we invoke
|
||||||
|
proc "target_[set eventname]_[set target_num]" {} "script $scriptname"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#add_help_text target_script "xxx"
|
||||||
|
add_help_text target_script "<target#> <event=reset/pre_reset/post_halt/pre_resume/gdb_program_config> <script_file>"
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,6 @@ int cli_target_callback_event_handler(struct target_s *target, enum target_event
|
||||||
int handle_target_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
|
int handle_target_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
|
||||||
int handle_targets_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
|
int handle_targets_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
|
||||||
|
|
||||||
int handle_target_script_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
|
|
||||||
int handle_run_and_halt_time_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
|
int handle_run_and_halt_time_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
|
||||||
int handle_working_area_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
|
int handle_working_area_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
|
||||||
|
|
||||||
|
@ -952,8 +951,6 @@ int target_register_commands(struct command_context_s *cmd_ctx)
|
||||||
{
|
{
|
||||||
register_command(cmd_ctx, NULL, "target", handle_target_command, COMMAND_CONFIG, "target <cpu> [reset_init default - DEPRECATED] <chainpos> <endianness> <variant> [cpu type specifc args]");
|
register_command(cmd_ctx, NULL, "target", handle_target_command, COMMAND_CONFIG, "target <cpu> [reset_init default - DEPRECATED] <chainpos> <endianness> <variant> [cpu type specifc args]");
|
||||||
register_command(cmd_ctx, NULL, "targets", handle_targets_command, COMMAND_EXEC, NULL);
|
register_command(cmd_ctx, NULL, "targets", handle_targets_command, COMMAND_EXEC, NULL);
|
||||||
register_command(cmd_ctx, NULL, "target_script", handle_target_script_command, COMMAND_CONFIG,
|
|
||||||
"target_script <target#> <event=reset/pre_reset/post_halt/pre_resume/gdb_program_config> <script_file>");
|
|
||||||
register_command(cmd_ctx, NULL, "run_and_halt_time", handle_run_and_halt_time_command, COMMAND_CONFIG, "<target> <run time ms>");
|
register_command(cmd_ctx, NULL, "run_and_halt_time", handle_run_and_halt_time_command, COMMAND_CONFIG, "<target> <run time ms>");
|
||||||
register_command(cmd_ctx, NULL, "working_area", handle_working_area_command, COMMAND_ANY, "working_area <target#> <address> <size> <'backup'|'nobackup'> [virtual address]");
|
register_command(cmd_ctx, NULL, "working_area", handle_working_area_command, COMMAND_ANY, "working_area <target#> <address> <size> <'backup'|'nobackup'> [virtual address]");
|
||||||
register_command(cmd_ctx, NULL, "virt2phys", handle_virt2phys_command, COMMAND_ANY, "virt2phys <virtual address>");
|
register_command(cmd_ctx, NULL, "virt2phys", handle_virt2phys_command, COMMAND_ANY, "virt2phys <virtual address>");
|
||||||
|
@ -1491,42 +1488,6 @@ int target_invoke_script(struct command_context_s *cmd_ctx, target_t *target, ch
|
||||||
name, get_num_by_target(target));
|
name, get_num_by_target(target));
|
||||||
}
|
}
|
||||||
|
|
||||||
int handle_target_script_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
|
|
||||||
{
|
|
||||||
target_t *target = NULL;
|
|
||||||
|
|
||||||
if (argc < 3)
|
|
||||||
{
|
|
||||||
LOG_ERROR("incomplete target_script command");
|
|
||||||
return ERROR_COMMAND_SYNTAX_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
target = get_target_by_num(strtoul(args[0], NULL, 0));
|
|
||||||
|
|
||||||
if (!target)
|
|
||||||
{
|
|
||||||
return ERROR_COMMAND_SYNTAX_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *event=args[1];
|
|
||||||
if (strcmp("reset", event)==0)
|
|
||||||
{
|
|
||||||
/* synonymous */
|
|
||||||
event="post_reset";
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Define a tcl procedure which we'll invoke upon some event */
|
|
||||||
command_run_linef(cmd_ctx,
|
|
||||||
"proc target_%s_%d {} {"
|
|
||||||
"openocd {script %s} ; return \"\""
|
|
||||||
"}",
|
|
||||||
event,
|
|
||||||
get_num_by_target(target),
|
|
||||||
args[2]);
|
|
||||||
|
|
||||||
return ERROR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int handle_run_and_halt_time_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
|
int handle_run_and_halt_time_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
|
||||||
{
|
{
|
||||||
target_t *target = NULL;
|
target_t *target = NULL;
|
||||||
|
|
Loading…
Reference in New Issue