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:
parent
25b855d2d2
commit
1dd462a6d6
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue