From dc33cb668d64e9ab3720b09db653f40c914efcde Mon Sep 17 00:00:00 2001 From: oharboe Date: Tue, 19 Aug 2008 13:55:14 +0000 Subject: [PATCH] DANGER: committed work-in-progress to handle examination of jtag devices without IDCODE. I think this works, but I may have to pull that change out again... added alive_sleep() to avoid warnings when resetting target(fixes incomprehensible error timeout error messages in GDB). git-svn-id: svn://svn.berlios.de/openocd/trunk@941 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- src/jtag/jtag.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/jtag/jtag.c b/src/jtag/jtag.c index d1ee1bbbeb..d5158126c9 100644 --- a/src/jtag/jtag.c +++ b/src/jtag/jtag.c @@ -1311,7 +1311,7 @@ int jtag_reset_callback(enum jtag_event event, void *priv) void jtag_sleep(u32 us) { - usleep(us); + alive_sleep(us/1000); } /* Try to examine chain layout according to IEEE 1149.1 §12 @@ -1364,9 +1364,8 @@ int jtag_examine_chain(void) if ((idcode & 1) == 0) { /* LSB must not be 0, this indicates a device in bypass */ - device_count++; - - LOG_WARNING("Device was in bypass after TRST/TMS reset"); + LOG_WARNING("Device does not have IDCODE"); + idcode=0; bit_count += 1; } @@ -1403,13 +1402,6 @@ int jtag_examine_chain(void) break; } - if (device) - { - device->idcode = idcode; - device = device->next; - } - device_count++; - manufacturer = (idcode & 0xffe) >> 1; part = (idcode & 0xffff000) >> 12; version = (idcode & 0xf0000000) >> 28; @@ -1419,6 +1411,12 @@ int jtag_examine_chain(void) bit_count += 32; } + if (device) + { + device->idcode = idcode; + device = device->next; + } + device_count++; } /* see if number of discovered devices matches configuration */ @@ -1591,7 +1589,7 @@ static int jtag_init_inner(struct command_context_s *cmd_ctx) LOG_ERROR("Could not validate JTAG chain"); return ERROR_JTAG_INVALID_INTERFACE; } - usleep(10000); + alive_sleep(10); } return ERROR_OK; -- 2.30.2