JTAG: shrink "scan_chain" output
Tweak the "scan_chain" output by removing column separators. Also remove the "current instruction" state ... which changes constantly. Now its style resembles the "targets" output, and can even fit on one line in standard terminals and in the PDF docs. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>__archive__
parent
d265c219b9
commit
2c3e413d49
|
@ -2592,13 +2592,15 @@ debugging targets.)
|
||||||
Here's what the scan chain might look like for a chip more than one TAP:
|
Here's what the scan chain might look like for a chip more than one TAP:
|
||||||
|
|
||||||
@verbatim
|
@verbatim
|
||||||
TapName Enabled IdCode Expected IrLen IrCap IrMask Instr
|
TapName Enabled IdCode Expected IrLen IrCap IrMask
|
||||||
-- ------------------ ------- ---------- ---------- ----- ----- ------ -----
|
-- ------------------ ------- ---------- ---------- ----- ----- ------
|
||||||
0 omap5912.dsp Y 0x03df1d81 0x03df1d81 38 0 0 0x...
|
0 omap5912.dsp Y 0x03df1d81 0x03df1d81 38 0x01 0x03
|
||||||
1 omap5912.arm Y 0x0692602f 0x0692602f 4 0x1 0 0xc
|
1 omap5912.arm Y 0x0692602f 0x0692602f 4 0x01 0x0f
|
||||||
2 omap5912.unknown Y 0x00000000 0x00000000 8 0 0 0xff
|
2 omap5912.unknown Y 0x00000000 0x00000000 8 0x01 0x03
|
||||||
@end verbatim
|
@end verbatim
|
||||||
|
|
||||||
|
OpenOCD can detect some of that information, but not all
|
||||||
|
of it. @xref{Autoprobing}.
|
||||||
Unfortunately those TAPs can't always be autoconfigured,
|
Unfortunately those TAPs can't always be autoconfigured,
|
||||||
because not all devices provide good support for that.
|
because not all devices provide good support for that.
|
||||||
JTAG doesn't require supporting IDCODE instructions, and
|
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,
|
exiting the OpenOCD configuration stage,
|
||||||
but systems with a JTAG router can
|
but systems with a JTAG router can
|
||||||
enable or disable TAPs dynamically.
|
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
|
@end deffn
|
||||||
|
|
||||||
@c FIXME! "jtag cget" should be able to return all TAP
|
@c FIXME! "jtag cget" should be able to return all TAP
|
||||||
|
|
|
@ -1021,11 +1021,13 @@ COMMAND_HANDLER(handle_scan_chain_command)
|
||||||
char expected_id[12];
|
char expected_id[12];
|
||||||
|
|
||||||
tap = jtag_all_taps();
|
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) {
|
while (tap) {
|
||||||
uint32_t expected, expected_mask, cur_instr, ii;
|
uint32_t expected, expected_mask, ii;
|
||||||
|
|
||||||
snprintf(expected_id, sizeof expected_id, "0x%08x",
|
snprintf(expected_id, sizeof expected_id, "0x%08x",
|
||||||
(unsigned)((tap->expected_ids_cnt > 0)
|
(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 = buf_get_u32(tap->expected, 0, tap->ir_length);
|
||||||
expected_mask = buf_get_u32(tap->expected_mask, 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,
|
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->abs_chain_position,
|
||||||
tap->dotted_name,
|
tap->dotted_name,
|
||||||
tap->enabled ? 'Y' : 'n',
|
tap->enabled ? 'Y' : 'n',
|
||||||
|
@ -1047,8 +1048,7 @@ COMMAND_HANDLER(handle_scan_chain_command)
|
||||||
expected_id,
|
expected_id,
|
||||||
(unsigned int)(tap->ir_length),
|
(unsigned int)(tap->ir_length),
|
||||||
(unsigned int)(expected),
|
(unsigned int)(expected),
|
||||||
(unsigned int)(expected_mask),
|
(unsigned int)(expected_mask));
|
||||||
(unsigned int)(cur_instr));
|
|
||||||
|
|
||||||
for (ii = 1; ii < tap->expected_ids_cnt; ii++) {
|
for (ii = 1; ii < tap->expected_ids_cnt; ii++) {
|
||||||
snprintf(expected_id, sizeof expected_id, "0x%08x",
|
snprintf(expected_id, sizeof expected_id, "0x%08x",
|
||||||
|
@ -1057,7 +1057,7 @@ COMMAND_HANDLER(handle_scan_chain_command)
|
||||||
expected_id[2] = '*';
|
expected_id[2] = '*';
|
||||||
|
|
||||||
command_print(CMD_CTX,
|
command_print(CMD_CTX,
|
||||||
" | | | | %s | | | | ",
|
" %s",
|
||||||
expected_id);
|
expected_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue