diff options
author | Marc Schink <openocd-dev@marcschink.de> | 2017-09-02 10:10:00 +0200 |
---|---|---|
committer | Spencer Oliver <spen@spen-soft.co.uk> | 2017-10-03 11:18:52 +0100 |
commit | 98e63cdc86243cf91fc0da56479acef240313d19 (patch) | |
tree | c7fa66947f2af9e69b9b59a61abd5836bdf72ea1 | |
parent | f981730fe76c1b8341f84f2ab004bedc0082f99e (diff) | |
download | riscv-openocd-98e63cdc86243cf91fc0da56479acef240313d19.zip riscv-openocd-98e63cdc86243cf91fc0da56479acef240313d19.tar.gz riscv-openocd-98e63cdc86243cf91fc0da56479acef240313d19.tar.bz2 |
jlink: Disable automatic device selection
If multiple devices are attached, do not automatically use the first
device found. Otherwise, a user may unintentionally operate on the
wrong device.
Change-Id: I08c4110b82e911e9e3e744d41830ffc6c56c44bf
Signed-off-by: Marc Schink <openocd-dev@marcschink.de>
Reviewed-on: http://openocd.zylin.com/4213
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
-rw-r--r-- | src/jtag/drivers/jlink.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/jtag/drivers/jlink.c b/src/jtag/drivers/jlink.c index 955adf8..ac6e997 100644 --- a/src/jtag/drivers/jlink.c +++ b/src/jtag/drivers/jlink.c @@ -546,6 +546,7 @@ static int jlink_init(void) struct jaylink_hardware_status hwstatus; enum jaylink_usb_address address; size_t length; + size_t num_devices; LOG_DEBUG("Using libjaylink %s (compiled with %s).", jaylink_version_package_get_string(), JAYLINK_VERSION_PACKAGE_STRING); @@ -580,7 +581,7 @@ static int jlink_init(void) return ERROR_JTAG_INIT_FAILED; } - ret = jaylink_get_devices(jayctx, &devs, NULL); + ret = jaylink_get_devices(jayctx, &devs, &num_devices); if (ret != JAYLINK_OK) { LOG_ERROR("jaylink_get_devices() failed: %s.", jaylink_strerror(ret)); @@ -588,10 +589,14 @@ static int jlink_init(void) return ERROR_JTAG_INIT_FAILED; } - found_device = false; + if (!use_serial_number && !use_usb_address && num_devices > 1) { + LOG_ERROR("Multiple devices found, specify the desired device."); + jaylink_free_devices(devs, true); + jaylink_exit(jayctx); + return ERROR_JTAG_INIT_FAILED; + } - if (!use_serial_number && !use_usb_address) - LOG_INFO("No device selected, using first device."); + found_device = false; for (i = 0; devs[i]; i++) { if (use_serial_number) { |