diff options
author | Leonard Crestez <leonard.crestez@nxp.com> | 2018-08-10 17:09:41 +0300 |
---|---|---|
committer | Matthias Welwarsky <matthias@welwarsky.de> | 2019-04-10 10:16:06 +0100 |
commit | 84e3f63a8ce170c3889a8cfe3ef885d8d7353844 (patch) | |
tree | 154db3a4e9a3139fd07fca1a4153667eabef2a2a | |
parent | ca7ba6b58d2246547f156944be5326cf51c476ac (diff) | |
download | riscv-openocd-84e3f63a8ce170c3889a8cfe3ef885d8d7353844.zip riscv-openocd-84e3f63a8ce170c3889a8cfe3ef885d8d7353844.tar.gz riscv-openocd-84e3f63a8ce170c3889a8cfe3ef885d8d7353844.tar.bz2 |
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>
-rw-r--r-- | doc/openocd.texi | 6 | ||||
-rw-r--r-- | src/jtag/tcl.c | 21 |
2 files changed, 24 insertions, 3 deletions
diff --git a/doc/openocd.texi b/doc/openocd.texi index feb4334..81a9135 100644 --- a/doc/openocd.texi +++ b/doc/openocd.texi @@ -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. diff --git a/src/jtag/tcl.c b/src/jtag/tcl.c index 7683014..71d220b 100644 --- a/src/jtag/tcl.c +++ b/src/jtag/tcl.c @@ -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; } } |