You can corner down the issue by using our Cypress Driver and see if this issue occurs. We are not very sure of the behavior if the windows driver as it is out of our scope. As far as any driver is concerned, FX3 abides by the timeout values of its end points and is seen to have worked properly.
- Madhu Sudhan
Thanks for the reply. It looks the time out problem goes away if we use a USB hub. Do you have any idea why a usb hub will make the difference? This looks like there are some issues in the usb link layer. Could there be some issues between FX3 and Windows 7 driver? We have tried on the Windows 10 computer and got the same results. What kind of computer does Cypress use to test the FX3? Do you use computer's standard usb3.0 port or use usb3.0 plug-in card with non-Windows driver?
Now we run into another problem. We use auto dma to bulk transfer image data to the computer and send the computer the status message through the interrupt pipe. The status message is unsynchronized with image data. The status change can happen before, after or during image data transfer. So on the computer side there are 2 threads running. One thread reads the interrupt pipe with infinite time out. If it gets a status message it passes it to the main thread. The other thread reads the bulk pipe to get the image data. It seems the system works fine if the interrupt read doesn't happen concurrently with the bulk pipe read. If one thread is reading the bulk pipe and the other thread tries to read the interrupt pipe then both interrupt and bulk pipe will be messed up. Does FX3 support this kind of endpoints concurrent access?