The driver hla defines the command 'hla_serial' to specify the
serial string of the adapter.
The driver st-link defines the command 'st-link serial' to specify
the serial string of the adapter.
Remove and deprecate the driver commands and use 'adapter serial'.
Change-Id: I9505c398a77125b1ebf4ba71da7baf4d663b75be
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6657
Tested-by: jenkins
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:
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, jlink, kitprog, presto, vsllink, xds110.
-The following adapters have their own command to specify the serial string:
-hla, st-link.
+cmsis_dap, ft232r, ftdi, hla, jlink, kitprog, presto, st-link, vsllink, xds110.
@end deffn
@section Interface Drivers
@end deffn
@section Interface Drivers
Currently Not Supported.
@end deffn
Currently Not Supported.
@end deffn
-@deffn {Config Command} {hla_serial} serial
-Specifies the serial number of the adapter.
-@end deffn
-
@deffn {Config Command} {hla_layout} (@option{stlink}|@option{icdi}|@option{nulink})
Specifies the adapter layout to use.
@end deffn
@deffn {Config Command} {hla_layout} (@option{stlink}|@option{icdi}|@option{nulink})
Specifies the adapter layout to use.
@end deffn
@emph{Note:} ST-Link TCP server does not support the SWIM transport.
@end deffn
@emph{Note:} ST-Link TCP server does not support the SWIM transport.
@end deffn
-@deffn {Config Command} {st-link serial} serial
-Specifies the serial number of the adapter.
-@end deffn
-
@deffn {Config Command} {st-link vid_pid} [vid pid]+
Pairs of vendor IDs and product IDs of the device.
@end deffn
@deffn {Config Command} {st-link vid_pid} [vid pid]+
Pairs of vendor IDs and product IDs of the device.
@end deffn
/* project specific includes */
#include <helper/binarybuffer.h>
/* project specific includes */
#include <helper/binarybuffer.h>
+#include <jtag/adapter.h>
#include <jtag/interface.h>
#include <jtag/hla/hla_layout.h>
#include <jtag/hla/hla_transport.h>
#include <jtag/interface.h>
#include <jtag/hla/hla_layout.h>
#include <jtag/hla/hla_transport.h>
- if (param->serial) {
- size_t len = mbstowcs(NULL, param->serial, 0);
+ const char *serial = adapter_get_required_serial();
+ if (serial) {
+ size_t len = mbstowcs(NULL, serial, 0);
target_serial = calloc(len + 1, sizeof(wchar_t));
if (!target_serial) {
target_serial = calloc(len + 1, sizeof(wchar_t));
if (!target_serial) {
- if (mbstowcs(target_serial, param->serial, len + 1) == (size_t)(-1)) {
+ if (mbstowcs(target_serial, serial, len + 1) == (size_t)(-1)) {
LOG_WARNING("unable to convert serial");
free(target_serial);
target_serial = NULL;
LOG_WARNING("unable to convert serial");
free(target_serial);
target_serial = NULL;
#include <helper/bits.h>
#include <helper/system.h>
#include <helper/time_support.h>
#include <helper/bits.h>
#include <helper/system.h>
#include <helper/time_support.h>
+#include <jtag/adapter.h>
#include <jtag/interface.h>
#include <jtag/hla/hla_layout.h>
#include <jtag/hla/hla_transport.h>
#include <jtag/interface.h>
#include <jtag/hla/hla_layout.h>
#include <jtag/hla/hla_transport.h>
in order to become operational.
*/
do {
in order to become operational.
*/
do {
- if (jtag_libusb_open(param->vid, param->pid, param->serial,
+ if (jtag_libusb_open(param->vid, param->pid, adapter_get_required_serial(),
&h->usb_backend_priv.fd, stlink_usb_get_alternate_serial) != ERROR_OK) {
LOG_ERROR("open failed");
return ERROR_FAIL;
&h->usb_backend_priv.fd, stlink_usb_get_alternate_serial) != ERROR_OK) {
LOG_ERROR("open failed");
return ERROR_FAIL;
char serial[STLINK_TCP_SERIAL_SIZE + 1] = {0};
uint8_t stlink_used;
bool stlink_id_matched = false;
char serial[STLINK_TCP_SERIAL_SIZE + 1] = {0};
uint8_t stlink_used;
bool stlink_id_matched = false;
- bool stlink_serial_matched = (!param->serial);
+ const char *adapter_serial = adapter_get_required_serial();
+ bool stlink_serial_matched = !adapter_serial;
for (uint32_t stlink_id = 0; stlink_id < connected_stlinks; stlink_id++) {
/* get the stlink info */
for (uint32_t stlink_id = 0; stlink_id < connected_stlinks; stlink_id++) {
/* get the stlink info */
continue;
/* check the serial if specified */
continue;
/* check the serial if specified */
/* ST-Link server fixes the buggy serial returned by old ST-Link DFU
* for further details refer to stlink_usb_get_alternate_serial
* so if the user passes the buggy serial, we need to fix it before
* comparing with the serial returned by ST-Link server */
/* ST-Link server fixes the buggy serial returned by old ST-Link DFU
* for further details refer to stlink_usb_get_alternate_serial
* so if the user passes the buggy serial, we need to fix it before
* comparing with the serial returned by ST-Link server */
- if (strlen(param->serial) == STLINK_SERIAL_LEN / 2) {
+ if (strlen(adapter_serial) == STLINK_SERIAL_LEN / 2) {
char fixed_serial[STLINK_SERIAL_LEN + 1];
for (unsigned int i = 0; i < STLINK_SERIAL_LEN; i += 2)
char fixed_serial[STLINK_SERIAL_LEN + 1];
for (unsigned int i = 0; i < STLINK_SERIAL_LEN; i += 2)
- sprintf(fixed_serial + i, "%02X", param->serial[i / 2]);
+ sprintf(fixed_serial + i, "%02X", adapter_serial[i / 2]);
fixed_serial[STLINK_SERIAL_LEN] = '\0';
stlink_serial_matched = strcmp(fixed_serial, serial) == 0;
fixed_serial[STLINK_SERIAL_LEN] = '\0';
stlink_serial_matched = strcmp(fixed_serial, serial) == 0;
- } else
- stlink_serial_matched = strcmp(param->serial, serial) == 0;
+ } else {
+ stlink_serial_matched = strcmp(adapter_serial, serial) == 0;
+ }
}
if (!stlink_serial_matched)
LOG_DEBUG("Device serial number '%s' doesn't match requested serial '%s'",
}
if (!stlink_serial_matched)
LOG_DEBUG("Device serial number '%s' doesn't match requested serial '%s'",
- serial, param->serial);
+ serial, adapter_serial);
else /* exit the search loop if there is match */
break;
}
else /* exit the search loop if there is match */
break;
}
for (unsigned i = 0; param->vid[i]; i++) {
LOG_DEBUG("transport: %d vid: 0x%04x pid: 0x%04x serial: %s",
h->st_mode, param->vid[i], param->pid[i],
for (unsigned i = 0; param->vid[i]; i++) {
LOG_DEBUG("transport: %d vid: 0x%04x pid: 0x%04x serial: %s",
h->st_mode, param->vid[i], param->pid[i],
- param->serial ? param->serial : "");
+ adapter_get_required_serial() ? adapter_get_required_serial() : "");
}
if (param->use_stlink_tcp)
}
if (param->use_stlink_tcp)
return stlink_usb_trace_read(stlink_dap_handle, buf, size);
}
return stlink_usb_trace_read(stlink_dap_handle, buf, size);
}
-/** */
-COMMAND_HANDLER(stlink_dap_serial_command)
-{
- LOG_DEBUG("stlink_dap_serial_command");
-
- if (CMD_ARGC != 1) {
- LOG_ERROR("Expected exactly one argument for \"st-link serial <serial-number>\".");
- return ERROR_COMMAND_SYNTAX_ERROR;
- }
-
- if (stlink_dap_param.serial) {
- LOG_WARNING("Command \"st-link serial\" already used. Replacing previous value");
- free((void *)stlink_dap_param.serial);
- }
-
- stlink_dap_param.serial = strdup(CMD_ARGV[0]);
- return ERROR_OK;
-}
-
/** */
COMMAND_HANDLER(stlink_dap_vid_pid)
{
/** */
COMMAND_HANDLER(stlink_dap_vid_pid)
{
/** */
static const struct command_registration stlink_dap_subcommand_handlers[] = {
/** */
static const struct command_registration stlink_dap_subcommand_handlers[] = {
- {
- .name = "serial",
- .handler = stlink_dap_serial_command,
- .mode = COMMAND_CONFIG,
- .help = "set the serial number of the adapter",
- .usage = "<serial_number>",
- },
{
.name = "vid_pid",
.handler = stlink_dap_vid_pid,
{
.name = "vid_pid",
.handler = stlink_dap_vid_pid,
{
LOG_DEBUG("stlink_dap_quit()");
{
LOG_DEBUG("stlink_dap_quit()");
- free((void *)stlink_dap_param.serial);
- stlink_dap_param.serial = NULL;
-
return stlink_close(stlink_dap_handle);
}
return stlink_close(stlink_dap_handle);
}
/* project specific includes */
#include <helper/binarybuffer.h>
/* project specific includes */
#include <helper/binarybuffer.h>
+#include <jtag/adapter.h>
#include <jtag/interface.h>
#include <jtag/hla/hla_layout.h>
#include <jtag/hla/hla_transport.h>
#include <jtag/interface.h>
#include <jtag/hla/hla_layout.h>
#include <jtag/hla/hla_transport.h>
for (uint8_t i = 0; param->vid[i] && param->pid[i]; ++i)
LOG_DEBUG("transport: %d vid: 0x%04x pid: 0x%04x serial: %s", param->transport,
for (uint8_t i = 0; param->vid[i] && param->pid[i]; ++i)
LOG_DEBUG("transport: %d vid: 0x%04x pid: 0x%04x serial: %s", param->transport,
- param->vid[i], param->pid[i], param->serial ? param->serial : "");
+ param->vid[i], param->pid[i], adapter_get_required_serial() ? adapter_get_required_serial() : "");
/* TI (Stellaris) ICDI provides its serial number in the USB descriptor;
no need to provide a callback here. */
/* TI (Stellaris) ICDI provides its serial number in the USB descriptor;
no need to provide a callback here. */
- jtag_libusb_open(param->vid, param->pid, param->serial, &h->usb_dev, NULL);
+ jtag_libusb_open(param->vid, param->pid, adapter_get_required_serial(), &h->usb_dev, NULL);
if (!h->usb_dev) {
LOG_ERROR("open failed");
if (!h->usb_dev) {
LOG_ERROR("open failed");
static struct hl_interface_s hl_if = {
.param = {
.device_desc = NULL,
static struct hl_interface_s hl_if = {
.param = {
.device_desc = NULL,
.vid = { 0 },
.pid = { 0 },
.transport = HL_TRANSPORT_UNKNOWN,
.vid = { 0 },
.pid = { 0 },
.transport = HL_TRANSPORT_UNKNOWN,
jtag_command_queue_reset();
free((void *)hl_if.param.device_desc);
jtag_command_queue_reset();
free((void *)hl_if.param.device_desc);
- free((void *)hl_if.param.serial);
-COMMAND_HANDLER(hl_interface_handle_serial_command)
-{
- LOG_DEBUG("hl_interface_handle_serial_command");
-
- if (CMD_ARGC == 1) {
- hl_if.param.serial = strdup(CMD_ARGV[0]);
- } else {
- LOG_ERROR("expected exactly one argument to hl_serial <serial-number>");
- }
-
- return ERROR_OK;
-}
-
COMMAND_HANDLER(hl_interface_handle_layout_command)
{
LOG_DEBUG("hl_interface_handle_layout_command");
COMMAND_HANDLER(hl_interface_handle_layout_command)
{
LOG_DEBUG("hl_interface_handle_layout_command");
.help = "set the device description of the adapter",
.usage = "description_string",
},
.help = "set the device description of the adapter",
.usage = "description_string",
},
- {
- .name = "hla_serial",
- .handler = &hl_interface_handle_serial_command,
- .mode = COMMAND_CONFIG,
- .help = "set the serial number of the adapter",
- .usage = "serial_string",
- },
{
.name = "hla_layout",
.handler = &hl_interface_handle_layout_command,
{
.name = "hla_layout",
.handler = &hl_interface_handle_layout_command,
struct hl_interface_param_s {
/** */
const char *device_desc;
struct hl_interface_param_s {
/** */
const char *device_desc;
- /** */
- const char *serial;
/** List of recognised VIDs */
uint16_t vid[HLA_MAX_USB_IDS + 1];
/** List of recognised PIDs */
/** List of recognised VIDs */
uint16_t vid[HLA_MAX_USB_IDS + 1];
/** List of recognised PIDs */
eval adapter serial $args
}
eval adapter serial $args
}
+lappend _telnet_autocomplete_skip hla_serial
+proc hla_serial args {
+ echo "DEPRECATED! use 'adapter serial' not 'hla_serial'"
+ eval adapter serial $args
+}
+
lappend _telnet_autocomplete_skip "jlink serial"
proc "jlink serial" {args} {
echo "DEPRECATED! use 'adapter serial' not 'jlink serial'"
lappend _telnet_autocomplete_skip "jlink serial"
proc "jlink serial" {args} {
echo "DEPRECATED! use 'adapter serial' not 'jlink serial'"
eval adapter serial $args
}
eval adapter serial $args
}
+lappend _telnet_autocomplete_skip "st-link serial"
+proc "st-link serial" {args} {
+ echo "DEPRECATED! use 'adapter serial' not 'st-link serial'"
+ eval adapter serial $args
+}
+
lappend _telnet_autocomplete_skip "vsllink usb_serial"
proc "vsllink usb_serial" {args} {
echo "DEPRECATED! use 'adapter serial' not 'vsllink usb_serial'"
lappend _telnet_autocomplete_skip "vsllink usb_serial"
proc "vsllink usb_serial" {args} {
echo "DEPRECATED! use 'adapter serial' not 'vsllink usb_serial'"
# Optionally specify the serial number of usb device
# e.g.
# Optionally specify the serial number of usb device
# e.g.
-# st-link serial "\xaa\xbc\x6e\x06\x50\x75\xff\x55\x17\x42\x19\x3f"
+# adapter serial "\xaa\xbc\x6e\x06\x50\x75\xff\x55\x17\x42\x19\x3f"
# firmware version >= V2.J21.S4 recommended to avoid issues with adapter serial
# number reset issues.
# eg.
# firmware version >= V2.J21.S4 recommended to avoid issues with adapter serial
# number reset issues.
# eg.
-#hla_serial "\xaa\xbc\x6e\x06\x50\x75\xff\x55\x17\x42\x19\x3f"
+# adapter serial "\xaa\xbc\x6e\x06\x50\x75\xff\x55\x17\x42\x19\x3f"
# Optionally specify the serial number of TI-ICDI devices, for when using
# multiple devices. Serial numbers can be obtained using lsusb -v
# Ex.
# Optionally specify the serial number of TI-ICDI devices, for when using
# multiple devices. Serial numbers can be obtained using lsusb -v
# Ex.
+# adapter serial "0F003065"
Linking to existing account procedure
If you already have an account and want to add another login method
you
MUST first sign in with your existing account and
then change URL to read
https://review.openocd.org/login/?link
to get to this page again but this time it'll work for linking. Thank you.
SSH host keys fingerprints
1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=.. |
|+o.. . |
|*.o . . |
|+B . . . |
|Bo. = o S |
|Oo.+ + = |
|oB=.* = . o |
| =+=.+ + E |
|. .=o . o |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)