- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
We are using PSoC 4200L in a streaming data acquisition application. We send data on an isochronous USB endpoint to the host PC. We are using CyUSB3.sys and CyAPI.lib. We are seeing driver stability issues when we repeatedly start/stop isochronous sessions (individual sessions seem to be stable). In particular, the Windows 10 driver seems to be less stable than Windows 7. We are using the version 1.3.4 driver.
We are following the examples in the CyAPI document for using isochronous transfers, using BeginDataXfer(), WaitForXfer(), and FinishDataXfer().
The stability symptoms are kernel panic (BSOD) and data corruption. In particular, the shorter the time between stopping a session and starting another one, the higher the probability of a problem with the new session. With delay less than 180ms, there is guaranteed to be a problem. Increasing the delay over 1 second reduces the probability to about 1 in 100.
Any suggestions?
- Labels:
-
BLE
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Have you checked the USB transfer with any USB protocol Analyzer to check whether this is a Host specific issue or not.
If this issue is reproducible on Cypress dev kit, please share the project
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I don't think it is reasonable to blame the device for this behavior, because
1. The stability problem shows up in Windows 10, and not Windows 7 (the device doesn't know the OS of the host)
2. The issue is related to the driver's ability to abort in-progress transfers. That is a function of the driver and not the device.
3. A quality driver should not crash the kernel, even if the device misbehaves.
Anyway, I ended up switching from CyUSB3.sys to WinUSB.sys and everything is stable now. It looks to me like CyUSB3.sys is not usable in Windows 10, at least for isochronous applications.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
1.2.3.30 is the driver version I have been using. It is from here: http://www.cypress.com/documentation/software-and-drivers/ez-usb-fx3-software-development-kit
I tried both the pre-built driver, and I also built the driver from source. I see the same issues in both.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Please try to check if the issue exists using the Streamer Application located at this path: C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\application\c_sharp\streamer
If you do not see the issue on Streamer, please provide us details on how you have implemented the host application. In your host application you could check what error is reported on BeginDataXfer(), WaitForXfer() or FinishDataXfer() APIs. Use the GetLastError() Windows API to obtain the error returned.
Regards,
Dheeraj
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
In our code, we follow the same sequence as the example code in the API document, and in the Streamer application.
We don't see any errors reported in BeginDataXfer(), WaitForXfer() or FinishDataXfer(). What we see is BSOD (blue screen), and sometimes data corruption. These issues don't exist in Windows 7. We are using the same application code in Windows 7 and Windows 10.
Andy
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Did you encounter the same issue with the streamer application? If not, please share your host application code so that we can debug and find out what's causing the error.
Regards,
Dheeraj
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dheeraj,
I am unable to post this proprietary code publicly. I would be able to send it privately to Cypress.
Andy