David Brownell <david-b@pacbell.net>:
Doc update: say "jtag newtap ... -disable" records the state after exiting the RESET state, matching the only implementation we're working with so far (TI ICEpick-C). Matching code updates. Now we can be sure that the "enabled" flag value is correct after JTAG resets. git-svn-id: svn://svn.berlios.de/openocd/trunk@2246 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
parent
03803a9d79
commit
5f9b74d055
|
@ -2314,8 +2314,9 @@ A TAP may also provide optional @var{configparams}:
|
||||||
|
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item @code{-disable} (or @code{-enable})
|
@item @code{-disable} (or @code{-enable})
|
||||||
@*Use the @code{-disable} paramater to flag a TAP which is not
|
@*Use the @code{-disable} parameter to flag a TAP which is not
|
||||||
linked in to the scan chain when it is declared.
|
linked in to the scan chain after a reset using either TRST
|
||||||
|
or the JTAG state machine's @sc{reset} state.
|
||||||
You may use @code{-enable} to highlight the default state
|
You may use @code{-enable} to highlight the default state
|
||||||
(the TAP is linked in).
|
(the TAP is linked in).
|
||||||
@xref{Enabling and Disabling TAPs}.
|
@xref{Enabling and Disabling TAPs}.
|
||||||
|
@ -5079,7 +5080,7 @@ and @command{irscan} commands are:
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
Note that only six of those states are fully ``stable'' in the
|
Note that only six of those states are fully ``stable'' in the
|
||||||
face of TMS fixed (usually low)
|
face of TMS fixed (low except for @sc{reset})
|
||||||
and a free-running JTAG clock. For all the
|
and a free-running JTAG clock. For all the
|
||||||
others, the next TCK transition changes to a new state.
|
others, the next TCK transition changes to a new state.
|
||||||
|
|
||||||
|
|
|
@ -792,6 +792,8 @@ static int jtag_reset_callback(enum jtag_event event, void *priv)
|
||||||
|
|
||||||
if (event == JTAG_TRST_ASSERTED)
|
if (event == JTAG_TRST_ASSERTED)
|
||||||
{
|
{
|
||||||
|
tap->enabled = !tap->disabled_after_reset;
|
||||||
|
|
||||||
buf_set_ones(tap->cur_instr, tap->ir_length);
|
buf_set_ones(tap->cur_instr, tap->ir_length);
|
||||||
tap->bypass = 1;
|
tap->bypass = 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -151,8 +151,10 @@ struct jtag_tap_s
|
||||||
const char* tapname;
|
const char* tapname;
|
||||||
const char* dotted_name;
|
const char* dotted_name;
|
||||||
int abs_chain_position;
|
int abs_chain_position;
|
||||||
/// Is this TAP enabled?
|
/// Is this TAP disabled after JTAG reset?
|
||||||
int enabled;
|
bool disabled_after_reset;
|
||||||
|
/// Is this TAP currently enabled?
|
||||||
|
bool enabled;
|
||||||
int ir_length; /**< size of instruction register */
|
int ir_length; /**< size of instruction register */
|
||||||
u32 ir_capture_value;
|
u32 ir_capture_value;
|
||||||
u8* expected; /**< Capture-IR expected value */
|
u8* expected; /**< Capture-IR expected value */
|
||||||
|
|
|
@ -359,9 +359,6 @@ static int jim_newtap_cmd( Jim_GetOptInfo *goi )
|
||||||
LOG_DEBUG("Creating New Tap, Chip: %s, Tap: %s, Dotted: %s, %d params",
|
LOG_DEBUG("Creating New Tap, Chip: %s, Tap: %s, Dotted: %s, %d params",
|
||||||
pTap->chip, pTap->tapname, pTap->dotted_name, goi->argc);
|
pTap->chip, pTap->tapname, pTap->dotted_name, goi->argc);
|
||||||
|
|
||||||
/* default is enabled */
|
|
||||||
pTap->enabled = 1;
|
|
||||||
|
|
||||||
/* deal with options */
|
/* deal with options */
|
||||||
#define NTREQ_IRLEN 1
|
#define NTREQ_IRLEN 1
|
||||||
#define NTREQ_IRCAPTURE 2
|
#define NTREQ_IRCAPTURE 2
|
||||||
|
@ -379,10 +376,10 @@ static int jim_newtap_cmd( Jim_GetOptInfo *goi )
|
||||||
LOG_DEBUG("Processing option: %s", n->name );
|
LOG_DEBUG("Processing option: %s", n->name );
|
||||||
switch( n->value ){
|
switch( n->value ){
|
||||||
case NTAP_OPT_ENABLED:
|
case NTAP_OPT_ENABLED:
|
||||||
pTap->enabled = 1;
|
pTap->disabled_after_reset = false;
|
||||||
break;
|
break;
|
||||||
case NTAP_OPT_DISABLED:
|
case NTAP_OPT_DISABLED:
|
||||||
pTap->enabled = 0;
|
pTap->disabled_after_reset = true;
|
||||||
break;
|
break;
|
||||||
case NTAP_OPT_EXPECTED_ID:
|
case NTAP_OPT_EXPECTED_ID:
|
||||||
{
|
{
|
||||||
|
@ -446,6 +443,9 @@ static int jim_newtap_cmd( Jim_GetOptInfo *goi )
|
||||||
} /* switch(n->value) */
|
} /* switch(n->value) */
|
||||||
} /* while( goi->argc ) */
|
} /* while( goi->argc ) */
|
||||||
|
|
||||||
|
/* default is enabled-after-reset */
|
||||||
|
pTap->enabled = !pTap->disabled_after_reset;
|
||||||
|
|
||||||
/* Did all the required option bits get cleared? */
|
/* Did all the required option bits get cleared? */
|
||||||
if (0 == reqbits)
|
if (0 == reqbits)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue