jtag/cmsis_dap: switch to command 'adapter serial'

The driver cmsis_dap defines the command 'cmsis_dap_serial' to
specify the serial string of the adapter.

Remove and deprecate the driver command, and use 'adapter serial'.

Change-Id: I88e2d4de360a6c6f23529bb18494962a267250df
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6649
Tested-by: jenkins
This commit is contained in:
Antonio Borneo 2021-10-07 19:42:54 +02:00
parent a3b69dee62
commit 248161cbf4
7 changed files with 15 additions and 33 deletions

View File

@ -2370,9 +2370,10 @@ This command is only available if your libusb1 is at least version 1.0.16.
@deffn {Config Command} {adapter serial} serial_string @deffn {Config Command} {adapter serial} serial_string
Specifies the @var{serial_string} of the adapter to use. Specifies the @var{serial_string} of the adapter to use.
If this command is not specified, serial strings are not checked. If this command is not specified, serial strings are not checked.
No adapter uses this command, so far. Only the following adapter drivers use the serial string from this command:
cmsis_dap.
The following adapters have their own command to specify the serial string: The following adapters have their own command to specify the serial string:
cmsis_dap, ft232r, ftdi, hla, jlink, kitprog, presto, st-link, vsllink, xds110. ft232r, ftdi, hla, jlink, kitprog, presto, st-link, vsllink, xds110.
@end deffn @end deffn
@section Interface Drivers @section Interface Drivers
@ -2427,11 +2428,6 @@ cmsis_dap_vid_pid 0xc251 0xf001 0x0d28 0x0204
@end example @end example
@end deffn @end deffn
@deffn {Config Command} {cmsis_dap_serial} [serial]
Specifies the @var{serial} of the CMSIS-DAP device to use.
If not specified, serial numbers are not considered.
@end deffn
@deffn {Config Command} {cmsis_dap_backend} [@option{auto}|@option{usb_bulk}|@option{hid}] @deffn {Config Command} {cmsis_dap_backend} [@option{auto}|@option{usb_bulk}|@option{hid}]
Specifies how to communicate with the adapter: Specifies how to communicate with the adapter:

View File

@ -76,7 +76,6 @@ static const struct cmsis_dap_backend *const cmsis_dap_backends[] = {
/* vid = pid = 0 marks the end of the list */ /* vid = pid = 0 marks the end of the list */
static uint16_t cmsis_dap_vid[MAX_USB_IDS + 1] = { 0 }; static uint16_t cmsis_dap_vid[MAX_USB_IDS + 1] = { 0 };
static uint16_t cmsis_dap_pid[MAX_USB_IDS + 1] = { 0 }; static uint16_t cmsis_dap_pid[MAX_USB_IDS + 1] = { 0 };
static char *cmsis_dap_serial;
static int cmsis_dap_backend = -1; static int cmsis_dap_backend = -1;
static bool swd_mode; static bool swd_mode;
@ -289,13 +288,13 @@ static int cmsis_dap_open(void)
if (cmsis_dap_backend >= 0) { if (cmsis_dap_backend >= 0) {
/* Use forced backend */ /* Use forced backend */
backend = cmsis_dap_backends[cmsis_dap_backend]; backend = cmsis_dap_backends[cmsis_dap_backend];
if (backend->open(dap, cmsis_dap_vid, cmsis_dap_pid, cmsis_dap_serial) != ERROR_OK) if (backend->open(dap, cmsis_dap_vid, cmsis_dap_pid, adapter_get_required_serial()) != ERROR_OK)
backend = NULL; backend = NULL;
} else { } else {
/* Try all backends */ /* Try all backends */
for (unsigned int i = 0; i < ARRAY_SIZE(cmsis_dap_backends); i++) { for (unsigned int i = 0; i < ARRAY_SIZE(cmsis_dap_backends); i++) {
backend = cmsis_dap_backends[i]; backend = cmsis_dap_backends[i];
if (backend->open(dap, cmsis_dap_vid, cmsis_dap_pid, cmsis_dap_serial) == ERROR_OK) if (backend->open(dap, cmsis_dap_vid, cmsis_dap_pid, adapter_get_required_serial()) == ERROR_OK)
break; break;
else else
backend = NULL; backend = NULL;
@ -325,8 +324,6 @@ static void cmsis_dap_close(struct cmsis_dap *dap)
free(cmsis_dap_handle->packet_buffer); free(cmsis_dap_handle->packet_buffer);
free(cmsis_dap_handle); free(cmsis_dap_handle);
cmsis_dap_handle = NULL; cmsis_dap_handle = NULL;
free(cmsis_dap_serial);
cmsis_dap_serial = NULL;
for (int i = 0; i < MAX_PENDING_REQUESTS; i++) { for (int i = 0; i < MAX_PENDING_REQUESTS; i++) {
free(pending_fifo[i].transfers); free(pending_fifo[i].transfers);
@ -2056,16 +2053,6 @@ COMMAND_HANDLER(cmsis_dap_handle_vid_pid_command)
return ERROR_OK; return ERROR_OK;
} }
COMMAND_HANDLER(cmsis_dap_handle_serial_command)
{
if (CMD_ARGC == 1)
cmsis_dap_serial = strdup(CMD_ARGV[0]);
else
LOG_ERROR("expected exactly one argument to cmsis_dap_serial <serial-number>");
return ERROR_OK;
}
COMMAND_HANDLER(cmsis_dap_handle_backend_command) COMMAND_HANDLER(cmsis_dap_handle_backend_command)
{ {
if (CMD_ARGC == 1) { if (CMD_ARGC == 1) {
@ -2122,13 +2109,6 @@ static const struct command_registration cmsis_dap_command_handlers[] = {
.help = "the vendor ID and product ID of the CMSIS-DAP device", .help = "the vendor ID and product ID of the CMSIS-DAP device",
.usage = "(vid pid)*", .usage = "(vid pid)*",
}, },
{
.name = "cmsis_dap_serial",
.handler = &cmsis_dap_handle_serial_command,
.mode = COMMAND_CONFIG,
.help = "set the serial number of the adapter",
.usage = "serial_string",
},
{ {
.name = "cmsis_dap_backend", .name = "cmsis_dap_backend",
.handler = &cmsis_dap_handle_backend_command, .handler = &cmsis_dap_handle_backend_command,

View File

@ -24,7 +24,7 @@ struct cmsis_dap {
struct cmsis_dap_backend { struct cmsis_dap_backend {
const char *name; const char *name;
int (*open)(struct cmsis_dap *dap, uint16_t vids[], uint16_t pids[], char *serial); int (*open)(struct cmsis_dap *dap, uint16_t vids[], uint16_t pids[], const char *serial);
void (*close)(struct cmsis_dap *dap); void (*close)(struct cmsis_dap *dap);
int (*read)(struct cmsis_dap *dap, int timeout_ms); int (*read)(struct cmsis_dap *dap, int timeout_ms);
int (*write)(struct cmsis_dap *dap, int len, int timeout_ms); int (*write)(struct cmsis_dap *dap, int len, int timeout_ms);

View File

@ -55,7 +55,7 @@ static int cmsis_dap_usb_interface = -1;
static void cmsis_dap_usb_close(struct cmsis_dap *dap); static void cmsis_dap_usb_close(struct cmsis_dap *dap);
static int cmsis_dap_usb_alloc(struct cmsis_dap *dap, unsigned int pkt_sz); static int cmsis_dap_usb_alloc(struct cmsis_dap *dap, unsigned int pkt_sz);
static int cmsis_dap_usb_open(struct cmsis_dap *dap, uint16_t vids[], uint16_t pids[], char *serial) static int cmsis_dap_usb_open(struct cmsis_dap *dap, uint16_t vids[], uint16_t pids[], const char *serial)
{ {
int err; int err;
struct libusb_context *ctx; struct libusb_context *ctx;

View File

@ -48,7 +48,7 @@ struct cmsis_dap_backend_data {
static void cmsis_dap_hid_close(struct cmsis_dap *dap); static void cmsis_dap_hid_close(struct cmsis_dap *dap);
static int cmsis_dap_hid_alloc(struct cmsis_dap *dap, unsigned int pkt_sz); static int cmsis_dap_hid_alloc(struct cmsis_dap *dap, unsigned int pkt_sz);
static int cmsis_dap_hid_open(struct cmsis_dap *dap, uint16_t vids[], uint16_t pids[], char *serial) static int cmsis_dap_hid_open(struct cmsis_dap *dap, uint16_t vids[], uint16_t pids[], const char *serial)
{ {
hid_device *dev = NULL; hid_device *dev = NULL;
int i; int i;

View File

@ -741,4 +741,10 @@ proc "aice serial" {args} {
eval adapter serial $args eval adapter serial $args
} }
lappend _telnet_autocomplete_skip cmsis_dap_serial
proc cmsis_dap_serial args {
echo "DEPRECATED! use 'adapter serial' not 'cmsis_dap_serial'"
eval adapter serial $args
}
# END MIGRATION AIDS # END MIGRATION AIDS

View File

@ -7,4 +7,4 @@
adapter driver cmsis-dap adapter driver cmsis-dap
# Optionally specify the serial number of CMSIS-DAP usb device. # Optionally specify the serial number of CMSIS-DAP usb device.
#cmsis_dap_serial 02200201E6661E601B98E3B9 # adapter serial 02200201E6661E601B98E3B9