ARMv7: help/usage updates

Provide helptext which was sometimes missing; update some of it
to be more accurate.

Usage syntax messages have the same EBNF as the User's Guide;
there should be no angle brackets in either place.

Don't use "&function"; functions are like arrays, their address
is their name.  Shrink some overlong lines, remove some empties.

Add a couple comments about things that should change:  those
extra TCK cycles for MEM-AP reads are in the wrong place (that
might explain some problems we've seen); the DAP command tables
should be shared, not copied.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
This commit is contained in:
David Brownell 2010-01-07 15:52:38 -08:00
parent e19fe9ad09
commit 17921f51ab
6 changed files with 69 additions and 41 deletions

View File

@ -6198,26 +6198,28 @@ These commands are specific to ARM architecture v7 Debug Access Port (DAP),
included on Cortex-M3 and Cortex-A8 systems. included on Cortex-M3 and Cortex-A8 systems.
They are available in addition to other core-specific commands that may be available. They are available in addition to other core-specific commands that may be available.
@deffn Command {dap info} [num] @deffn Command {dap apid} [num]
Displays dap info for ap @var{num}, defaulting to the currently selected AP. Displays ID register from AP @var{num},
defaulting to the currently selected AP.
@end deffn @end deffn
@deffn Command {dap apsel} [num] @deffn Command {dap apsel} [num]
Select AP @var{num}, defaulting to 0. Select AP @var{num}, defaulting to 0.
@end deffn @end deffn
@deffn Command {dap apid} [num] @deffn Command {dap baseaddr} [num]
Displays id register from AP @var{num}, Displays debug base address from MEM-AP @var{num},
defaulting to the currently selected AP. defaulting to the currently selected AP.
@end deffn @end deffn
@deffn Command {dap baseaddr} [num] @deffn Command {dap info} [num]
Displays debug base address from AP @var{num}, Displays the ROM table for MEM-AP @var{num},
defaulting to the currently selected AP. defaulting to the currently selected AP.
@end deffn @end deffn
@deffn Command {dap memaccess} [value] @deffn Command {dap memaccess} [value]
Displays the number of extra tck for mem-ap memory bus access [0-255]. Displays the number of extra tck cycles in the JTAG idle to use for MEM-AP
memory bus access [0-255], giving additional time to respond to reads.
If @var{value} is defined, first assigns that. If @var{value} is defined, first assigns that.
@end deffn @end deffn

View File

@ -101,6 +101,10 @@ static int adi_jtag_dp_scan(struct swjdp_common *swjdp,
arm_jtag_set_instr(jtag_info, instr, NULL); arm_jtag_set_instr(jtag_info, instr, NULL);
/* Add specified number of tck clocks before accessing memory bus */ /* Add specified number of tck clocks before accessing memory bus */
/* REVISIT these TCK cycles should be *AFTER* updating APACC, since
* they provide more time for the (MEM) AP to complete the read ...
*/
if ((instr == JTAG_DP_APACC) if ((instr == JTAG_DP_APACC)
&& ((reg_addr == AP_REG_DRW) && ((reg_addr == AP_REG_DRW)
|| ((reg_addr & 0xF0) == AP_REG_BD0)) || ((reg_addr & 0xF0) == AP_REG_BD0))
@ -137,6 +141,10 @@ static int adi_jtag_dp_scan_u32(struct swjdp_common *swjdp,
arm_jtag_set_instr(jtag_info, instr, NULL); arm_jtag_set_instr(jtag_info, instr, NULL);
/* Add specified number of tck clocks before accessing memory bus */ /* Add specified number of tck clocks before accessing memory bus */
/* REVISIT these TCK cycles should be *AFTER* updating APACC, since
* they provide more time for the (MEM) AP to complete the read ...
*/
if ((instr == JTAG_DP_APACC) if ((instr == JTAG_DP_APACC)
&& ((reg_addr == AP_REG_DRW) && ((reg_addr == AP_REG_DRW)
|| ((reg_addr & 0xF0) == AP_REG_BD0)) || ((reg_addr & 0xF0) == AP_REG_BD0))

View File

@ -174,40 +174,49 @@ COMMAND_HANDLER(handle_dap_info_command)
return dap_info_command(CMD_CTX, swjdp, apsel); return dap_info_command(CMD_CTX, swjdp, apsel);
} }
/* FIXME this table should be part of generic DAP support, and
* be shared by the ARMv7-A/R and ARMv7-M support ...
*/
static const struct command_registration armv7a_exec_command_handlers[] = { static const struct command_registration armv7a_exec_command_handlers[] = {
{ {
.name = "info", .name = "info",
.handler = &handle_dap_info_command, .handler = handle_dap_info_command,
.mode = COMMAND_EXEC, .mode = COMMAND_EXEC,
.help = "dap info for ap [num], " .help = "display ROM table for MEM-AP "
"default currently selected AP", "(default currently selected AP)",
.usage = "[ap_num]",
}, },
{ {
.name = "apsel", .name = "apsel",
.handler = &handle_dap_apsel_command, .handler = handle_dap_apsel_command,
.mode = COMMAND_EXEC, .mode = COMMAND_EXEC,
.help = "select a different AP [num] (default 0)", .help = "Set the currently selected AP (default 0) "
"and display the result",
.usage = "[ap_num]",
}, },
{ {
.name = "apid", .name = "apid",
.handler = &handle_dap_apid_command, .handler = handle_dap_apid_command,
.mode = COMMAND_EXEC, .mode = COMMAND_EXEC,
.help = "return id reg from AP [num], " .help = "return ID register from AP "
"default currently selected AP", "(default currently selected AP)",
.usage = "[ap_num]",
}, },
{ {
.name = "baseaddr", .name = "baseaddr",
.handler = &handle_dap_baseaddr_command, .handler = handle_dap_baseaddr_command,
.mode = COMMAND_EXEC, .mode = COMMAND_EXEC,
.help = "return debug base address from AP [num], " .help = "return debug base address from MEM-AP "
"default currently selected AP", "(default currently selected AP)",
.usage = "[ap_num]",
}, },
{ {
.name = "memaccess", .name = "memaccess",
.handler = &handle_dap_memaccess_command, .handler = handle_dap_memaccess_command,
.mode = COMMAND_EXEC, .mode = COMMAND_EXEC,
.help = "set/get number of extra tck for mem-ap memory " .help = "set/get number of extra tck for MEM-AP memory "
"bus access [0-255]", "bus access [0-255]",
.usage = "[cycles]",
}, },
COMMAND_REGISTRATION_DONE COMMAND_REGISTRATION_DONE
}; };

View File

@ -799,40 +799,49 @@ COMMAND_HANDLER(handle_dap_info_command)
return dap_info_command(CMD_CTX, swjdp, apsel); return dap_info_command(CMD_CTX, swjdp, apsel);
} }
/* FIXME this table should be part of generic DAP support, and
* be shared by the ARMv7-A/R and ARMv7-M support ...
*/
static const struct command_registration armv7m_exec_command_handlers[] = { static const struct command_registration armv7m_exec_command_handlers[] = {
{ {
.name = "info", .name = "info",
.handler = &handle_dap_info_command, .handler = handle_dap_info_command,
.mode = COMMAND_EXEC, .mode = COMMAND_EXEC,
.help = "dap info for ap [num], " .help = "display ROM table for MEM-AP "
"default currently selected AP", "(default currently selected AP)",
.usage = "[ap_num]",
}, },
{ {
.name = "apsel", .name = "apsel",
.handler = &handle_dap_apsel_command, .handler = handle_dap_apsel_command,
.mode = COMMAND_EXEC, .mode = COMMAND_EXEC,
.help = "select a different AP [num] (default 0)", .help = "Set the currently selected AP (default 0) "
"and display the result",
.usage = "[ap_num]",
}, },
{ {
.name = "apid", .name = "apid",
.handler = &handle_dap_apid_command, .handler = handle_dap_apid_command,
.mode = COMMAND_EXEC, .mode = COMMAND_EXEC,
.help = "return id reg from AP [num], " .help = "return ID register from AP "
"default currently selected AP", "(default currently selected AP)",
.usage = "[ap_num]",
}, },
{ {
.name = "baseaddr", .name = "baseaddr",
.handler = &handle_dap_baseaddr_command, .handler = handle_dap_baseaddr_command,
.mode = COMMAND_EXEC, .mode = COMMAND_EXEC,
.help = "return debug base address from AP [num], " .help = "return debug base address from MEM-AP "
"default currently selected AP", "(default currently selected AP)",
.usage = "[ap_num]",
}, },
{ {
.name = "memaccess", .name = "memaccess",
.handler = &handle_dap_memaccess_command, .handler = handle_dap_memaccess_command,
.mode = COMMAND_EXEC, .mode = COMMAND_EXEC,
.help = "set/get number of extra tck for mem-ap memory " .help = "set/get number of extra tck for MEM-AP memory "
"bus access [0-255]", "bus access [0-255]",
.usage = "[cycles]",
}, },
COMMAND_REGISTRATION_DONE COMMAND_REGISTRATION_DONE
}; };

View File

@ -1642,13 +1642,13 @@ COMMAND_HANDLER(cortex_a8_handle_dbginit_command)
static const struct command_registration cortex_a8_exec_command_handlers[] = { static const struct command_registration cortex_a8_exec_command_handlers[] = {
{ {
.name = "cache_info", .name = "cache_info",
.handler = &cortex_a8_handle_cache_info_command, .handler = cortex_a8_handle_cache_info_command,
.mode = COMMAND_EXEC, .mode = COMMAND_EXEC,
.help = "display information about target caches", .help = "display information about target caches",
}, },
{ {
.name = "dbginit", .name = "dbginit",
.handler = &cortex_a8_handle_dbginit_command, .handler = cortex_a8_handle_dbginit_command,
.mode = COMMAND_EXEC, .mode = COMMAND_EXEC,
.help = "Initialize core debug", .help = "Initialize core debug",
}, },

View File

@ -1989,24 +1989,24 @@ COMMAND_HANDLER(handle_cortex_m3_mask_interrupts_command)
static const struct command_registration cortex_m3_exec_command_handlers[] = { static const struct command_registration cortex_m3_exec_command_handlers[] = {
{ {
.name = "disassemble", .name = "disassemble",
.handler = &handle_cortex_m3_disassemble_command, .handler = handle_cortex_m3_disassemble_command,
.mode = COMMAND_EXEC, .mode = COMMAND_EXEC,
.help = "disassemble Thumb2 instructions", .help = "disassemble Thumb2 instructions",
.usage = "<address> [<count>]", .usage = "address [count]",
}, },
{ {
.name = "maskisr", .name = "maskisr",
.handler = &handle_cortex_m3_mask_interrupts_command, .handler = handle_cortex_m3_mask_interrupts_command,
.mode = COMMAND_EXEC, .mode = COMMAND_EXEC,
.help = "mask cortex_m3 interrupts", .help = "mask cortex_m3 interrupts",
.usage = "['on'|'off']", .usage = "['on'|'off']",
}, },
{ {
.name = "vector_catch", .name = "vector_catch",
.handler = &handle_cortex_m3_vector_catch_command, .handler = handle_cortex_m3_vector_catch_command,
.mode = COMMAND_EXEC, .mode = COMMAND_EXEC,
.help = "catch hardware vectors", .help = "configure hardware vectors to trigger debug entry",
.usage = "['all'|'none'|<list>]", .usage = "['all'|'none'|('bus_err'|'chk_err'|...)*]",
}, },
COMMAND_REGISTRATION_DONE COMMAND_REGISTRATION_DONE
}; };