I have a project that uses the TivaWare/usblib/device library to drive the processor's USB engine as a bulk device with two endpoints (one in and the other out). I've had the code working correctly manipulating the USB FIFO directly. I'm trying to get the system working with the integrated DMA engine for sending data on the IN endpoint, but I get occasional oversize full speed packets (> 64 bytes). This failure usually happens after about 1000 blocks have been sent successfully (with a few hundred bytes in each block).
Where should I start looking to find the error? There is no obvious difference between the block that fails and any of the preceding blocks except that the last packet sent in the block is > 64 bytes.