Some devices such as AVR will return 0xffffffff instead of the TDI
data at the end of the chain. Added kludge to handle this. git-svn-id: svn://svn.berlios.de/openocd/trunk@1537 b42882b7-edfa-0310-969c-e2dbd0fdcd60__archive__
parent
b0d04ab6c6
commit
1c28cbab02
|
@ -1531,7 +1531,9 @@ int jtag_examine_chain(void)
|
|||
u32 part;
|
||||
u32 version;
|
||||
|
||||
if (idcode == 0x000000FF)
|
||||
/* some devices, such as AVR will output all 1's instead of TDI
|
||||
input value at end of chain. */
|
||||
if ((idcode == 0x000000FF)||(idcode == 0xFFFFFFFF))
|
||||
{
|
||||
int unexpected=0;
|
||||
/* End of chain (invalid manufacturer ID)
|
||||
|
@ -1548,7 +1550,7 @@ int jtag_examine_chain(void)
|
|||
for (bit_count += 32; bit_count < (JTAG_MAX_CHAIN_SIZE * 32) - 31;bit_count += 32)
|
||||
{
|
||||
idcode = buf_get_u32(idcode_buffer, bit_count, 32);
|
||||
if (unexpected||(idcode != 0x000000FF))
|
||||
if (unexpected||((idcode != 0x000000FF)&&(idcode != 0xFFFFFFFF)))
|
||||
{
|
||||
LOG_WARNING("Unexpected idcode after end of chain! %d 0x%08x", bit_count, idcode);
|
||||
unexpected = 1;
|
||||
|
@ -3306,7 +3308,7 @@ tap_state_t jtag_debug_state_machine(const void *tms_buf, const void *tdi_buf,
|
|||
|
||||
tap_state_t last_state;
|
||||
|
||||
// set startstate (and possibly last, if tap_bits == 0)
|
||||
// set startstate (and possibly last, if tap_bits == 0)
|
||||
last_state = next_state;
|
||||
DEBUG_JTAG_IO("TAP/SM: START state: %s", tap_state_name(next_state));
|
||||
|
||||
|
|
Loading…
Reference in New Issue