From 984dd0635c995013a32abd80710a240ae5f57224 Mon Sep 17 00:00:00 2001 From: oharboe Date: Tue, 29 Jul 2008 14:58:04 +0000 Subject: 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 --- src/jtag/jtag.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/jtag') 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; } -- cgit v1.2.3