cancel
Showing results for 
Search instead for 
Did you mean: 

PSoC 4 MCU

Anonymous
Not applicable

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?

0 Likes
8 Replies
AnkitaS_51
Employee

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

0 Likes
Anonymous
Not applicable

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.

0 Likes
AnkitaS_51
Employee

  For Windows 10, it is recommended to use the CyUSB3.SYS driver version 1.2.3.20. This is available from the FX3 SDK package. I have attached the driver package  too. PFA.

0 Likes
Anonymous
Not applicable

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.

0 Likes
DheerajK_81
Moderator
Moderator

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

0 Likes
Anonymous
Not applicable

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

0 Likes
DheerajK_81
Moderator
Moderator

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

0 Likes
Anonymous
Not applicable

Dheeraj,

I am unable to post this proprietary code publicly. I would be able to send it privately to Cypress.

Andy

0 Likes