summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-07-29 14:58:04 +0000
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-07-29 14:58:04 +0000
commit984dd0635c995013a32abd80710a240ae5f57224 (patch)
treed4bddb05cee191c8556ab9aa4ff3f20ae6b89a1a
parent530057a846a7b9544ce514155541814cf2a7f477 (diff)
downloadopenocd_libswd-984dd0635c995013a32abd80710a240ae5f57224.tar.gz
openocd_libswd-984dd0635c995013a32abd80710a240ae5f57224.tar.bz2
openocd_libswd-984dd0635c995013a32abd80710a240ae5f57224.tar.xz
openocd_libswd-984dd0635c995013a32abd80710a240ae5f57224.zip
more jtag_examine() checks. catch errors during first 640 bits.
git-svn-id: svn://svn.berlios.de/openocd/trunk@881 b42882b7-edfa-0310-969c-e2dbd0fdcd60
-rw-r--r--src/jtag/jtag.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/jtag/jtag.c b/src/jtag/jtag.c
index 37e2a61e..15a5900c 100644
--- a/src/jtag/jtag.c
+++ b/src/jtag/jtag.c
@@ -1371,7 +1371,26 @@ int jtag_examine_chain()
if (idcode == 0x000000FF)
{
- /* End of chain (invalid manufacturer ID) */
+ /* End of chain (invalid manufacturer ID)
+ *
+ * The JTAG examine is the very first thing that happens
+ *
+ * A single JTAG device requires only 64 bits to be read back correctly.
+ *
+ * The code below adds a check that the rest of the data scanned (640 bits)
+ * are all as expected. This helps diagnose/catch problems with the JTAG chain
+ *
+ * earlier and gives more helpful/explicit error messages.
+ */
+ 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 (idcode != 0x000000FF)
+ {
+ LOG_WARNING("Unexpected idcode after end of chain! 0x%08x", idcode);
+ }
+ }
+
break;
}