Hi,
I am trying to facilitate high speed (480Mb/s) bulk transfer between a beagle bone and a host computer to transmit large amounts of data (uncompressed video frames.) I have modified the usb_dev_bulk example included in StarterWare to transfer data from the beaglebone to the host computer, however I am getting speeds of only about 930KB/sec. This leads me to believe that the beaglebone was being set up as a USB1.1 device and thus only allowing full speed transfer. I modified the device descriptor in usbdbulk.c so that the device is set up as USB2.0. However, this did not increase the speed at all.
Has anyone been able to do high speed (480Mb/s) bulk transfer?
I have the host computer and BeagleBone connected via the USB0 port.
Thanks,
Nick
Hi Nick,
The existing StarterWare USBLib Bulk Class is implemented to support only PIO mode for endpoint I/O. It is not possible to achieve the 64KBps in the existing implementation.Additionally, as no bandwidth is reserved for Bulk endpoints, the saturation level of the host USB bus will also affect the throughput.
Below are few pointers which you can use to improve the throughput on StarterWare USBLib front, if you are planning to make changes to the USBLib youeself:- Using CPPI-DMA for I/O of the Bulk EndPoint (and EDMA to transfer anywhere within the application) can increase the transfer rate.- Setting the maximum packet size to 512 will also improve the throughput.
RegardsSirish