TARGET list tweaks: - Don't let disabled TAPs be set as the current target
- Improve "targets" output: * Remove undesirable "chain position" number; we discourage using them * TAP and Target column updates: + make them long enough for current usage + improve labels, removing guesswork + "TapName" label patches scan_chain output * Highlight the "current" target * Display "tap disabled" as a new pseudo-state * Update docs accordingly Sample of the new output: TargetName Type Endian TapName State -- ------------------ ---------- ------ ------------------ ------------ 0* at91rm9200.cpu arm920t little at91rm9200.cpu running 1 MyTarget cortex_m3 little mychip.foo tap-disabled --- doc/openocd.texi | 9 +++++---- src/target/target.c | 33 ++++++++++++++++++++++++++------- 2 files changed, 31 insertions(+), 11 deletions(-)
TARGET list tweaks: - Don't let disabled TAPs be set as the current target - Improve "targets" output: * Remove undesirable "chain position" number; we discourage using them * TAP and Target column updates: + make them long enough for current usage + improve labels, removing guesswork + "TapName" label patches scan_chain output * Highlight the "current" target * Display a "tap disabled" as a new pseudo-state * Update docs accordingly Sample of the new output: TargetName Type Endian TapName State -- ------------------ ---------- ------ ------------------ ------------ 0* at91rm9200.cpu arm920t little at91rm9200.cpu running 1 MyTarget cortex_m3 little mychip.foo tap-disabled --- doc/openocd.texi | 9 +++++---- src/target/target.c | 33 ++++++++++++++++++++++++++------- 2 files changed, 31 insertions(+), 11 deletions(-) --- a/doc/openocd.texi +++ b/doc/openocd.texi @@ -2117,14 +2117,15 @@ You can display the list with the @comma This display often has only one CPU; here's what it might look like with more than one: @verbatim - CmdName Type Endian AbsChainPos Name State --- ---------- ---------- ---------- ----------- ------------- ---------- - 0: rm9200.cpu arm920t little 2 rm9200.cpu running - 1: MyTarget cortex_m3 little 0 mychip.cpu halted + TargetName Type Endian TapName State +-- ------------------ ---------- ------ ------------------ ------------ + 0* at91rm9200.cpu arm920t little at91rm9200.cpu running + 1 MyTarget cortex_m3 little mychip.foo tap-disabled @end verbatim One member of that list is the @dfn{current target}, which is implicitly referenced by many commands. +It's the one marked with a @code{*} near the target name. In particular, memory addresses often refer to the address space seen by that current target. Commands like @command{mdw} (memory display words) --- a/src/target/target.c +++ b/src/target/target.c @@ -1467,6 +1467,12 @@ static int handle_targets_command(struct command_print(cmd_ctx,"Target: %s is unknown, try one of:\n", args[0] ); goto DumpTargets; } + if (!target->tap->enabled) { + command_print(cmd_ctx,"Target: TAP %s is disabled, " + "can't be the current target\n", + target->tap->dotted_name); + return ERROR_FAIL; + } cmd_ctx->current_target = target->target_number; return ERROR_OK; @@ -1474,19 +1480,32 @@ static int handle_targets_command(struct DumpTargets: target = all_targets; - command_print(cmd_ctx, " CmdName Type Endian AbsChainPos Name State "); - command_print(cmd_ctx, "-- ---------- ---------- ---------- ----------- ------------- ----------"); + command_print(cmd_ctx, " TargetName Type Endian TapName State "); + command_print(cmd_ctx, "-- ------------------ ---------- ------ ------------------ ------------"); while (target) { - /* XX: abcdefghij abcdefghij abcdefghij abcdefghij */ - command_print(cmd_ctx, "%2d: %-10s %-10s %-10s %10d %14s %s", + const char *state; + char marker = ' '; + + if (target->tap->enabled) + state = Jim_Nvp_value2name_simple(nvp_target_state, + target->state)->name; + else + state = "tap-disabled"; + + if (cmd_ctx->current_target == target->target_number) + marker = '*'; + + /* keep columns lined up to match the headers above */ + command_print(cmd_ctx, "%2d%c %-18s %-10s %-6s %-18s %s", target->target_number, + marker, target->cmd_name, target_get_name(target), - Jim_Nvp_value2name_simple( nvp_target_endian, target->endianness )->name, - target->tap->abs_chain_position, + Jim_Nvp_value2name_simple(nvp_target_endian, + target->endianness)->name, target->tap->dotted_name, - Jim_Nvp_value2name_simple( nvp_target_state, target->state )->name ); + state); target = target->next; }
_______________________________________________ Openocd-development mailing list Openocd-development@lists.berlios.de https://lists.berlios.de/mailman/listinfo/openocd-development