David Brownell <david-b@pacbell.net>
- 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 git-svn-id: svn://svn.berlios.de/openocd/trunk@2107 b42882b7-edfa-0310-969c-e2dbd0fdcd60__archive__
parent
a221892f60
commit
a405fd1581
|
@ -2117,14 +2117,15 @@ You can display the list with the @command{targets}
|
|||
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)
|
||||
|
|
|
@ -1467,6 +1467,12 @@ static int handle_targets_command(struct command_context_s *cmd_ctx, char *cmd,
|
|||
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 command_context_s *cmd_ctx, char *cmd,
|
|||
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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue