]> git.sur5r.net Git - openocd/commitdiff
target/cortex_a: examination should be done every time it's asked for
authorPaul Fertser <fercerpav@gmail.com>
Sun, 19 Apr 2015 21:29:37 +0000 (00:29 +0300)
committerPaul Fertser <fercerpav@gmail.com>
Fri, 24 Apr 2015 13:47:16 +0000 (14:47 +0100)
It was observed on AM437x that after every reset the target's debug
regions are unpowered. To be able to properly communicate with the
target and perform cortex_a init debug access after a reset event the
examination need to be performed every time, not just on OpenOCD
start.

Change-Id: Idf272e127ee88341e806ee00df154eade573451d
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Reviewed-on: http://openocd.zylin.com/2723
Tested-by: jenkins
Reviewed-by: Felipe Balbi <balbi@ti.com>
src/target/cortex_a.c

index ed9b2b29cb5cd8ea0463f24594565d6ef7fef086..207fb811627bd80317045233e03af1150dd8b79a 100644 (file)
@@ -2965,6 +2965,7 @@ static int cortex_a_examine_first(struct target *target)
        cortex_a->brp_num = ((didr >> 24) & 0x0F) + 1;
        cortex_a->brp_num_context = ((didr >> 20) & 0x0F) + 1;
        cortex_a->brp_num_available = cortex_a->brp_num;
+       free(cortex_a->brp_list);
        cortex_a->brp_list = calloc(cortex_a->brp_num, sizeof(struct cortex_a_brp));
 /*     cortex_a->brb_enabled = ????; */
        for (i = 0; i < cortex_a->brp_num; i++) {
@@ -2988,9 +2989,8 @@ static int cortex_a_examine(struct target *target)
 {
        int retval = ERROR_OK;
 
-       /* don't re-probe hardware after each reset */
-       if (!target_was_examined(target))
-               retval = cortex_a_examine_first(target);
+       /* Reestablish communication after target reset */
+       retval = cortex_a_examine_first(target);
 
        /* Configure core debug access */
        if (retval == ERROR_OK)