aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Fertser <fercerpav@gmail.com>2015-04-20 00:29:37 +0300
committerPaul Fertser <fercerpav@gmail.com>2015-04-24 14:47:16 +0100
commit68101e67ac16bdead3bd6d48cbe0a2bfd63aac02 (patch)
tree165520ced1011d9a0e57a6ae5f79bd4e23d33450
parentf7f9a37fa68432f583f33fe14d6bcec2270e576a (diff)
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>
-rw-r--r--src/target/cortex_a.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/target/cortex_a.c b/src/target/cortex_a.c
index ed9b2b29..207fb811 100644
--- a/src/target/cortex_a.c
+++ b/src/target/cortex_a.c
@@ -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)