The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.
Check out The OSR Learning Library at: https://www.osr.com/osr-learning-library/
We are moving our USB 2.0 device from a custom driver to WinUSB. The device must continue to work with both the older driver and the new WinUSB approach so changing to isochronous for example would not be possible. I did not write the custom driver. I wrote the firmware for a new version of the device for the custom driver and application. I am writing the application and WinUSB interface. In other words, I know just enough to be dangerous...
In our testing we are seeing significantly slower bulk transfer speeds on Windows 10 vs Windows 7. Windows 10 takes approximately 60% longer to transfer. This same slowdown occurs whether we run the original C++ application which uses the custom driver or the new C# application using WinUSB.
Our data is not large = ~10 Mb/s (1 Mb every 10 Hz revolution, i.e. 100 ms)
In our base tests, we transfer two blocks of ~470K, one block of ~54k, and a final block of ~107k.
On Windows 7, each 470k blocks take just over 18 ms to transfer - overall ~43 ms for 1.1 Mb transfer
On Windows 10, each 470k blocks take just over 29 ms to transfer == 61% longer - overall ~70 ms for 1.1 Mb transfer
These times were verified using tracing on the embedded device under JTAG control as well as a USB 3 analyzer between the device and the PC.
Because of the added delay we are just barely collecting data at full speed. We currently have at 83 us to spare running at 10 Hz... The device is revolution oriented, if you miss the timing then you wait for the next time around. We are afraid any delay or a slower machine would drop us down to half speed. Picking up even 5-10 ms would be useful.
Is there any knowledge, information, suggestions for the cause and possible solution for this significant difference in bulk transfer speeds?
|Upcoming OSR Seminars|
|OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead!|
|Developing Minifilters||24 May 2021||Live, Online|
|Writing WDF Drivers||14 June 2021||Live, Online|
|Internals & Software Drivers||27 September 2021||Live, Online|
|Kernel Debugging||15 November 2021||Live, Online|