aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonio Borneo <borneo.antonio@gmail.com>2021-10-08 11:53:56 +0200
committerAntonio Borneo <borneo.antonio@gmail.com>2021-11-28 11:00:55 +0000
commitad18c1a47fb8f3eaae66a7314700a1f186391359 (patch)
tree0281335833c290c7e49966f1ab7bfdd8e5943f02
parent61a2f3284b984abee0ffd1166ecd79a0ea82976e (diff)
downloadriscv-openocd-ad18c1a47fb8f3eaae66a7314700a1f186391359.zip
riscv-openocd-ad18c1a47fb8f3eaae66a7314700a1f186391359.tar.gz
riscv-openocd-ad18c1a47fb8f3eaae66a7314700a1f186391359.tar.bz2
jtag/jlink: switch to command 'adapter serial'
The driver jlink defines the command 'jlink serial' to specify the serial string of the adapter. Remove and deprecate the driver command, and use 'adapter serial'. Note: in former code the commands 'jlink serial' and 'jlink usb' were mutually exclusive; running one of them would invalidate the effect of a previous execution of the other. The new code gives priority to 'adapter serial', even if executed before 'jlink usb'. Change-Id: I920b0c136716f459b6fd6f7da8a01a7fa1ed389f Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: https://review.openocd.org/c/openocd/+/6656 Reviewed-by: zapb <dev@zapb.de> Tested-by: jenkins
-rw-r--r--doc/openocd.texi10
-rw-r--r--src/jtag/drivers/jlink.c51
-rw-r--r--src/jtag/startup.tcl6
-rw-r--r--tcl/interface/jlink.cfg2
4 files changed, 26 insertions, 43 deletions
diff --git a/doc/openocd.texi b/doc/openocd.texi
index 78451c7..58e533f 100644
--- a/doc/openocd.texi
+++ b/doc/openocd.texi
@@ -2371,9 +2371,9 @@ This command is only available if your libusb1 is at least version 1.0.16.
Specifies the @var{serial_string} of the adapter to use.
If this command is not specified, serial strings are not checked.
Only the following adapter drivers use the serial string from this command:
-cmsis_dap, ft232r, ftdi, kitprog, presto, vsllink, xds110.
+cmsis_dap, ft232r, ftdi, jlink, kitprog, presto, vsllink, xds110.
The following adapters have their own command to specify the serial string:
-hla, jlink, st-link.
+hla, st-link.
@end deffn
@section Interface Drivers
@@ -2850,12 +2850,6 @@ the serial number instead, if possible.
As a configuration command, it can be used only before 'init'.
@end deffn
-@deffn {Config Command} {jlink serial} <serial number>
-Set the serial number of the interface, in case more than one adapter is
-connected to the host. If not specified, serial numbers are not considered.
-
-As a configuration command, it can be used only before 'init'.
-@end deffn
@end deffn
@deffn {Interface Driver} {kitprog}
diff --git a/src/jtag/drivers/jlink.c b/src/jtag/drivers/jlink.c
index 0414ec7..fdf4ae7 100644
--- a/src/jtag/drivers/jlink.c
+++ b/src/jtag/drivers/jlink.c
@@ -669,6 +669,23 @@ static int jlink_init(void)
return ERROR_JTAG_INIT_FAILED;
}
+ const char *serial = adapter_get_required_serial();
+ if (serial) {
+ ret = jaylink_parse_serial_number(serial, &serial_number);
+ if (ret == JAYLINK_ERR) {
+ LOG_ERROR("Invalid serial number: %s", serial);
+ jaylink_exit(jayctx);
+ return ERROR_JTAG_INIT_FAILED;
+ }
+ if (ret != JAYLINK_OK) {
+ LOG_ERROR("jaylink_parse_serial_number() failed: %s", jaylink_strerror(ret));
+ jaylink_exit(jayctx);
+ return ERROR_JTAG_INIT_FAILED;
+ }
+ use_serial_number = true;
+ use_usb_address = false;
+ }
+
bool found_device;
ret = jlink_open_device(JAYLINK_HIF_USB, &found_device);
if (ret != ERROR_OK)
@@ -979,38 +996,11 @@ COMMAND_HANDLER(jlink_usb_command)
usb_address = tmp;
- use_serial_number = false;
use_usb_address = true;
return ERROR_OK;
}
-COMMAND_HANDLER(jlink_serial_command)
-{
- int ret;
-
- if (CMD_ARGC != 1) {
- command_print(CMD, "Need exactly one argument for jlink serial");
- return ERROR_COMMAND_SYNTAX_ERROR;
- }
-
- ret = jaylink_parse_serial_number(CMD_ARGV[0], &serial_number);
-
- if (ret == JAYLINK_ERR) {
- command_print(CMD, "Invalid serial number: %s", CMD_ARGV[0]);
- return ERROR_FAIL;
- } else if (ret != JAYLINK_OK) {
- command_print(CMD, "jaylink_parse_serial_number() failed: %s",
- jaylink_strerror(ret));
- return ERROR_FAIL;
- }
-
- use_serial_number = true;
- use_usb_address = false;
-
- return ERROR_OK;
-}
-
COMMAND_HANDLER(jlink_handle_hwstatus_command)
{
int ret;
@@ -1933,13 +1923,6 @@ static const struct command_registration jlink_subcommand_handlers[] = {
.usage = "<0-3>"
},
{
- .name = "serial",
- .handler = &jlink_serial_command,
- .mode = COMMAND_CONFIG,
- .help = "set the serial number of the device that should be used",
- .usage = "<serial number>"
- },
- {
.name = "config",
.handler = &jlink_handle_config_command,
.mode = COMMAND_EXEC,
diff --git a/src/jtag/startup.tcl b/src/jtag/startup.tcl
index d6c3b85..199ca04 100644
--- a/src/jtag/startup.tcl
+++ b/src/jtag/startup.tcl
@@ -759,6 +759,12 @@ proc "ftdi serial" {args} {
eval adapter serial $args
}
+lappend _telnet_autocomplete_skip "jlink serial"
+proc "jlink serial" {args} {
+ echo "DEPRECATED! use 'adapter serial' not 'jlink serial'"
+ eval adapter serial $args
+}
+
lappend _telnet_autocomplete_skip kitprog_serial
proc kitprog_serial args {
echo "DEPRECATED! use 'adapter serial' not 'kitprog_serial'"
diff --git a/tcl/interface/jlink.cfg b/tcl/interface/jlink.cfg
index 51f420b..f9a18b0 100644
--- a/tcl/interface/jlink.cfg
+++ b/tcl/interface/jlink.cfg
@@ -11,4 +11,4 @@ adapter driver jlink
#
# Example: Select J-Link with serial number 123456789
#
-# jlink serial 123456789
+# adapter serial 123456789