From: Øyvind H. <go...@us...> - 2010-02-01 13:44:47
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Main OpenOCD repository". The branch, master has been updated via 91e3268737b578a182cb661d60551657f799ab3c (commit) from 82f2492138e053d5e3577e83b80cab8d41c0d08b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 91e3268737b578a182cb661d60551657f799ab3c Author: Ãyvind Harboe <oyv...@zy...> Date: Sun Jan 31 21:02:06 2010 +0100 gdb: restore behavior from 0.3.1 for srst_asserted and power_restore srst_asserted and power_restore can now be overriden to do nothing. By default they will "reset init" the targets and halt gdb. Signed-off-by: Ãyvind Harboe <oyv...@zy...> diff --git a/src/jtag/startup.tcl b/src/jtag/startup.tcl index ab215ba..4e6d5fc 100644 --- a/src/jtag/startup.tcl +++ b/src/jtag/startup.tcl @@ -30,8 +30,18 @@ proc init_reset { mode } { # documented nor supported except on ZY1000. proc power_restore {} { - puts "Sensed power restore." + puts "Sensed power restore, running reset init and halting GDB." reset init + + # Halt GDB so user can deal with a detected power restore. + # + # After GDB is halted, then output is no longer forwarded + # to the GDB console. + set targets [target names] + foreach t $targets { + # New event script. + $t invoke-event arp_halt_gdb + } } add_help_text power_restore "Overridable procedure run when power restore is detected. Runs 'reset init' by default." @@ -46,9 +56,20 @@ proc power_dropout {} { # documented nor supported except on ZY1000. proc srst_deasserted {} { - puts "Sensed nSRST deasserted." + puts "Sensed nSRST deasserted, running reset init and halting GDB." reset init + + # Halt GDB so user can deal with a detected reset. + # + # After GDB is halted, then output is no longer forwarded + # to the GDB console. + set targets [target names] + foreach t $targets { + # New event script. + $t invoke-event arp_halt_gdb + } } + add_help_text srst_deasserted "Overridable procedure run when srst deassert is detected. Runs 'reset init' by default." proc srst_asserted {} { diff --git a/src/target/target.c b/src/target/target.c index 1eb65a6..2522408 100644 --- a/src/target/target.c +++ b/src/target/target.c @@ -1739,15 +1739,6 @@ static int sense_handler(void) return ERROR_OK; } -static void target_call_event_callbacks_all(enum target_event e) { - struct target *target; - target = all_targets; - while (target) { - target_call_event_callbacks(target, e); - target = target->next; - } -} - /* process target state changes */ static int handle_target(void *priv) { @@ -1767,8 +1758,7 @@ static int handle_target(void *priv) int did_something = 0; if (runSrstAsserted) { - LOG_INFO("Waking up GDB, srst asserted detected."); - target_call_event_callbacks_all(TARGET_EVENT_GDB_HALT); + LOG_INFO("srst asserted detected, running srst_asserted proc."); Jim_Eval(interp, "srst_asserted"); did_something = 1; } @@ -1779,8 +1769,7 @@ static int handle_target(void *priv) } if (runPowerDropout) { - LOG_INFO("Waking up GDB, power dropout detected."); - target_call_event_callbacks_all(TARGET_EVENT_GDB_HALT); + LOG_INFO("Power dropout detected, running power_dropout proc."); Jim_Eval(interp, "power_dropout"); did_something = 1; } @@ -4065,6 +4054,21 @@ static int jim_target_examine(Jim_Interp *interp, int argc, Jim_Obj *const *argv return JIM_OK; } +static int jim_target_halt_gdb(Jim_Interp *interp, int argc, Jim_Obj *const *argv) +{ + if (argc != 1) + { + Jim_WrongNumArgs(interp, 1, argv, "[no parameters]"); + return JIM_ERR; + } + struct target *target = Jim_CmdPrivData(interp); + + if (target_call_event_callbacks(target, TARGET_EVENT_GDB_HALT) != ERROR_OK) + return JIM_ERR; + + return JIM_OK; +} + static int jim_target_poll(Jim_Interp *interp, int argc, Jim_Obj *const *argv) { if (argc != 1) @@ -4346,6 +4350,12 @@ static const struct command_registration target_instance_command_handlers[] = { .help = "used internally for reset processing", }, { + .name = "arp_halt_gdb", + .mode = COMMAND_EXEC, + .jim_handler = jim_target_halt_gdb, + .help = "used internally for reset processing to halt GDB", + }, + { .name = "arp_poll", .mode = COMMAND_EXEC, .jim_handler = jim_target_poll, ----------------------------------------------------------------------- Summary of changes: src/jtag/startup.tcl | 25 +++++++++++++++++++++++-- src/target/target.c | 36 +++++++++++++++++++++++------------- 2 files changed, 46 insertions(+), 15 deletions(-) hooks/post-receive -- Main OpenOCD repository |