This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

USB throughput question

I've been experimenting with the USB MSC code as we are working on a project where we want to store audio data on either a SATA SSD or USB flash drives. We are planning on using a C6748 as it has peripherals for both. I'm working on the LCDK6748 dev board and have the software from the starterware directory running and storing data to a USB flash drive now after enabling DMA mode. The throughput is quite low <100 kB/sec and it seems that there is a very long time between each byte/word transfer see the image below.

As you can see there is just over 480 nsec from the start of one transfer to the start of the next. I thought that a bulk transfer could be up to 1024 bytes long, but the system seems to be determined to transfer a byte at a time with the full USB packet overhead on each transfer. When I do this on another platform using Linux there is no dead time inbetween transfers. I'm rather new to the TI product suite and a little confused. Any suggestions on where to start looking? I've already read through the many posts on slow USB transfers, but there doesn't seem to be any conclusion. Is there some hardware limitation that causes this dead time? If so we will have to start looking for alternate parts.

Thanks,

Blair

  • What are you doing on host side? I found sending small packages of data to USB interface under some conditions causes a full package to be sent to the device - with only very few data of real payload. So collecting the data you want to sent until you have (multiples) of 1024 bytes packages may increase transfer speed dramatically.
  • Actually I've tried sending buffers of various lengths. The 6748 is running as the host and writing to a USB flas drive. Originally I got some improvement by upping buffer sizes to about 512 but the scope image I sent was as good as it got. When sending larger buffers (up to 1024) the system just breaks them into smaller blocks for sending anyway..

    Thanks,

    Blair

  • Dear Blair,

    I'm facing up to the same problem. I'm trying to write on a pendrive to save debug data, but I have a very poor throughput (about 1 Mbit/s).

    Did you find a way to improve performance?

    Thanks,
    Paolo
  • Actually I haven't got back to it. We started using SD cards and I worked on getting that up to 14 MB/second by upping clocks and not using the TI-RTOS buffering code as we did not need to tbe thread safe. Simply called ffcio_write instead of fwrite and got a boost in performance. You might want to try that to see if it helps.

    Blair
  • Thank you Blair, I'll try to use sd card.

    Paolo