X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fopenocd.c;h=449736e1615901a75508ccfa39b8fda31639e7d8;hb=53c41935cd72687ffb7f6b408a824f8e40f82ee9;hp=71963cb965c13d368a3b3c7f63803faf7116a53e;hpb=a0647227439434c4a71470e336ec8715d43d0501;p=openocd diff --git a/src/openocd.c b/src/openocd.c index 71963cb9..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,14 +96,31 @@ int handle_init_command(struct command_context_s *cmd_ctx, char *cmd, char **arg atexit(exit_handler); - 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 ((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; LOG_DEBUG("flash init complete");