Hi again Mark.
Thanks for running this test and sharing the updated timing information.
Here's what I found out after digging into this a little further. The non-MQX CDC project provided by Freescale is a very good starting point, but needs a few tweaks. For starters, the routine that transmits from the device to the host (as a reponse to an IN request) doesn't packetize long transfers and doesn't check the OWN bit when writing to the BDT buffer. In other words, it's really only set up for 64 byte maximum transfers.
After enhancing the transmit routine slightly, I was able to get 192 byte (3 packet) transers being sent from the device to the host in every 1ms frame. And then I hit a wall. I'm assuming the host device driver (usbser.sys) was somehow throttling the transfers even though the IN request it was sending were for 4096 byte packets. I watched this on USBlyzer.com. I know that writing a custom device driver on the host side is an option and a lot of companies do that but I don't have the bandwidth to take that on. I need something fairly "off the shelf".
But the big show stopper with that approach is that the device has to babysit the packetized transfer not too unlike a UART. I was seeing a 70 uSec delay between each of the 64 byte outgoing packets. And I would assume that the USB-MSD example you referenced, the K60 would be very highly taxed to acheive the transfer rates you were seeing. This is simply too much CPU overhead for my application.
So my current approach is to use a K70 processor with a true high speed USB controller. I need to fire off a single, 512 byte packet either every 4 or 8 microframes, where a microframe is a 125 uSec interval. This will satisfy my transfer speed without burdening my CPU. The problem is that the high speed module in the K70 is essentially brand new, is not fully documented (the bitfields in the USBHS_EPSETUPSR are not spelled out, for example) and there are very few sample projects for it. I have a single HID example running at true high speed but it's a fairly crude exampe. So my challenge is to port the existing full speed CDC project over to the K70's high speed controller or wait for Freescale to release more example classes. Supposedly there are more examples being released on March 8th.
A little long winded but that's where I'm at now.
rgds,
Gary