allows launching OpenOCD w/telnet+gdb server w/the
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Sun, 13 Apr 2008 11:42:49 +0000 (11:42 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Sun, 13 Apr 2008 11:42:49 +0000 (11:42 +0000)
target powered down.

git-svn-id: svn://svn.berlios.de/openocd/trunk@570 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/openocd.c

index 3c7816eabb4c12a0edb0b4cd517de5ce1a333fd1..449736e1615901a75508ccfa39b8fda31639e7d8 100644 (file)
@@ -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;