- **status**: new --> closed
- **Comment**:

Closing as this is fixed in master, thanks to everybody involved!


** [tickets:#118] jlink.c: Bug in jlink_usb_io()**

**Status:** closed
**Milestone:** 0.9.0
**Created:** Thu Feb 04, 2016 10:33 AM UTC by Alex Gruener, CTO SEGGER
**Last Updated:** Thu Feb 04, 2016 10:33 AM UTC
**Owner:** nobody


I am writing here as an official SEGGER J-Link employee.
There is a bug in jlink_usb_io() in jlink.c that comes up with J-Link models 
that incorporate USB Hi-Speed.
It does not occur with older USB Full-Speed models:

static int jlink_usb_io(struct jlink *jlink, int out_length, int in_length)
         * Section 4.2.4 IN-transaction:
         * read dummy 0-byte packet if transaction size is
         * multiple of 64 bytes but not max. size of 0x8000
        if ((in_length % 64) == 0 && in_length != 0x8000) {
                char dummy_buffer;
                result = usb_bulk_read_ex(jlink->usb_handle, jlink_read_ep,
                        &dummy_buffer, 1, JLINK_USB_TIMEOUT);
                if (result != 0) {
                        LOG_ERROR("dummy byte read failed");
                        return ERROR_JTAG_DEVICE_ERROR;
        return ERROR_OK;

A dummy byte request should only be done if:
in_length == multiple of MaxPacketSize and not a multiple of 2 KB
MaxPacketSize for Full-Speed: 64 bytes
MaxPacketSize for Hi-Speed: 512 bytes

Correct pseudo-code:

MaxPacketSize = _GetEPMaxPacketSize(iEP);
if ((in_length % MaxPacketSize) == 0) {
  if ((in_length % 0x800) != 0) {  // Needed for compatibility with J-Link 
Windows driver behavior

In case if additional information is needed etc., please to do not hesitate to 
contact me or SEGGER directly.


Sent from sourceforge.net because openocd-devel@lists.sourceforge.net is 
subscribed to https://sourceforge.net/p/openocd/tickets/

To unsubscribe from further messages, a project admin can change settings at 
https://sourceforge.net/p/openocd/admin/tickets/options.  Or, if this is a 
mailing list, you can unsubscribe from the mailing list.
OpenOCD-devel mailing list

Reply via email to