diff --git a/doc/openocd.texi b/doc/openocd.texi index 9d5652315..cda5be385 100644 --- a/doc/openocd.texi +++ b/doc/openocd.texi @@ -2592,13 +2592,15 @@ debugging targets.) Here's what the scan chain might look like for a chip more than one TAP: @verbatim - TapName Enabled IdCode Expected IrLen IrCap IrMask Instr --- ------------------ ------- ---------- ---------- ----- ----- ------ ----- - 0 omap5912.dsp Y 0x03df1d81 0x03df1d81 38 0 0 0x... - 1 omap5912.arm Y 0x0692602f 0x0692602f 4 0x1 0 0xc - 2 omap5912.unknown Y 0x00000000 0x00000000 8 0 0 0xff + TapName Enabled IdCode Expected IrLen IrCap IrMask +-- ------------------ ------- ---------- ---------- ----- ----- ------ + 0 omap5912.dsp Y 0x03df1d81 0x03df1d81 38 0x01 0x03 + 1 omap5912.arm Y 0x0692602f 0x0692602f 4 0x01 0x0f + 2 omap5912.unknown Y 0x00000000 0x00000000 8 0x01 0x03 @end verbatim +OpenOCD can detect some of that information, but not all +of it. @xref{Autoprobing}. Unfortunately those TAPs can't always be autoconfigured, because not all devices provide good support for that. JTAG doesn't require supporting IDCODE instructions, and @@ -2659,8 +2661,6 @@ The set of TAPs listed by this command is fixed by exiting the OpenOCD configuration stage, but systems with a JTAG router can enable or disable TAPs dynamically. -In addition to the enable/disable status, the contents of -each TAP's instruction register can also change. @end deffn @c FIXME! "jtag cget" should be able to return all TAP diff --git a/src/jtag/tcl.c b/src/jtag/tcl.c index f4815c8eb..00b1038e2 100644 --- a/src/jtag/tcl.c +++ b/src/jtag/tcl.c @@ -1021,11 +1021,13 @@ COMMAND_HANDLER(handle_scan_chain_command) char expected_id[12]; tap = jtag_all_taps(); - command_print(CMD_CTX, " TapName | Enabled | IdCode Expected IrLen IrCap IrMask Instr "); - command_print(CMD_CTX, "---|--------------------|---------|------------|------------|------|------|------|---------"); + command_print(CMD_CTX, +" TapName Enabled IdCode Expected IrLen IrCap IrMask"); + command_print(CMD_CTX, +"-- ------------------- -------- ---------- ---------- ----- ----- ------"); while (tap) { - uint32_t expected, expected_mask, cur_instr, ii; + uint32_t expected, expected_mask, ii; snprintf(expected_id, sizeof expected_id, "0x%08x", (unsigned)((tap->expected_ids_cnt > 0) @@ -1036,10 +1038,9 @@ COMMAND_HANDLER(handle_scan_chain_command) expected = buf_get_u32(tap->expected, 0, tap->ir_length); expected_mask = buf_get_u32(tap->expected_mask, 0, tap->ir_length); - cur_instr = buf_get_u32(tap->cur_instr, 0, tap->ir_length); command_print(CMD_CTX, - "%2d | %-18s | %c | 0x%08x | %s | 0x%02x | 0x%02x | 0x%02x | 0x%02x", + "%2d %-18s %c 0x%08x %s %5d 0x%02x 0x%02x", tap->abs_chain_position, tap->dotted_name, tap->enabled ? 'Y' : 'n', @@ -1047,8 +1048,7 @@ COMMAND_HANDLER(handle_scan_chain_command) expected_id, (unsigned int)(tap->ir_length), (unsigned int)(expected), - (unsigned int)(expected_mask), - (unsigned int)(cur_instr)); + (unsigned int)(expected_mask)); for (ii = 1; ii < tap->expected_ids_cnt; ii++) { snprintf(expected_id, sizeof expected_id, "0x%08x", @@ -1057,7 +1057,7 @@ COMMAND_HANDLER(handle_scan_chain_command) expected_id[2] = '*'; command_print(CMD_CTX, - " | | | | %s | | | | ", + " %s", expected_id); }