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:
Leonard Crestez 2018-08-10 17:09:41 +03:00 committed by Matthias Welwarsky
parent ca7ba6b58d
commit 84e3f63a8c
2 changed files with 24 additions and 3 deletions

View File

@ -3895,10 +3895,14 @@ devices do not set the ack bit until sometime later.
@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
@deffnx Command {jtag configure} dotted.name @option{-event} event_name handler
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}
mechanism for debugger targets.)
See the next section for information about the available events.

View File

@ -307,11 +307,13 @@ static const struct command_registration jtag_command_handlers_to_move[] = {
enum jtag_tap_cfg_param {
JCFG_EVENT
JCFG_EVENT,
JCFG_IDCODE,
};
static Jim_Nvp nvp_config_opts[] = {
{ .name = "-event", .value = JCFG_EVENT },
{ .name = "-idcode", .value = JCFG_IDCODE },
{ .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)
return e;
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:
Jim_SetResultFormatted(goi->interp, "unknown event: %s", n->name);
Jim_SetResultFormatted(goi->interp, "unknown value: %s", n->name);
return JIM_ERR;
}
}