jtag: tcl: Add cget -idcode
This can be used to dynamically distinguish between similar chips in tcl code. Change-Id: Ic4dfb61693e78616355173142dc7f9b9683a9f73 Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com> Reviewed-on: http://openocd.zylin.com/5033 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
This commit is contained in:
parent
ca7ba6b58d
commit
84e3f63a8c
|
@ -3895,10 +3895,14 @@ devices do not set the ack bit until sometime later.
|
||||||
|
|
||||||
@section Other TAP commands
|
@section Other TAP commands
|
||||||
|
|
||||||
|
@deffn Command {jtag cget} dotted.name @option{-idcode}
|
||||||
|
Get the value of the IDCODE found in hardware.
|
||||||
|
@end deffn
|
||||||
|
|
||||||
@deffn Command {jtag cget} dotted.name @option{-event} event_name
|
@deffn Command {jtag cget} dotted.name @option{-event} event_name
|
||||||
@deffnx Command {jtag configure} dotted.name @option{-event} event_name handler
|
@deffnx Command {jtag configure} dotted.name @option{-event} event_name handler
|
||||||
At this writing this TAP attribute
|
At this writing this TAP attribute
|
||||||
mechanism is used only for event handling.
|
mechanism is limited and used mostly for event handling.
|
||||||
(It is not a direct analogue of the @code{cget}/@code{configure}
|
(It is not a direct analogue of the @code{cget}/@code{configure}
|
||||||
mechanism for debugger targets.)
|
mechanism for debugger targets.)
|
||||||
See the next section for information about the available events.
|
See the next section for information about the available events.
|
||||||
|
|
|
@ -307,11 +307,13 @@ static const struct command_registration jtag_command_handlers_to_move[] = {
|
||||||
|
|
||||||
|
|
||||||
enum jtag_tap_cfg_param {
|
enum jtag_tap_cfg_param {
|
||||||
JCFG_EVENT
|
JCFG_EVENT,
|
||||||
|
JCFG_IDCODE,
|
||||||
};
|
};
|
||||||
|
|
||||||
static Jim_Nvp nvp_config_opts[] = {
|
static Jim_Nvp nvp_config_opts[] = {
|
||||||
{ .name = "-event", .value = JCFG_EVENT },
|
{ .name = "-event", .value = JCFG_EVENT },
|
||||||
|
{ .name = "-idcode", .value = JCFG_IDCODE },
|
||||||
|
|
||||||
{ .name = NULL, .value = -1 }
|
{ .name = NULL, .value = -1 }
|
||||||
};
|
};
|
||||||
|
@ -404,8 +406,23 @@ static int jtag_tap_configure_cmd(Jim_GetOptInfo *goi, struct jtag_tap *tap)
|
||||||
if (e != JIM_OK)
|
if (e != JIM_OK)
|
||||||
return e;
|
return e;
|
||||||
break;
|
break;
|
||||||
|
case JCFG_IDCODE:
|
||||||
|
if (goi->isconfigure) {
|
||||||
|
Jim_SetResultFormatted(goi->interp,
|
||||||
|
"not settable: %s", n->name);
|
||||||
|
return JIM_ERR;
|
||||||
|
} else {
|
||||||
|
if (goi->argc != 0) {
|
||||||
|
Jim_WrongNumArgs(goi->interp,
|
||||||
|
goi->argc, goi->argv,
|
||||||
|
"NO PARAMS");
|
||||||
|
return JIM_ERR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Jim_SetResult(goi->interp, Jim_NewIntObj(goi->interp, tap->idcode));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
Jim_SetResultFormatted(goi->interp, "unknown event: %s", n->name);
|
Jim_SetResultFormatted(goi->interp, "unknown value: %s", n->name);
|
||||||
return JIM_ERR;
|
return JIM_ERR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue