[U-Boot] Issue with USB mass storage (thumb drives)

Marek Vasut marex at denx.de
Mon Feb 8 15:58:34 CET 2016


On Monday, February 08, 2016 at 09:41:09 AM, Hannes Schmelzer wrote:
> On 04.02.2016 12:28, Marek Vasut wrote:
> > On Thursday, February 04, 2016 at 09:21:08 AM, Schrempf Frieder wrote:
> >> On 03.02.2016 20:16, Sergei Temerkhanov wrote:
> >>> On Wed, Feb 3, 2016 at 8:40 AM, Marek Vasut <marex at denx.de> wrote:
> >>>> On Wednesday, February 03, 2016 at 12:49:20 PM, Schrempf Frieder wrote:
> >>>>> On 03.02.2016 12:12, Marek Vasut wrote:
> >>>>>> On Wednesday, February 03, 2016 at 11:15:00 AM, Schrempf Frieder wrote:
> >>>>>>> On 03.02.2016 10:55, Fabio Estevam wrote:
> >>>>>>>> On Wed, Feb 3, 2016 at 7:40 AM, Marek Vasut <marex at denx.de> wrote:
> >>>>>>>>> In that case, debug time.
> >>>>>>>>> 
> >>>>>>>>> Usual problems are bad routing of the tracks on the board , so
> >>>>>>>>> try with USB 1.1 hub and if that works, that's your problem.
> >>>>>>>> 
> >>>>>>>> Another suggestion would be to try the 100MB transfer in Linux and
> >>>>>>>> see if this works or not.
> >>>>>>>> 
> >>>>>>>> That would help us to narrow down whether this is a hardware or
> >>>>>>>> software problem.
> >>> 
> >>> Another thing to try may be limiting the value of USB_MAX_XFER_BLK in
> >>> common/usb_storage.c
> >> 
> >> This was a really helpful hint! Thank you Sergei!
> >> 
> >> I just tried to limit USB_MAX_XFER_BLK to 1/8 of the original value
> >> (65535 -> 8191) and this time the transfer works without timeouts.
> >> 
> >> As we have a customer who needs this working as soon as possible my
> >> question now is how to properly solve this.
> >> Should I generally limit USB_MAX_XFER_BLK in my u-boot to avoid these
> >> errors? Which value to choose?
> > 
> > Nice! Can you share which sticks are those, ideally brand/type and USB
> > IDs ?
> 
> Hi,
> that tip works also on my ZYNQ board.
> 
> There is some comment around this 'magic-define':
> 
> /*
>   * The U-Boot EHCI driver can handle any transfer length as long as
> there is
>   * enough free heap space left, but the SCSI READ(10) and WRITE(10)
> commands are
>   * limited to 65535 blocks.
>   */
> 
> Can i assume that 16MiB free heap space is enough if i want read a 16MiB
> file ?

The file is actually not read into a buffer on a heap iirc, but directly to
the target location if that's in RAM.

Best regards,
Marek Vasut


More information about the U-Boot mailing list