I am adding two state machines to the AN75779_How_to_Implement_an_Image_Sensor_Interface_with_EZ-USB_FX3_in_a_USB_Video_Class_UVC_Framework.pdf.
Since the design already uses thread0 & 1, I use a Thread2 to use the download 32b parallel data to FPGA (STM2)and Thread3 to upload from FPGA (STM3).
These two transfers only activate when the UVC is not active.
However I realize the behavior on the Cypress firmware changes after I finish my STM2. When I work until STM2 the control center works per normal. I can download multiple packets to the FPGA.
I added STM3 (Thread3)& DMA, and compiled the image. After load the image the Control Center loses all three devices (Vendor 1, MFG and Bootloader). During STM2 work, I see Vendor 1 & MFG after load image into Bootloader/RAM.
I wonder what happened? Does the debug UART use the Thread3?
The maximum size of the DMA buffer that can be allocated is 224KB in the case of CYUSB3014 and 32KB in the case of CYUSB3012. What might be happening in your case is that the total size of DMA buffers that is being allocated in the firmware is exceeding the max. DMA buffer space available.
If you are not using second stage boot-loader in your application, you can make use of an extra 32KB of RAM space (reserved for second-stage boot-loader) by setting the macro CY_U3P_SYS_MEM_TOP to 0x40080000 in the case of CYUSB3014.