[U-Boot] DFU on OMAP4?

Michael Cashwell mboards at prograde.net
Tue Mar 5 15:30:18 CET 2013


On Feb 20, 2013, at 2:52 AM, Lukasz Majewski <l.majewski at samsung.com> wrote:

> Hi Michael,
> 
>> Greetings,
>> 
>> I've been trying to do some feasibility (performance / features) testing of DFU to see if it might work on a project I'm involved with. Due to architecture similarities I'm trying to do this using a custom-built u-boot from Denx mainline on a OMAP4460 ES1.1 Pandaboard. But I've been having problems.


Thanks for the help Lukasz!

I've made significant progress since my original posts. I found that if I CONFIG-out the usb tty stuff (since it uses the old gadget structure) I can enable the musb-new USB code and the composite gadget driver. If I also force PIO mode instead of DMA it builds. I can run "dfu mmc 0" and I get some correct behavior out of dfu-util on the host PC. But there seems to be USB transfer problems or some sort of protocol mismatch.

cashwell.ubuntu:src$ sudo ./dfu-util -v -a u-boot -U ~/dfu-upload
dfu-util 0.7

Copyright 2005-2008 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2012 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to dfu-util at lists.gnumonks.org

Opening DFU capable USB device...
Found DFU: [5555:0001] ver=0215, devnum=0, cfg=2, intf=0, alt=0,
	name="ipl", serial="UNDEFINED"
Did not find cached descriptor
WARNING: Can not find cached DFU functional descriptor
Warning: Assuming DFU version 1.0
Run-time device DFU version 0100
Found DFU: [5555:0001] ver=0215, devnum=0, cfg=2, intf=0, alt=1,
	name="u-boot", serial="UNDEFINED"
Claiming USB DFU Interface...
Setting Alternate Setting #1 ...
Determining device status: state = dfuUPLOAD-IDLE, status = 0
   <<<< long pause here >>>>
aborting previous incomplete transfer
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
Did not find cached descriptor
Error obtaining cached DFU functional descriptor
DFU mode device DFU version 0110
Device returned transfer size 4096
bytes_per_hash=4096
Copying data from DFU device to PC
Starting upload: [] finished!
Received a total of 0 bytes

And indeed I end up with a zero-length file. The target says:

MMC read: dev # 0, block # 512, count 512 ... 512 blocks read: OK
UPLOAD ... done

The u-boot I'm using is from denx master (as of this morning) with my own board settings to enable DFU. The dfu-util I'm using is from <git://gitorious.org/dfu-util/dfu-util.git>. I've also run the 0.5 dfu-util binary that comes from Ubuntu's repos. Its logging looks slightly different but also fails in basically the same way.

I'm assuming that DFU has been tested in u-boot mainline. Perhaps I'm using the wrong dfu-util repo.

It's so close to working it's driving me nuts. Pointers welcome!

-Michael



More information about the U-Boot mailing list