This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

ULINK2 slow performance on USB 2.0

I currently have two ULINK's and just purchased a ULINK2. My test environment is having two laptops running XP2.
One laptop has USB 2.0 and the other is USB 1.1. Save binary on both machines and the current version of the ARM tool set. Performing a download time test from the pushing of the download button to the completion of the 2nd pass, I'm getting the following (seconds).

ULINK    USB2.0    USB1.1
-------------------------
ULINK2   25.2      11.0
ULINK     9.6      13.1

Both ULINK's (orig) have the same performance within a few tenths of a second of each other.

Both laptops are powered-up and the the USB cable is plugged directly into the root hub of the laptops. I using the same target for the test.

Any similar experiences or suggestions?

Parents
  • "the USB cable is plugged directly into the root hub of the laptops."

    Did you check it using USBView or UVCView?

    UVCView
    www.microsoft.com/.../UVCview.mspx

    Laptop may equip an internal hub other than the root hub.
    UVCView shows the actual connection tree.

    ULINK2 is a HID device.
    We have seen that WinXP SP2 delays HID communication on some hub chips.

    "HID Readfile Latency"
    www.usb.org/.../viewtopic.php

    I have doubt that the ULINK2 firmware has not been coded by an experienced programmer who knows USB well. For example, ULINK2 fails the USB compliance test (USBCV) on the HID descriptor test.

    USBCV R1.3
    www.usb.org/.../

    ULINK2 Report descriptor is as follows.

        0x06, 0x27, 0xFF,       // USAGE_PAGE (Vendor Defined Page 40)
        0x09, 0x01,             // USAGE (Vendor Usage 1)
        0xa1, 0x01,             // COLLECTION (Application)
        0x05, 0x06,             //  USAGE_PAGE (Generic Device Controls)
        0x09, 0x00,             //  USAGE (Undefined)     <---- bug
        0x15, 0x00,             //  LOGICAL_MINIMUM (0)
        0x25, 0xff,             //  LOGICAL_MAXIMUM (-1)  <---- bug
        0x95, 0x40,             //  REPORT_COUNT (64)
        0x75, 0x08,             //  REPORT_SIZE  (8)
        0x81, 0x02,             //  INPUT (Data,Var,Abs)
        0x05, 0x06,             //  USAGE_PAGE (Generic Device Controls)
        0x09, 0x00,             //  USAGE (Undefined)     <---- bug
        0x15, 0x00,             //  LOGICAL_MINIMUM (0)
        0x25, 0xff,             //  LOGICAL_MAXIMUM (-1)  <---- bug
        0x95, 0x40,             //  REPORT_COUNT (64)
        0x75, 0x08,             //  REPORT_SIZE  (8)
        0x91, 0x02,             //  OUTPUT (Data,Var,Abs)
        0xc0                    // END_COLLECTION
    


    Fortunately, WinXP SP2 accepts this buggy report descriptor. But it is not guaranteed in future version.

    This is an example of shorter HID report descriptor, which obeys HID report 'grammar' correctly.

        0x06, 0x00, 0xff,       // USAGE_PAGE (Vendor Defined Page 1)
        0x09, 0x01,             // USAGE (Vendor Usage 1)
        0xa1, 0x01,             // COLLECTION (Application)
        0x15, 0x00,             //  LOGICAL_MINIMUM (0)
        0x26, 0xff, 0x00,       //  LOGICAL_MAXIMUM (255)
        0x75, 0x08,             //  REPORT_SIZE  (8)    - bits
        0x95, 0x40,             //  REPORT_COUNT (64)   - Bytes
        0x09, 0x01,             //  USAGE (Vendor Usage 1)
        0x81, 0x02,             //  INPUT (Data,Var,Abs)
        0x09, 0x01,             //  USAGE (Vendor Usage 1)
        0x91, 0x02,             //  OUTPUT (Data,Var,Abs)
        0xc0                    // END_COLLECTION
    

    Tsuneo

Reply
  • "the USB cable is plugged directly into the root hub of the laptops."

    Did you check it using USBView or UVCView?

    UVCView
    www.microsoft.com/.../UVCview.mspx

    Laptop may equip an internal hub other than the root hub.
    UVCView shows the actual connection tree.

    ULINK2 is a HID device.
    We have seen that WinXP SP2 delays HID communication on some hub chips.

    "HID Readfile Latency"
    www.usb.org/.../viewtopic.php

    I have doubt that the ULINK2 firmware has not been coded by an experienced programmer who knows USB well. For example, ULINK2 fails the USB compliance test (USBCV) on the HID descriptor test.

    USBCV R1.3
    www.usb.org/.../

    ULINK2 Report descriptor is as follows.

        0x06, 0x27, 0xFF,       // USAGE_PAGE (Vendor Defined Page 40)
        0x09, 0x01,             // USAGE (Vendor Usage 1)
        0xa1, 0x01,             // COLLECTION (Application)
        0x05, 0x06,             //  USAGE_PAGE (Generic Device Controls)
        0x09, 0x00,             //  USAGE (Undefined)     <---- bug
        0x15, 0x00,             //  LOGICAL_MINIMUM (0)
        0x25, 0xff,             //  LOGICAL_MAXIMUM (-1)  <---- bug
        0x95, 0x40,             //  REPORT_COUNT (64)
        0x75, 0x08,             //  REPORT_SIZE  (8)
        0x81, 0x02,             //  INPUT (Data,Var,Abs)
        0x05, 0x06,             //  USAGE_PAGE (Generic Device Controls)
        0x09, 0x00,             //  USAGE (Undefined)     <---- bug
        0x15, 0x00,             //  LOGICAL_MINIMUM (0)
        0x25, 0xff,             //  LOGICAL_MAXIMUM (-1)  <---- bug
        0x95, 0x40,             //  REPORT_COUNT (64)
        0x75, 0x08,             //  REPORT_SIZE  (8)
        0x91, 0x02,             //  OUTPUT (Data,Var,Abs)
        0xc0                    // END_COLLECTION
    


    Fortunately, WinXP SP2 accepts this buggy report descriptor. But it is not guaranteed in future version.

    This is an example of shorter HID report descriptor, which obeys HID report 'grammar' correctly.

        0x06, 0x00, 0xff,       // USAGE_PAGE (Vendor Defined Page 1)
        0x09, 0x01,             // USAGE (Vendor Usage 1)
        0xa1, 0x01,             // COLLECTION (Application)
        0x15, 0x00,             //  LOGICAL_MINIMUM (0)
        0x26, 0xff, 0x00,       //  LOGICAL_MAXIMUM (255)
        0x75, 0x08,             //  REPORT_SIZE  (8)    - bits
        0x95, 0x40,             //  REPORT_COUNT (64)   - Bytes
        0x09, 0x01,             //  USAGE (Vendor Usage 1)
        0x81, 0x02,             //  INPUT (Data,Var,Abs)
        0x09, 0x01,             //  USAGE (Vendor Usage 1)
        0x91, 0x02,             //  OUTPUT (Data,Var,Abs)
        0xc0                    // END_COLLECTION
    

    Tsuneo

Children