I have a usb mass storage program using usb interrupts to fill and empty the usb fifos working without errors. I would like to improve throughput by using the usb cppi dma engine. The dma code i have gets through enumeration and the first few requests just fine, but i'm finding that i can't seem to transmit dma packets larger than 2176 bytes. I never get an interrupt for the transmit completion queue for the packet. Is it possible to tell if the dma is getting starved out? Or is there some other error condition that I can look for? I'm not seeing the dma engine mark the error bit in word 2 of the descriptor or anything like that.
The usb cppi dma documentation is a pretty tough read. Is there any non-trivial example code that uses something other than endpoint 1?
Thank you