Browse Source

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>
tags/v0.6.0-rc1
Spencer Oliver 9 years ago
parent
commit
1dd462a6d6
3 changed files with 26 additions and 11 deletions
  1. +3
    -6
      doc/openocd.texi
  2. +7
    -3
      src/target/startup.tcl
  3. +16
    -2
      src/target/target.c

+ 3
- 6
doc/openocd.texi View File

@@ -4227,12 +4227,10 @@ The following target events are defined:
@* The target has resumed (i.e.: gdb said run)
@item @b{early-halted}
@* Occurs early in the halt process
@ignore
@item @b{examine-end}
@* Currently not used (goal: when JTAG examine completes)
@item @b{examine-start}
@* Currently not used (goal: when JTAG examine starts)
@end ignore
@* Before target examine is called.
@item @b{examine-end}
@* After target examine is called with no errors.
@item @b{gdb-attach}
@* 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
@@ -4318,7 +4316,6 @@ when reset disables PLLs needed to use a fast clock.
@* Target has resumed
@end itemize


@node Flash Commands
@chapter Flash Commands



+ 7
- 3
src/target/startup.tcl View File

@@ -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


+ 16
- 2
src/target/target.c View File

@@ -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;


Loading…
Cancel
Save