> From Your experience what is the max speed reachable with winusb? I
know that the bulkusb driver (from DDK) suport up to 300Mbit/sec from
experiences or even more - does the winusb suports such a speed or
using user mode switch will kill me?
But I would appreaciate if You can tell me a ~ transfer rate for
winusb …
Here’s a performance report based on using a NetChip (PLX) NET2280 USB device:
http://www.plxtech.com/pdf/usb/Net2280.Performance_Report.RE030409a.pdf
An interesting observation is that that maximum observed data transfer rate on the bus when the device never NAKs using an Intel ICH EHCI controller as the host is 10 512-byte Bulk IN packets per microframe and 8 512-byte Bulk OUT packets per microframe. That’s 40,960,000 IN bytes/second and 32,768,000 OUT bytes/second.
The maximum theoretical data transfer rate is 13 512-byte Bulk packets per microframe, or 53,248,000 bytes/second. (See Table 5-10. High-speed Bulk Transaction Limits in the Universal Serial Bus Specification Revision 2.0). The inability to achieve the maximum theoretical data transfer rate under the best case USB device and USB host software conditions appears to be a USB host controller chipset hardware limitation.
So that gives you some maximum transfer rate figures to start with. The transfer rate will slow down considerably if the device frequently sends short packets instead of 512-byte packets. The transfer rate will also slow down as the request transfer size decreases and if there is only one transfer request active at a time instead of at least two. The transfer rate will of course also slow down if the device NAKs and if there are other devices transferring data on the bus at the same time. The transfer rate can even slow down if there are other devices attached which are not actively transferring data but which have endpoints configured in the host controller endpoint schedule.
If you design your device and software too closely to the maximum possible transfer rates you may find that it cannot achieve those rates in practice in many real world scenarios. There is guaranteed transfer rate for Bulk endpoint data transfers.
But in any case, using WinUSB should not be the limiting factor.
I have no idea what data transfer rate an OSR FX2 device can sustain with its standard OSR firmware, or what the maximum data transfer rate an FX2 can sustain with custom firmware when the endpoint FIFOs are emptied or filled by firmware instead of external hardware.
If you don’t have a hardware bus analyzer it may be difficult to pinpoint data transfer rate bottlenecks. If you cannot observe NAKs and NYETs you won’t be able to know what is really happening.