Introduced jtag_init and "jtag arp_init" to allow target scripts more control over how OpenOCD starts up and initializes the target.
git-svn-id: svn://svn.berlios.de/openocd/trunk@2805 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
parent
a2886fe3c6
commit
39b57471bf
|
@ -359,3 +359,13 @@ proc capture_catch {a} {
|
|||
} result
|
||||
return $result
|
||||
}
|
||||
|
||||
|
||||
# Executed during "init". Can be implemented by target script
|
||||
# tar
|
||||
proc jtag_init {} {
|
||||
if {[catch {jtag arp_init} err]!=0} {
|
||||
# try resetting additionally
|
||||
jtag arp_init-reset
|
||||
}
|
||||
}
|
|
@ -1,16 +1,16 @@
|
|||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Dominic Rath *
|
||||
* Dominic.Rath@gmx.de *
|
||||
* Copyright (C) 2009 Zachary T Welch *
|
||||
* zw@superlucidity.net *
|
||||
* *
|
||||
* Copyright (C) 2007,2008 Øyvind Harboe *
|
||||
* Copyright (C) 2007,2008,2009 Øyvind Harboe *
|
||||
* oyvind.harboe@zylin.com *
|
||||
* *
|
||||
* Copyright (C) 2009 SoftPLC Corporation *
|
||||
* http://softplc.com *
|
||||
* dick@softplc.com *
|
||||
* *
|
||||
* Copyright (C) 2009 Zachary T Welch *
|
||||
* zw@superlucidity.net *
|
||||
* Copyright (C) 2005 by Dominic Rath *
|
||||
* Dominic.Rath@gmx.de *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
|
@ -1230,7 +1230,7 @@ int jtag_interface_init(struct command_context_s *cmd_ctx)
|
|||
return ERROR_OK;
|
||||
}
|
||||
|
||||
static int jtag_init_inner(struct command_context_s *cmd_ctx)
|
||||
int jtag_init_inner(struct command_context_s *cmd_ctx)
|
||||
{
|
||||
jtag_tap_t *tap;
|
||||
int retval;
|
||||
|
@ -1334,11 +1334,11 @@ int jtag_init(struct command_context_s *cmd_ctx)
|
|||
int retval;
|
||||
if ((retval = jtag_interface_init(cmd_ctx)) != ERROR_OK)
|
||||
return retval;
|
||||
if (jtag_init_inner(cmd_ctx) == ERROR_OK)
|
||||
{
|
||||
return ERROR_OK;
|
||||
}
|
||||
return jtag_init_reset(cmd_ctx);
|
||||
|
||||
if (Jim_Eval_Named(interp, "jtag_init", __FILE__, __LINE__) != JIM_OK)
|
||||
return ERROR_FAIL;
|
||||
|
||||
return ERROR_OK;
|
||||
}
|
||||
|
||||
unsigned jtag_get_speed_khz(void)
|
||||
|
|
|
@ -335,8 +335,9 @@ extern int jtag_interface_quit(void);
|
|||
extern int jtag_init(struct command_context_s* cmd_ctx);
|
||||
|
||||
/// reset, then initialize JTAG chain
|
||||
extern int jtag_init_reset(struct command_context_s* cmd_ctx);
|
||||
extern int jtag_register_commands(struct command_context_s* cmd_ctx);
|
||||
extern int jtag_init_reset(struct command_context_s* cmd_ctx);
|
||||
extern int jtag_register_commands(struct command_context_s* cmd_ctx);
|
||||
extern int jtag_init_inner(struct command_context_s *cmd_ctx);
|
||||
|
||||
/**
|
||||
* @file
|
||||
|
|
|
@ -410,6 +410,7 @@ static int jim_jtag_command(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
|
|||
|
||||
enum {
|
||||
JTAG_CMD_INTERFACE,
|
||||
JTAG_CMD_INIT,
|
||||
JTAG_CMD_INIT_RESET,
|
||||
JTAG_CMD_NEWTAP,
|
||||
JTAG_CMD_TAPENABLE,
|
||||
|
@ -422,6 +423,7 @@ static int jim_jtag_command(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
|
|||
|
||||
const Jim_Nvp jtag_cmds[] = {
|
||||
{ .name = "interface" , .value = JTAG_CMD_INTERFACE },
|
||||
{ .name = "arp_init" , .value = JTAG_CMD_INIT },
|
||||
{ .name = "arp_init-reset", .value = JTAG_CMD_INIT_RESET },
|
||||
{ .name = "newtap" , .value = JTAG_CMD_NEWTAP },
|
||||
{ .name = "tapisenabled" , .value = JTAG_CMD_TAPISENABLED },
|
||||
|
@ -455,6 +457,17 @@ static int jim_jtag_command(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
|
|||
}
|
||||
Jim_SetResultString(goi.interp, jtag_interface->name, -1);
|
||||
return JIM_OK;
|
||||
case JTAG_CMD_INIT:
|
||||
if (goi.argc != 0) {
|
||||
Jim_WrongNumArgs(goi.interp, 1, goi.argv-1, "(no params)");
|
||||
return JIM_ERR;
|
||||
}
|
||||
e = jtag_init_inner(context);
|
||||
if (e != ERROR_OK) {
|
||||
Jim_SetResult_sprintf(goi.interp, "error: %d", e);
|
||||
return JIM_ERR;
|
||||
}
|
||||
return JIM_OK;
|
||||
case JTAG_CMD_INIT_RESET:
|
||||
if (goi.argc != 0) {
|
||||
Jim_WrongNumArgs(goi.interp, 1, goi.argv-1, "(no params)");
|
||||
|
|
Loading…
Reference in New Issue