Used jtag_libusb_open from libusb_helper.h instead of
libusb_open_device_with_vid_pid to get device handle,
as well as managing context, i.e. similar to stlink_usb.
Direct calls to libusb1 are left in for the moment.
(When this Gerrit revision was originally created,
the jtag_libusb_ wrappers did not return error conditions.)
Tested w/ a TM4C123GXL board
Change-Id: I71e9a366356c125444d4813e58ddd9b6c6498bf0
Signed-off-by: John Pham <jhnphm@gmail.com>
Signed-off-by: Matthew Trescott <matthewtrescott@gmail.com>
Reviewed-on: http://openocd.zylin.com/2527
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
#include <target/cortex_m.h>
#include <target/cortex_m.h>
+#include "libusb_helper.h"
#define ICDI_WRITE_ENDPOINT 0x02
#define ICDI_READ_ENDPOINT 0x83
#define ICDI_WRITE_ENDPOINT 0x02
#define ICDI_READ_ENDPOINT 0x83
#define PACKET_END "#"
struct icdi_usb_handle_s {
#define PACKET_END "#"
struct icdi_usb_handle_s {
- libusb_context *usb_ctx;
- libusb_device_handle *usb_dev;
+ struct libusb_device_handle *usb_dev;
char *read_buffer;
char *write_buffer;
char *read_buffer;
char *write_buffer;
return ERROR_OK;
if (h->usb_dev)
return ERROR_OK;
if (h->usb_dev)
- libusb_close(h->usb_dev);
-
- if (h->usb_ctx)
- libusb_exit(h->usb_ctx);
+ jtag_libusb_close(h->usb_dev);
free(h->read_buffer);
free(h->write_buffer);
free(h->read_buffer);
free(h->write_buffer);
static int icdi_usb_open(struct hl_interface_param_s *param, void **fd)
{
static int icdi_usb_open(struct hl_interface_param_s *param, void **fd)
{
+ /* TODO: Convert remaining libusb_ calls to jtag_libusb_ */
int retval;
struct icdi_usb_handle_s *h;
int retval;
struct icdi_usb_handle_s *h;
- LOG_DEBUG("transport: %d vid: 0x%04x pid: 0x%04x", param->transport,
- param->vid[0], param->pid[0]);
-
- /* TODO: convert libusb_ calls to jtag_libusb_ */
- if (param->vid[1])
- LOG_WARNING("Bad configuration: 'hla_vid_pid' command does not accept more than one VID PID pair on ti-icdi!");
+ 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 : "");
- if (libusb_init(&h->usb_ctx) != 0) {
- LOG_ERROR("libusb init failed");
- goto error_open;
- }
+ /* 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);
- h->usb_dev = libusb_open_device_with_vid_pid(h->usb_ctx, param->vid[0], param->pid[0]);
if (!h->usb_dev) {
LOG_ERROR("open failed");
goto error_open;
if (!h->usb_dev) {
LOG_ERROR("open failed");
goto error_open;
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)