target: enable TARGET_EVENT_EXAMINE_* events

Change-Id: I33efc0994b7bfe0faa2f4e8457fcc3c8e43d3571
Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk>
Reviewed-on: http://openocd.zylin.com/635
Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com>
Tested-by: jenkins
Reviewed-by: Bill Traynor <wmat@alphatroop.com>
This commit is contained in:
Spencer Oliver 2012-05-10 22:36:23 +01:00
parent 25b855d2d2
commit 1dd462a6d6
3 changed files with 26 additions and 11 deletions

View File

@ -4227,12 +4227,10 @@ The following target events are defined:
@* The target has resumed (i.e.: gdb said run) @* The target has resumed (i.e.: gdb said run)
@item @b{early-halted} @item @b{early-halted}
@* Occurs early in the halt process @* Occurs early in the halt process
@ignore
@item @b{examine-end}
@* Currently not used (goal: when JTAG examine completes)
@item @b{examine-start} @item @b{examine-start}
@* Currently not used (goal: when JTAG examine starts) @* Before target examine is called.
@end ignore @item @b{examine-end}
@* After target examine is called with no errors.
@item @b{gdb-attach} @item @b{gdb-attach}
@* When GDB connects. This is before any communication with the target, so this @* When GDB connects. This is before any communication with the target, so this
can be used to set up the target so it is possible to probe flash. Probing flash can be used to set up the target so it is possible to probe flash. Probing flash
@ -4318,7 +4316,6 @@ when reset disables PLLs needed to use a fast clock.
@* Target has resumed @* Target has resumed
@end itemize @end itemize
@node Flash Commands @node Flash Commands
@chapter Flash Commands @chapter Flash Commands

View File

@ -64,7 +64,11 @@ proc ocd_process_reset_inner { MODE } {
# Examine all targets on enabled taps. # Examine all targets on enabled taps.
foreach t $targets { foreach t $targets {
if {[jtag tapisenabled [$t cget -chain-position]]} { 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 arm $params
} }
# Target/chain configuration scripts can either execute commands directly # Target/chain configuration scripts can either execute commands directly
# or define a procedure which is executed once all configuration # or define a procedure which is executed once all configuration
# scripts have completed. # scripts have completed.
# #
# By default(classic) the config scripts will set up the target configuration # By default(classic) the config scripts will set up the target configuration

View File

@ -611,9 +611,17 @@ static int jtag_enable_callback(enum jtag_event event, void *priv)
return ERROR_OK; return ERROR_OK;
jtag_unregister_event_callback(jtag_enable_callback, target); 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. /* Targets that correctly implement init + examine, i.e.
* no communication with target during init: * no communication with target during init:
@ -632,12 +640,18 @@ int target_examine(void)
target); target);
continue; continue;
} }
target_call_event_callbacks(target, TARGET_EVENT_EXAMINE_START);
retval = target_examine_one(target); retval = target_examine_one(target);
if (retval != ERROR_OK) if (retval != ERROR_OK)
return retval; return retval;
target_call_event_callbacks(target, TARGET_EVENT_EXAMINE_END);
} }
return retval; return retval;
} }
const char *target_type_name(struct target *target) const char *target_type_name(struct target *target)
{ {
return target->type->name; return target->type->name;