git-svn-id: svn://svn.berlios.de/openocd/trunk@1190 b42882b7-edfa-0310-969c-e2dbd0fdcd60tags/v0.1.0
@@ -2057,13 +2057,22 @@ called "flash_banks". | |||||
Certain OpenOCD commands have been deprecated/removed during the various revisions. | Certain OpenOCD commands have been deprecated/removed during the various revisions. | ||||
@itemize @bullet | @itemize @bullet | ||||
@item @b{load_binary} | |||||
@cindex load_binary | |||||
@*use @option{load_image} command with same args. @xref{load_image}. | |||||
@item @b{target} | |||||
@cindex target | |||||
@*@option{target} no longer take the reset_init, reset_run, run_and_halt, run_and_init. The @option{reset} command | |||||
always does a @option{reset run} when passed no arguments. | |||||
@item @b{arm7_9 fast_writes} | |||||
@cindex arm7_9 fast_writes | |||||
@*use @option{arm7_9 fast_memory_access} command with same args. @xref{arm7_9 fast_memory_access}. | |||||
@item @b{arm7_9 force_hw_bkpts} | |||||
@cindex arm7_9 force_hw_bkpts | |||||
@*Use @option{gdb_breakpoint_override} instead. Note that GDB will use hardware breakpoints | |||||
for flash if the gdb memory map has been set up(default when flash is declared in | |||||
target configuration). @xref{gdb_breakpoint_override}. | |||||
@item @b{arm7_9 sw_bkpts} | |||||
@cindex arm7_9 sw_bkpts | |||||
@*On by default. See also @option{gdb_breakpoint_override}. @xref{gdb_breakpoint_override}. | |||||
@item @b{daemon_startup} | |||||
@cindex daemon_startup | |||||
@*this config option has been removed, simply adding @option{init} and @option{reset halt} to | |||||
the end of your config script will give the same behaviour as using @option{daemon_startup reset} | |||||
and @option{target cortex_m3 little reset_halt 0}. | |||||
@item @b{dump_binary} | @item @b{dump_binary} | ||||
@cindex dump_binary | @cindex dump_binary | ||||
@*use @option{dump_image} command with same args. @xref{dump_image}. | @*use @option{dump_image} command with same args. @xref{dump_image}. | ||||
@@ -2076,25 +2085,12 @@ always does a @option{reset run} when passed no arguments. | |||||
@item @b{flash write_binary} | @item @b{flash write_binary} | ||||
@cindex flash write_binary | @cindex flash write_binary | ||||
@*use @option{flash write_bank} command with same args. @xref{flash write_bank}. | @*use @option{flash write_bank} command with same args. @xref{flash write_bank}. | ||||
@item @b{arm7_9 fast_writes} | |||||
@cindex arm7_9 fast_writes | |||||
@*use @option{arm7_9 fast_memory_access} command with same args. @xref{arm7_9 fast_memory_access}. | |||||
@item @b{flash auto_erase} | @item @b{flash auto_erase} | ||||
@cindex flash auto_erase | @cindex flash auto_erase | ||||
@*use @option{flash write_image} command passing @option{erase} as the first parameter. @xref{flash write_image}. | @*use @option{flash write_image} command passing @option{erase} as the first parameter. @xref{flash write_image}. | ||||
@item @b{daemon_startup} | |||||
@cindex daemon_startup | |||||
@*this config option has been removed, simply adding @option{init} and @option{reset halt} to | |||||
the end of your config script will give the same behaviour as using @option{daemon_startup reset} | |||||
and @option{target cortex_m3 little reset_halt 0}. | |||||
@item @b{arm7_9 sw_bkpts} | |||||
@cindex arm7_9 sw_bkpts | |||||
@*On by default. See also @option{gdb_breakpoint_override}. @xref{gdb_breakpoint_override}. | |||||
@item @b{arm7_9 force_hw_bkpts} | |||||
@cindex arm7_9 force_hw_bkpts | |||||
@*Use @option{gdb_breakpoint_override} instead. Note that GDB will use hardware breakpoints | |||||
for flash if the gdb memory map has been set up(default when flash is declared in | |||||
target configuration). @xref{gdb_breakpoint_override}. | |||||
@item @b{load_binary} | |||||
@cindex load_binary | |||||
@*use @option{load_image} command with same args. @xref{load_image}. | |||||
@item @b{run_and_halt_time} | @item @b{run_and_halt_time} | ||||
@cindex run_and_halt_time | @cindex run_and_halt_time | ||||
@*This command has been removed for simpler reset behaviour, it can be simulated with the | @*This command has been removed for simpler reset behaviour, it can be simulated with the | ||||
@@ -2104,6 +2100,15 @@ reset run | |||||
sleep 100 | sleep 100 | ||||
halt | halt | ||||
@end smallexample | @end smallexample | ||||
@item @b{target} <@var{type}> <@var{endian}> <@var{jtag-position}> | |||||
@cindex target | |||||
@*use the create subcommand of @option{target}. | |||||
@item @b{target_script} <@var{target#}> <@var{eventname}> <@var{scriptname}> | |||||
@cindex target_script | |||||
@*use <@var{target_name}> configure -event <@var{eventname}> "script <@var{scriptname}>" | |||||
@item @b{working_area} | |||||
@cindex working_area | |||||
@*use the @option{configure} subcommand of @option{target} to set the work-area-virt, work-area-phy, work-area-size, and work-area-backup properties of the target. | |||||
@end itemize | @end itemize | ||||
@node FAQ | @node FAQ | ||||
@@ -100,37 +100,6 @@ proc new_target_name { } { | |||||
return [target number [expr [target count] - 1 ]] | return [target number [expr [target count] - 1 ]] | ||||
} | } | ||||
proc target_script {target_num eventname scriptname} { | |||||
set tname [target number $target_num] | |||||
if { 0 == [string compare $eventname "reset"] } { | |||||
$tname configure -event reset-init "script $scriptname" | |||||
return | |||||
} | |||||
if { 0 == [string compare $eventname "post_reset"] } { | |||||
$tname configure -event reset-init "script $scriptname" | |||||
return | |||||
} | |||||
if { 0 == [string compare $eventname "pre_reset"] } { | |||||
$tname configure -event reset-start "script $scriptname" | |||||
return | |||||
} | |||||
if { 0 == [string compare $eventname "gdb_program_config"] } { | |||||
$tname configure -event old-gdb_program_config "script $scriptname" | |||||
return | |||||
} | |||||
return -code error "Unknown target (old) event: $eventname (try $tname configure -event NAME)" | |||||
} | |||||
add_help_text target_script "DEPRECATED please see the new TARGETNAME configure -event interface" | |||||
# Try flipping / and \ to find file if the filename does not | # Try flipping / and \ to find file if the filename does not | ||||
# match the precise spelling | # match the precise spelling | ||||
proc find {filename} { | proc find {filename} { | ||||
@@ -277,19 +246,6 @@ proc production_test {} { | |||||
} | } | ||||
add_help_text production "Runs test procedure. Throws exception if procedure failed. Prints progress messages. Implement in target script." | add_help_text production "Runs test procedure. Throws exception if procedure failed. Prints progress messages. Implement in target script." | ||||
proc load {args} { | |||||
return [eval "load_image $args"] | |||||
} | |||||
add_help_text load "synonym to load_image" | |||||
proc verify {args} { | |||||
return [eval "verify_image $args"] | |||||
} | |||||
add_help_text verify "synonym to verify_image" | |||||
add_help_text cpu "<name> - prints out target options and a comment on CPU which matches name" | add_help_text cpu "<name> - prints out target options and a comment on CPU which matches name" | ||||
# A list of names of CPU and options required | # A list of names of CPU and options required | ||||
@@ -2610,8 +2610,6 @@ int arm7_9_register_commands(struct command_context_s *cmd_ctx) | |||||
register_command(cmd_ctx, arm7_9_cmd, "dbgrq", handle_arm7_9_dbgrq_command, | register_command(cmd_ctx, arm7_9_cmd, "dbgrq", handle_arm7_9_dbgrq_command, | ||||
COMMAND_ANY, "use EmbeddedICE dbgrq instead of breakpoint for target halt requests <enable|disable>"); | COMMAND_ANY, "use EmbeddedICE dbgrq instead of breakpoint for target halt requests <enable|disable>"); | ||||
register_command(cmd_ctx, arm7_9_cmd, "fast_writes", handle_arm7_9_fast_memory_access_command, | |||||
COMMAND_ANY, "(deprecated, see: arm7_9 fast_memory_access)"); | |||||
register_command(cmd_ctx, arm7_9_cmd, "fast_memory_access", handle_arm7_9_fast_memory_access_command, | register_command(cmd_ctx, arm7_9_cmd, "fast_memory_access", handle_arm7_9_fast_memory_access_command, | ||||
COMMAND_ANY, "use fast memory accesses instead of slower but potentially unsafe slow accesses <enable|disable>"); | COMMAND_ANY, "use fast memory accesses instead of slower but potentially unsafe slow accesses <enable|disable>"); | ||||
register_command(cmd_ctx, arm7_9_cmd, "dcc_downloads", handle_arm7_9_dcc_downloads_command, | register_command(cmd_ctx, arm7_9_cmd, "dcc_downloads", handle_arm7_9_dcc_downloads_command, | ||||
@@ -64,8 +64,6 @@ int cli_target_callback_event_handler(struct target_s *target, enum target_event | |||||
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_working_area_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | |||||
int handle_reg_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | int handle_reg_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | ||||
int handle_poll_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | int handle_poll_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | ||||
int handle_halt_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | int handle_halt_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); | ||||
@@ -947,7 +945,6 @@ int target_register_commands(struct command_context_s *cmd_ctx) | |||||
{ | { | ||||
register_command(cmd_ctx, NULL, "targets", handle_targets_command, COMMAND_EXEC, "change the current command line target (one parameter) or lists targets (with no parameter)"); | register_command(cmd_ctx, NULL, "targets", handle_targets_command, COMMAND_EXEC, "change the current command line target (one parameter) or lists targets (with no parameter)"); | ||||
register_command(cmd_ctx, NULL, "working_area", handle_working_area_command, COMMAND_ANY, "set a new working space"); | |||||
register_command(cmd_ctx, NULL, "virt2phys", handle_virt2phys_command, COMMAND_ANY, "translate a virtual address into a physical address"); | register_command(cmd_ctx, NULL, "virt2phys", handle_virt2phys_command, COMMAND_ANY, "translate a virtual address into a physical address"); | ||||
register_command(cmd_ctx, NULL, "profile", handle_profile_command, COMMAND_EXEC, "profiling samples the CPU PC"); | register_command(cmd_ctx, NULL, "profile", handle_profile_command, COMMAND_EXEC, "profiling samples the CPU PC"); | ||||
@@ -1409,50 +1406,6 @@ DumpTargets: | |||||
return ERROR_OK; | return ERROR_OK; | ||||
} | } | ||||
int handle_working_area_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) | |||||
{ | |||||
int retval = ERROR_OK; | |||||
target_t *target = NULL; | |||||
if ((argc < 4) || (argc > 5)) | |||||
{ | |||||
return ERROR_COMMAND_SYNTAX_ERROR; | |||||
} | |||||
target = get_target_by_num(strtoul(args[0], NULL, 0)); | |||||
if (!target) | |||||
{ | |||||
return ERROR_COMMAND_SYNTAX_ERROR; | |||||
} | |||||
target_free_all_working_areas(target); | |||||
target->working_area_phys = target->working_area_virt = strtoul(args[1], NULL, 0); | |||||
if (argc == 5) | |||||
{ | |||||
target->working_area_virt = strtoul(args[4], NULL, 0); | |||||
} | |||||
target->working_area_size = strtoul(args[2], NULL, 0); | |||||
if (strcmp(args[3], "backup") == 0) | |||||
{ | |||||
target->backup_working_area = 1; | |||||
} | |||||
else if (strcmp(args[3], "nobackup") == 0) | |||||
{ | |||||
target->backup_working_area = 0; | |||||
} | |||||
else | |||||
{ | |||||
LOG_ERROR("unrecognized <backup|nobackup> argument (%s)", args[3]); | |||||
return ERROR_COMMAND_SYNTAX_ERROR; | |||||
} | |||||
return retval; | |||||
} | |||||
// every 300ms we check for reset & powerdropout and issue a "reset halt" if | // every 300ms we check for reset & powerdropout and issue a "reset halt" if | ||||
// so. | // so. | ||||
@@ -3973,7 +3926,6 @@ jim_target( Jim_Interp *interp, int argc, Jim_Obj *const *argv ) | |||||
int x,r,e; | int x,r,e; | ||||
jim_wide w; | jim_wide w; | ||||
struct command_context_s *cmd_ctx; | struct command_context_s *cmd_ctx; | ||||
const char *cp; | |||||
target_t *target; | target_t *target; | ||||
Jim_GetOptInfo goi; | Jim_GetOptInfo goi; | ||||
enum tcmd { | enum tcmd { | ||||
@@ -4003,103 +3955,6 @@ jim_target( Jim_Interp *interp, int argc, Jim_Obj *const *argv ) | |||||
return JIM_ERR; | return JIM_ERR; | ||||
} | } | ||||
/* is this old syntax? */ | |||||
/* To determine: We have to peek at argv[0]*/ | |||||
cp = Jim_GetString( goi.argv[0], NULL ); | |||||
for( x = 0 ; target_types[x] ; x++ ){ | |||||
if( 0 == strcmp(cp,target_types[x]->name) ){ | |||||
break; | |||||
} | |||||
} | |||||
if( target_types[x] ){ | |||||
/* YES IT IS OLD SYNTAX */ | |||||
Jim_Obj *new_argv[10]; | |||||
int new_argc; | |||||
/* target_old_syntax | |||||
* | |||||
* It appears that there are 2 old syntaxes: | |||||
* | |||||
* target <typename> <endian> <chain position> <variant> | |||||
* | |||||
* and | |||||
* | |||||
* target <typename> <endian> <reset mode> <chain position> <variant> | |||||
* | |||||
*/ | |||||
/* The minimum number of arguments is 4 */ | |||||
if( argc < 4 ){ | |||||
Jim_WrongNumArgs( interp, 1, argv, "[OLDSYNTAX] ?TYPE? ?ENDIAN? ?CHAIN-POSITION? ?VARIANT?"); | |||||
return JIM_ERR; | |||||
} | |||||
/* the command */ | |||||
new_argv[0] = argv[0]; | |||||
new_argv[1] = Jim_NewStringObj( interp, "create", -1 ); | |||||
{ | |||||
char buf[ 30 ]; | |||||
sprintf( buf, "target%d", new_target_number() ); | |||||
new_argv[2] = Jim_NewStringObj( interp, buf , -1 ); | |||||
} | |||||
new_argv[3] = goi.argv[0]; /* typename */ | |||||
new_argv[4] = Jim_NewStringObj( interp, "-endian", -1 ); | |||||
new_argv[5] = goi.argv[1]; | |||||
new_argv[6] = Jim_NewStringObj( interp, "-chain-position", -1 ); | |||||
/* If goi.argv[2] is not a number, we need to skip it since it is the reset mode. */ | |||||
jim_wide w; | |||||
int chain_position_argv = 2; | |||||
if (JIM_ERR == Jim_GetWide(interp, goi.argv[chain_position_argv], &w)) { | |||||
if (chain_position_argv + 1 < goi.argc) { | |||||
chain_position_argv += 1; | |||||
} else { | |||||
Jim_WrongNumArgs( interp, 1, argv, "[OLDSYNTAX] ?TYPE? ?ENDIAN? ?RESET? ?CHAIN-POSITION? ?VARIANT?"); | |||||
return JIM_ERR; | |||||
} | |||||
} | |||||
new_argv[7] = goi.argv[chain_position_argv]; | |||||
/* Only provide a variant configure option if there was a variant specified */ | |||||
if (chain_position_argv + 1 < goi.argc) { | |||||
new_argv[8] = Jim_NewStringObj( interp, "-variant", -1 ); | |||||
new_argv[9] = goi.argv[chain_position_argv + 1]; | |||||
new_argc = 10; | |||||
} else { | |||||
new_argc = 8; | |||||
} | |||||
/* | |||||
* new arg syntax: | |||||
* argv[0] = command | |||||
* argv[1] = create | |||||
* argv[2] = cmdname | |||||
* argv[3] = typename | |||||
* argv[4] = -endian | |||||
* argv[5] = little | |||||
* argv[6] = -position | |||||
* argv[7] = NUMBER | |||||
* argv[8] = -variant | |||||
* argv[9] = "somestring" | |||||
*/ | |||||
/* don't let these be released */ | |||||
for( x = 0 ; x < new_argc ; x++ ){ | |||||
Jim_IncrRefCount( new_argv[x]); | |||||
} | |||||
/* call our self */ | |||||
LOG_DEBUG("Target OLD SYNTAX - converted to new syntax"); | |||||
r = jim_target( goi.interp, new_argc, new_argv ); | |||||
/* release? these items */ | |||||
for( x = 0 ; x < new_argc ; x++ ){ | |||||
Jim_DecrRefCount( interp, new_argv[x] ); | |||||
} | |||||
return r; | |||||
} | |||||
//Jim_GetOpt_Debug( &goi ); | //Jim_GetOpt_Debug( &goi ); | ||||
r = Jim_GetOpt_Enum( &goi, target_cmds, &x ); | r = Jim_GetOpt_Enum( &goi, target_cmds, &x ); | ||||
if( r != JIM_OK ){ | if( r != JIM_OK ){ | ||||