summaryrefslogtreecommitdiff
path: root/src/openocd.c
diff options
context:
space:
mode:
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-04-13 11:42:49 +0000
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-04-13 11:42:49 +0000
commit7de51ceef9741b7d2bed6b34194345c5be90f6a1 (patch)
treeb93af5ac85ba7343e3bdc3fdd64db9af4daf3d9b /src/openocd.c
parentd9f50cb7d6a8b60cf425d8f87ba0907bffd15233 (diff)
downloadopenocd+libswd-7de51ceef9741b7d2bed6b34194345c5be90f6a1.tar.gz
openocd+libswd-7de51ceef9741b7d2bed6b34194345c5be90f6a1.tar.bz2
openocd+libswd-7de51ceef9741b7d2bed6b34194345c5be90f6a1.tar.xz
openocd+libswd-7de51ceef9741b7d2bed6b34194345c5be90f6a1.zip
allows launching OpenOCD w/telnet+gdb server w/the
target powered down. git-svn-id: svn://svn.berlios.de/openocd/trunk@570 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/openocd.c')
-rw-r--r--src/openocd.c32
1 files changed, 21 insertions, 11 deletions
diff --git a/src/openocd.c b/src/openocd.c
index 3c7816ea..449736e1 100644
--- a/src/openocd.c
+++ b/src/openocd.c
@@ -85,6 +85,7 @@ void exit_handler(void)
/* OpenOCD can't really handle failure of this command. Patches welcome! :-) */
int handle_init_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
{
+ int retval;
static int initialized=0;
if (initialized)
return ERROR_OK;
@@ -95,21 +96,30 @@ int handle_init_command(struct command_context_s *cmd_ctx, char *cmd, char **arg
atexit(exit_handler);
- /* FIX!!! this should happen *after* target_init(), but
- * for now there are target initialisations that talk
- * to JTAG whereas that *should* happen during target_examine()
- */
- if (jtag_init(cmd_ctx) != ERROR_OK)
- return ERROR_FAIL;
- LOG_DEBUG("jtag init complete");
-
+
if (target_init(cmd_ctx) != ERROR_OK)
return ERROR_FAIL;
LOG_DEBUG("target init complete");
- if (target_examine(cmd_ctx) != ERROR_OK)
- return ERROR_FAIL;
- LOG_DEBUG("target examine complete");
+ if ((retval=jtag_interface_init(cmd_ctx)) != ERROR_OK)
+ {
+ /* we must be able to set up the jtag interface */
+ return retval;
+ }
+ LOG_DEBUG("jtag interface init complete");
+
+ /* Try to initialize & examine the JTAG chain at this point, but
+ * continue startup regardless
+ */
+ if (jtag_init(cmd_ctx) == ERROR_OK)
+ {
+ LOG_DEBUG("jtag init complete");
+ if (target_examine(cmd_ctx) == ERROR_OK)
+ {
+ LOG_DEBUG("jtag examine complete");
+ }
+ }
+
if (flash_init_drivers(cmd_ctx) != ERROR_OK)
return ERROR_FAIL;