summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorØyvind Harboe <oyvind.harboe@zylin.com>2010-01-21 10:16:42 +0100
committerØyvind Harboe <oyvind.harboe@zylin.com>2010-01-21 16:20:58 +0100
commit98f7c2127b8800e2597493eea2c7ba5c88940b86 (patch)
tree213370029349cbd4c7cb5fb75784b26e6fbe1ecc
parentdfba7fa949ae12089aa02dab557a46520c816d28 (diff)
downloadopenocd_libswd-98f7c2127b8800e2597493eea2c7ba5c88940b86.tar.gz
openocd_libswd-98f7c2127b8800e2597493eea2c7ba5c88940b86.tar.bz2
openocd_libswd-98f7c2127b8800e2597493eea2c7ba5c88940b86.tar.xz
openocd_libswd-98f7c2127b8800e2597493eea2c7ba5c88940b86.zip
target: print reason why GDB halts
If GDB halts unexpectedly, print reason: srst assert or power out detected. If polling fails, then things are a bit trickier. We do not want to spam telnet or the log with polling failed messages. Leave that case be w/a comment in a code for now. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
-rw-r--r--src/target/target.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/target/target.c b/src/target/target.c
index ff5aef34..1eb65a62 100644
--- a/src/target/target.c
+++ b/src/target/target.c
@@ -1767,6 +1767,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);
Jim_Eval(interp, "srst_asserted");
did_something = 1;
@@ -1778,6 +1779,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);
Jim_Eval(interp, "power_dropout");
did_something = 1;
@@ -1820,6 +1822,14 @@ static int handle_target(void *priv)
/* polling may fail silently until the target has been examined */
if ((retval = target_poll(target)) != ERROR_OK)
{
+ /* FIX!!!!! If we add a LOG_INFO() here to output a line in GDB
+ * *why* we are aborting GDB, then we'll spam telnet when the
+ * poll is failing persistently.
+ *
+ * If we could implement an event that detected the
+ * target going from non-pollable to pollable, we could issue
+ * an error only upon the transition.
+ */
target_call_event_callbacks(target, TARGET_EVENT_GDB_HALT);
return retval;
}