Browse Source

target/cortex_a: examination should be done every time it's asked for

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>
tags/v0.9.0-rc1
Paul Fertser 9 years ago
parent
commit
68101e67ac
1 changed files with 3 additions and 3 deletions
  1. +3
    -3
      src/target/cortex_a.c

+ 3
- 3
src/target/cortex_a.c View 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 = ((didr >> 24) & 0x0F) + 1;
cortex_a->brp_num_context = ((didr >> 20) & 0x0F) + 1; cortex_a->brp_num_context = ((didr >> 20) & 0x0F) + 1;
cortex_a->brp_num_available = cortex_a->brp_num; 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->brp_list = calloc(cortex_a->brp_num, sizeof(struct cortex_a_brp));
/* cortex_a->brb_enabled = ????; */ /* cortex_a->brb_enabled = ????; */
for (i = 0; i < cortex_a->brp_num; i++) { 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; 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 */ /* Configure core debug access */
if (retval == ERROR_OK) if (retval == ERROR_OK)


Loading…
Cancel
Save