Magnus Lundin <lundin@mlu.mine.nu>, Oyvind Harboe <oyvind.harboe@zylin.com>, David...
authorzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Thu, 16 Jul 2009 00:08:36 +0000 (00:08 +0000)
committerzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Thu, 16 Jul 2009 00:08:36 +0000 (00:08 +0000)
Move the dap command handler implementations to arm_adi_v5.c,
leaving just thin wrappers in armv7m.c.  There should be no
change in functionality here.  (From Magnus.)

Minor style cleanup:  whitespace, line length, etc.  Update spec
references to use docs which are currently available.  (From Dave.)

git-svn-id: svn://svn.berlios.de/openocd/trunk@2544 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/target/arm_adi_v5.c
src/target/arm_adi_v5.h
src/target/armv7m.c

index bf95057ff9839b1a98103d360b9b79dcc58f7069..f1a50215dc0b071201f4930c142a26e75801ca54 100644 (file)
@@ -29,8 +29,8 @@
  *                                                                         *
  * ARM(tm) Debug Interface v5 Architecture Specification    ARM IHI 0031A  *
  *                                                                         *
- * CoreSight(tm) DAP-Lite TRM, ARM DDI 0316A                               *
- * Cortex-M3(tm) TRM, ARM DDI 0337C                                        *
+ * CoreSight(tm) DAP-Lite TRM, ARM DDI 0316D                               *
+ * Cortex-M3(tm) TRM, ARM DDI 0337G                                        *
  *                                                                         *
 ***************************************************************************/
 
@@ -1129,3 +1129,85 @@ int dap_info_command(struct command_context_s *cmd_ctx, swjdp_common_t *swjdp, i
        return ERROR_OK;
 }
 
+int dap_baseaddr_command(struct command_context_s *cmd_ctx,
+               swjdp_common_t *swjdp, char **args, int argc)
+{
+       uint32_t apsel, apselsave, baseaddr;
+       int retval;
+
+       apsel = swjdp->apsel;
+       apselsave = swjdp->apsel;
+       if (argc > 0)
+               apsel = strtoul(args[0], NULL, 0);
+       if (apselsave != apsel)
+               dap_ap_select(swjdp, apsel);
+
+       dap_ap_read_reg_u32(swjdp, 0xF8, &baseaddr);
+       retval = swjdp_transaction_endcheck(swjdp);
+       command_print(cmd_ctx, "0x%8.8x", baseaddr);
+
+       if (apselsave != apsel)
+               dap_ap_select(swjdp, apselsave);
+
+       return retval;
+}
+
+int dap_memaccess_command(struct command_context_s *cmd_ctx,
+               swjdp_common_t *swjdp, char **args, int argc)
+{
+       uint32_t memaccess_tck;
+
+       memaccess_tck = swjdp->memaccess_tck;
+       if (argc > 0)
+               memaccess_tck = strtoul(args[0], NULL, 0);
+
+       swjdp->memaccess_tck = memaccess_tck;
+       command_print(cmd_ctx, "memory bus access delay set to %i tck",
+                       swjdp->memaccess_tck);
+
+       return ERROR_OK;
+}
+
+int dap_apsel_command(struct command_context_s *cmd_ctx,
+               swjdp_common_t *swjdp, char **args, int argc)
+{
+       uint32_t apsel, apid;
+       int retval;
+
+       apsel = 0;
+       if (argc > 0)
+               apsel = strtoul(args[0], NULL, 0);
+
+       dap_ap_select(swjdp, apsel);
+       dap_ap_read_reg_u32(swjdp, 0xFC, &apid);
+       retval = swjdp_transaction_endcheck(swjdp);
+       command_print(cmd_ctx, "ap %i selected, identification register 0x%8.8x",
+                       apsel, apid);
+
+       return retval;
+}
+
+int dap_apid_command(struct command_context_s *cmd_ctx,
+               swjdp_common_t *swjdp, char **args, int argc)
+{
+       uint32_t apsel, apselsave, apid;
+       int retval;
+
+       apsel = swjdp->apsel;
+       apselsave = swjdp->apsel;
+       if (argc > 0)
+               apsel = strtoul(args[0], NULL, 0);
+
+       if (apselsave != apsel)
+               dap_ap_select(swjdp, apsel);
+
+       dap_ap_read_reg_u32(swjdp, 0xFC, &apid);
+       retval = swjdp_transaction_endcheck(swjdp);
+       command_print(cmd_ctx, "0x%8.8x", apid);
+       if (apselsave != apsel)
+               dap_ap_select(swjdp, apselsave);
+
+       return retval;
+}
+
+
index 19e483151ed8cf96865c5889247382e7aeb258a9..3ff883af755bc8b508a5b49e633833d1e81614a7 100644 (file)
@@ -145,13 +145,17 @@ extern int mem_ap_write_buf_u32(swjdp_common_t *swjdp, uint8_t *buffer, int coun
 /* Initialisation of the debug system, power domains and registers */
 extern int ahbap_debugport_init(swjdp_common_t *swjdp);
 
-extern int dap_info_command(struct command_context_s *cmd_ctx, swjdp_common_t *swjdp, int apsel);
+
 /* Commands for user dap access */
-/* Currently implemented in armv7m, needs armv7m target structure to find jtag and swjdp structures */
-extern int handle_dap_info_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-extern int handle_dap_apsel_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-extern int handle_dap_apid_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-extern int handle_dap_baseaddr_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-extern int handle_dap_memaccess_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
+int dap_info_command(struct command_context_s *cmd_ctx,
+               swjdp_common_t *swjdp, int apsel);
+int dap_baseaddr_command(struct command_context_s *cmd_ctx,
+               swjdp_common_t *swjdp, char **args, int argc);
+int dap_memaccess_command(struct command_context_s *cmd_ctx,
+               swjdp_common_t *swjdp, char **args, int argc);
+int dap_apsel_command(struct command_context_s *cmd_ctx,
+               swjdp_common_t *swjdp, char **args, int argc);
+int dap_apid_command(struct command_context_s *cmd_ctx,
+               swjdp_common_t *swjdp, char **args, int argc);
 
 #endif
index a2e74702160a99dc7b18c27edb237ca24435fa9c..42aa36db66ca8509659dd649830d841b1a6aadd1 100644 (file)
@@ -554,20 +554,6 @@ int armv7m_init_arch_info(target_t *target, armv7m_common_t *armv7m)
        return ERROR_OK;
 }
 
-int armv7m_register_commands(struct command_context_s *cmd_ctx)
-{
-       command_t *arm_adi_v5_dap_cmd;
-
-       arm_adi_v5_dap_cmd = register_command(cmd_ctx, NULL, "dap", NULL, COMMAND_ANY, "cortex dap specific commands");
-       register_command(cmd_ctx, arm_adi_v5_dap_cmd, "info", handle_dap_info_command, COMMAND_EXEC, "Displays dap info for ap [num], default currently selected AP");
-       register_command(cmd_ctx, arm_adi_v5_dap_cmd, "apsel", handle_dap_apsel_command, COMMAND_EXEC, "Select a different AP [num] (default 0)");
-       register_command(cmd_ctx, arm_adi_v5_dap_cmd, "apid", handle_dap_apid_command, COMMAND_EXEC, "Displays id reg from AP [num], default currently selected AP");
-       register_command(cmd_ctx, arm_adi_v5_dap_cmd, "baseaddr", handle_dap_baseaddr_command, COMMAND_EXEC, "Displays debug base address from AP [num], default currently selected AP");
-       register_command(cmd_ctx, arm_adi_v5_dap_cmd, "memaccess", handle_dap_memaccess_command, COMMAND_EXEC, "set/get number of extra tck for mem-ap memory bus access [0-255]");
-
-       return ERROR_OK;
-}
-
 int armv7m_checksum_memory(struct target_s *target, uint32_t address, uint32_t count, uint32_t* checksum)
 {
        working_area_t *crc_algorithm;
@@ -711,10 +697,12 @@ int armv7m_blank_check_memory(struct target_s *target, uint32_t address, uint32_
        return ERROR_OK;
 }
 
-/********************************************************************************************************************
-* Return the debug ap baseaddress in hexadecimal, no extra output to simplify script processing
-*********************************************************************************************************************/
-int handle_dap_baseaddr_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+/*
+ * Return the debug ap baseaddress in hexadecimal;
+ * no extra output to simplify script processing
+ */
+static int handle_dap_baseaddr_command(struct command_context_s *cmd_ctx,
+               char *cmd, char **args, int argc)
 {
        target_t *target = get_current_target(cmd_ctx);
        armv7m_common_t *armv7m = target->arch_info;
@@ -746,97 +734,83 @@ int handle_dap_baseaddr_command(struct command_context_s *cmd_ctx, char *cmd, ch
 }
 
 
-/********************************************************************************************************************
-* Return the debug ap id in hexadecimal, no extra output to simplify script processing
-*********************************************************************************************************************/
-extern int handle_dap_apid_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+/*
+ * Return the debug ap id in hexadecimal;
+ * no extra output to simplify script processing
+ */
+extern int handle_dap_apid_command(struct command_context_s *cmd_ctx,
+               char *cmd, char **args, int argc)
 {
        target_t *target = get_current_target(cmd_ctx);
        armv7m_common_t *armv7m = target->arch_info;
        swjdp_common_t *swjdp = &armv7m->swjdp_info;
-       uint32_t apsel, apselsave, apid;
-       int retval;
-
-       apsel = swjdp->apsel;
-       apselsave = swjdp->apsel;
-       if (argc > 0)
-       {
-               apsel = strtoul(args[0], NULL, 0);
-       }
-
-       if (apselsave != apsel)
-       {
-               dap_ap_select(swjdp, apsel);
-       }
 
-       dap_ap_read_reg_u32(swjdp, 0xFC, &apid);
-       retval = swjdp_transaction_endcheck(swjdp);
-       command_print(cmd_ctx, "0x%8.8" PRIx32 "", apid);
-       if (apselsave != apsel)
-       {
-               dap_ap_select(swjdp, apselsave);
-       }
-
-       return retval;
+       return dap_apid_command(cmd_ctx, swjdp, args, argc);
 }
 
-int handle_dap_apsel_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+static int handle_dap_apsel_command(struct command_context_s *cmd_ctx,
+               char *cmd, char **args, int argc)
 {
        target_t *target = get_current_target(cmd_ctx);
        armv7m_common_t *armv7m = target->arch_info;
        swjdp_common_t *swjdp = &armv7m->swjdp_info;
-       uint32_t apsel, apid;
-       int retval;
-
-       apsel = 0;
-       if (argc > 0)
-       {
-               apsel = strtoul(args[0], NULL, 0);
-       }
-
-       dap_ap_select(swjdp, apsel);
-       dap_ap_read_reg_u32(swjdp, 0xFC, &apid);
-       retval = swjdp_transaction_endcheck(swjdp);
-       command_print(cmd_ctx, "ap %i selected, identification register 0x%8.8" PRIx32 "", (int)apsel, apid);
 
-       return retval;
+       return dap_apsel_command(cmd_ctx, swjdp, args, argc);
 }
 
-int handle_dap_memaccess_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+static int handle_dap_memaccess_command(struct command_context_s *cmd_ctx,
+               char *cmd, char **args, int argc)
 {
        target_t *target = get_current_target(cmd_ctx);
        armv7m_common_t *armv7m = target->arch_info;
        swjdp_common_t *swjdp = &armv7m->swjdp_info;
-       uint32_t memaccess_tck;
-
-       memaccess_tck = swjdp->memaccess_tck;
-       if (argc > 0)
-       {
-               memaccess_tck = strtoul(args[0], NULL, 0);
-       }
-
-       swjdp->memaccess_tck = memaccess_tck;
-       command_print(cmd_ctx, "memory bus access delay set to %i tck", (int)(swjdp->memaccess_tck));
 
-       return ERROR_OK;
+       return dap_memaccess_command(cmd_ctx, swjdp, args, argc);
 }
 
-int handle_dap_info_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+
+static int handle_dap_info_command(struct command_context_s *cmd_ctx,
+               char *cmd, char **args, int argc)
 {
        target_t *target = get_current_target(cmd_ctx);
        armv7m_common_t *armv7m = target->arch_info;
        swjdp_common_t *swjdp = &armv7m->swjdp_info;
-       int retval;
        uint32_t apsel;
 
        apsel =  swjdp->apsel;
        if (argc > 0)
-       {
                apsel = strtoul(args[0], NULL, 0);
-       }
-
-       retval = dap_info_command(cmd_ctx, swjdp, apsel);
 
-       return retval;
+       return dap_info_command(cmd_ctx, swjdp, apsel);
 }
 
+int armv7m_register_commands(struct command_context_s *cmd_ctx)
+{
+       command_t *arm_adi_v5_dap_cmd;
+
+       arm_adi_v5_dap_cmd = register_command(cmd_ctx, NULL, "dap",
+                       NULL, COMMAND_ANY,
+                       "cortex dap specific commands");
+
+       register_command(cmd_ctx, arm_adi_v5_dap_cmd, "info",
+                       handle_dap_info_command, COMMAND_EXEC,
+                       "Displays dap info for ap [num],"
+                       "default currently selected AP");
+       register_command(cmd_ctx, arm_adi_v5_dap_cmd, "apsel",
+                       handle_dap_apsel_command, COMMAND_EXEC,
+                       "Select a different AP [num] (default 0)");
+       register_command(cmd_ctx, arm_adi_v5_dap_cmd, "apid",
+                       handle_dap_apid_command, COMMAND_EXEC,
+                       "Displays id reg from AP [num], "
+                       "default currently selected AP");
+       register_command(cmd_ctx, arm_adi_v5_dap_cmd, "baseaddr",
+                       handle_dap_baseaddr_command, COMMAND_EXEC,
+                       "Displays debug base address from AP [num],"
+                       "default currently selected AP");
+       register_command(cmd_ctx, arm_adi_v5_dap_cmd, "memaccess",
+                       handle_dap_memaccess_command, COMMAND_EXEC,
+                       "set/get number of extra tck for mem-ap "
+                       "memory bus access [0-255]");
+
+       return ERROR_OK;
+}

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)