From 17921f51abc4402c9c5aadf3e664eb37663f744f Mon Sep 17 00:00:00 2001 From: David Brownell Date: Thu, 7 Jan 2010 15:52:38 -0800 Subject: 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 --- src/target/arm_adi_v5.c | 8 ++++++++ src/target/armv7a.c | 35 ++++++++++++++++++++++------------- src/target/armv7m.c | 35 ++++++++++++++++++++++------------- src/target/cortex_a8.c | 4 ++-- src/target/cortex_m3.c | 12 ++++++------ 5 files changed, 60 insertions(+), 34 deletions(-) (limited to 'src') diff --git a/src/target/arm_adi_v5.c b/src/target/arm_adi_v5.c index 96accf3e..e490f2e5 100644 --- a/src/target/arm_adi_v5.c +++ b/src/target/arm_adi_v5.c @@ -101,6 +101,10 @@ static int adi_jtag_dp_scan(struct swjdp_common *swjdp, arm_jtag_set_instr(jtag_info, instr, NULL); /* 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) && ((reg_addr == AP_REG_DRW) || ((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); /* 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) && ((reg_addr == AP_REG_DRW) || ((reg_addr & 0xF0) == AP_REG_BD0)) diff --git a/src/target/armv7a.c b/src/target/armv7a.c index 31538c2a..fe87fee4 100644 --- a/src/target/armv7a.c +++ b/src/target/armv7a.c @@ -174,40 +174,49 @@ COMMAND_HANDLER(handle_dap_info_command) 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[] = { { .name = "info", - .handler = &handle_dap_info_command, + .handler = handle_dap_info_command, .mode = COMMAND_EXEC, - .help = "dap info for ap [num], " - "default currently selected AP", + .help = "display ROM table for MEM-AP " + "(default currently selected AP)", + .usage = "[ap_num]", }, { .name = "apsel", - .handler = &handle_dap_apsel_command, + .handler = handle_dap_apsel_command, .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", - .handler = &handle_dap_apid_command, + .handler = handle_dap_apid_command, .mode = COMMAND_EXEC, - .help = "return id reg from AP [num], " - "default currently selected AP", + .help = "return ID register from AP " + "(default currently selected AP)", + .usage = "[ap_num]", }, { .name = "baseaddr", - .handler = &handle_dap_baseaddr_command, + .handler = handle_dap_baseaddr_command, .mode = COMMAND_EXEC, - .help = "return debug base address from AP [num], " - "default currently selected AP", + .help = "return debug base address from MEM-AP " + "(default currently selected AP)", + .usage = "[ap_num]", }, { .name = "memaccess", - .handler = &handle_dap_memaccess_command, + .handler = handle_dap_memaccess_command, .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]", + .usage = "[cycles]", }, COMMAND_REGISTRATION_DONE }; diff --git a/src/target/armv7m.c b/src/target/armv7m.c index 9d8132d4..233fb959 100644 --- a/src/target/armv7m.c +++ b/src/target/armv7m.c @@ -799,40 +799,49 @@ COMMAND_HANDLER(handle_dap_info_command) 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[] = { { .name = "info", - .handler = &handle_dap_info_command, + .handler = handle_dap_info_command, .mode = COMMAND_EXEC, - .help = "dap info for ap [num], " - "default currently selected AP", + .help = "display ROM table for MEM-AP " + "(default currently selected AP)", + .usage = "[ap_num]", }, { .name = "apsel", - .handler = &handle_dap_apsel_command, + .handler = handle_dap_apsel_command, .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", - .handler = &handle_dap_apid_command, + .handler = handle_dap_apid_command, .mode = COMMAND_EXEC, - .help = "return id reg from AP [num], " - "default currently selected AP", + .help = "return ID register from AP " + "(default currently selected AP)", + .usage = "[ap_num]", }, { .name = "baseaddr", - .handler = &handle_dap_baseaddr_command, + .handler = handle_dap_baseaddr_command, .mode = COMMAND_EXEC, - .help = "return debug base address from AP [num], " - "default currently selected AP", + .help = "return debug base address from MEM-AP " + "(default currently selected AP)", + .usage = "[ap_num]", }, { .name = "memaccess", - .handler = &handle_dap_memaccess_command, + .handler = handle_dap_memaccess_command, .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]", + .usage = "[cycles]", }, COMMAND_REGISTRATION_DONE }; diff --git a/src/target/cortex_a8.c b/src/target/cortex_a8.c index 424263d0..18edd95a 100644 --- a/src/target/cortex_a8.c +++ b/src/target/cortex_a8.c @@ -1642,13 +1642,13 @@ COMMAND_HANDLER(cortex_a8_handle_dbginit_command) static const struct command_registration cortex_a8_exec_command_handlers[] = { { .name = "cache_info", - .handler = &cortex_a8_handle_cache_info_command, + .handler = cortex_a8_handle_cache_info_command, .mode = COMMAND_EXEC, .help = "display information about target caches", }, { .name = "dbginit", - .handler = &cortex_a8_handle_dbginit_command, + .handler = cortex_a8_handle_dbginit_command, .mode = COMMAND_EXEC, .help = "Initialize core debug", }, diff --git a/src/target/cortex_m3.c b/src/target/cortex_m3.c index 96858219..c6b1bb2d 100644 --- a/src/target/cortex_m3.c +++ b/src/target/cortex_m3.c @@ -1989,24 +1989,24 @@ COMMAND_HANDLER(handle_cortex_m3_mask_interrupts_command) static const struct command_registration cortex_m3_exec_command_handlers[] = { { .name = "disassemble", - .handler = &handle_cortex_m3_disassemble_command, + .handler = handle_cortex_m3_disassemble_command, .mode = COMMAND_EXEC, .help = "disassemble Thumb2 instructions", - .usage = "
[]", + .usage = "address [count]", }, { .name = "maskisr", - .handler = &handle_cortex_m3_mask_interrupts_command, + .handler = handle_cortex_m3_mask_interrupts_command, .mode = COMMAND_EXEC, .help = "mask cortex_m3 interrupts", .usage = "['on'|'off']", }, { .name = "vector_catch", - .handler = &handle_cortex_m3_vector_catch_command, + .handler = handle_cortex_m3_vector_catch_command, .mode = COMMAND_EXEC, - .help = "catch hardware vectors", - .usage = "['all'|'none'|]", + .help = "configure hardware vectors to trigger debug entry", + .usage = "['all'|'none'|('bus_err'|'chk_err'|...)*]", }, COMMAND_REGISTRATION_DONE }; -- cgit v1.2.3