For more information, I added some debug print in the firmware, and found that the firmware crashed.
I added a hart beat print in the CyFxAppThread_Entry thread for loop. Each 1 sec prints once. And I found that when the communication stops, the firmware is stuck at CyU3PUsbSendEP0Data. In 5 seconds, the heart beat still works. But after 5 seconds, the debug print after CyU3PUsbSendEP0Data does not appear, and the heart beat print also stops.
Have you tried capturing the USB 3.0 Trace and looked into it?
What do you mean by USB3.0 Trace? I've tried to print out the state machine state of GPIF. And I found that when it stuck, the state machine is always at wait for SLWR states. The DMA is auto, and no callback from DMA is used. I added judgement of GPIF state before sending back data to PC through EP0 to avoid EP0 and GPIF sending data to PC at the same time, and this work-around action works, after tried over 100k times no crash happened. I think there must be something wrong. The work-around can only reduce the possibility, but cannot solve the problem, as the GPIF state could be changed after checking.