aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/target/startup.tcl10
-rw-r--r--src/target/target.c18
2 files changed, 23 insertions, 5 deletions
diff --git a/src/target/startup.tcl b/src/target/startup.tcl
index 02cefb09..90f947df 100644
--- a/src/target/startup.tcl
+++ b/src/target/startup.tcl
@@ -64,7 +64,11 @@ proc ocd_process_reset_inner { MODE } {
# Examine all targets on enabled taps.
foreach t $targets {
if {[jtag tapisenabled [$t cget -chain-position]]} {
- $t arp_examine
+ $t invoke-event examine-start
+ set err [catch "$t arp_examine"]
+ if { $err == 0 } {
+ $t invoke-event examine-end
+ }
}
}
@@ -152,8 +156,8 @@ proc armv4_5 params {
arm $params
}
-# Target/chain configuration scripts can either execute commands directly
-# or define a procedure which is executed once all configuration
+# Target/chain configuration scripts can either execute commands directly
+# or define a procedure which is executed once all configuration
# scripts have completed.
#
# By default(classic) the config scripts will set up the target configuration
diff --git a/src/target/target.c b/src/target/target.c
index ccaa6e39..7dae8a9f 100644
--- a/src/target/target.c
+++ b/src/target/target.c
@@ -611,9 +611,17 @@ static int jtag_enable_callback(enum jtag_event event, void *priv)
return ERROR_OK;
jtag_unregister_event_callback(jtag_enable_callback, target);
- return target_examine_one(target);
-}
+ target_call_event_callbacks(target, TARGET_EVENT_EXAMINE_START);
+
+ int retval = target_examine_one(target);
+ if (retval != ERROR_OK)
+ return retval;
+
+ target_call_event_callbacks(target, TARGET_EVENT_EXAMINE_END);
+
+ return retval;
+}
/* Targets that correctly implement init + examine, i.e.
* no communication with target during init:
@@ -632,12 +640,18 @@ int target_examine(void)
target);
continue;
}
+
+ target_call_event_callbacks(target, TARGET_EVENT_EXAMINE_START);
+
retval = target_examine_one(target);
if (retval != ERROR_OK)
return retval;
+
+ target_call_event_callbacks(target, TARGET_EVENT_EXAMINE_END);
}
return retval;
}
+
const char *target_type_name(struct target *target)
{
return target->type->name;