|
From: Xiaofan C. <xia...@gm...> - 2024-04-27 06:37:58
|
I mean to say get rid of the Interrupt IN endpoint. You also need to change the USB descriptors and a bit of the firmware source codes to make it a generic USB device. On Sat, Apr 27, 2024, 14:19 Xiaofan Chen <xia...@gm...> wrote: > On Sat, Apr 27, 2024 at 1:54 PM Jerri Lipp via libusb-devel > <lib...@li...> wrote: > > > > > > ST's USB middleware supports double-buffering and enabled by default. I > verified > > that the proper IFDEF branch is taken during compilation. > > > > Also, the issue is not that I'm not getting good throughput, but that in > order to > > approach that 1MB/s mark I have to add phantom IN transfers on one > computer, > > and (now that I've checked) that performance is actually worse on a much > newer > > and more powerful laptop. > > Get rid of the IN endpoint and make the device a generic USB device > (with Bulk IN > and Bulk OUT endpoint only), then use libusb again to see if that helps. > > You may also want to give libusbK kBench a try to see how fast you can get > by testing the Bulk OUT endpoint only. Unfortunately there is no similar > example for libusb yet. > > Reference: > https://github.com/libusb/libusb/issues/962 > https://github.com/libusb/libusb/issues/951 > > I have no issues to get >1000KB/sec for a full speed USB device > (Microchip USB PIC) and >3Gbps with CyUSB FX3 SuperSpeed > device > > I remember that Travis has done some benchmarks for STM32 > device as well and the result is also >1000KB/sec. > > FW source codes: > https://github.com/mcuee/libusbk/tree/master/BmFW > > kBench source code > https://github.com/mcuee/libusbk/tree/master/libusbK/src/kBench > > Reference discussion: > > https://community.osr.com/t/benchmarking-winusb-libusbk-and-cypress-cyusb-driver/57390/3 > > 437,800 KB/sec for cyusb3.sys using Cypress Cystream application > 437,700 KB/sec for libusb0.sys using libusbk kBench application > 386,600 KB/sec for libusbk.sys using libusbk kBench application > 385,300 KB/sec for WinUSB using libusbk kBench application > > You can also use libusb based libusbdotnet benchmarkcon example (v2 > branch only). > https://github.com/LibUsbDotNet/LibUsbDotNet/issues/137 > > I tested with Cypress USB FX2LP and CyUSB FX3 there. It works well for > Bulk IN/OUT transfer, but not ISOC transfer. > > > -- > Xiaofan > |