|
From: Xiaofan C. <xia...@gm...> - 2024-04-27 06:19:19
|
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 |