[U-Boot] {Spam?} u-boot-usb DFU working but need some ideas

Marcel korgull at home.nl
Thu Feb 10 08:46:48 CET 2011


Hi Detlev,

> I am not too familiar with the DFU spec, but I agree with regards to the
> scripting.  I can envision usage scenarios where the downloaded files
> are written to other storage media, so I would much rather leave that up
> to the U-Boot script interpreter.

I did create a new command "dfu" that activates the controller and DFU.
I than used the GPBR register of the AT91 to make u-boot know that it has to 
activate DFU by script. Basically the value of the GPBR register either tells 
u-boot to wait for TFTP or DFU ways to upgrade.
 
> > About the way it currently works :
> > 1) I start u-boot
> > 2) I issue the dfuinit command (new)
> > 3) the host can now download a file to RAM.
> > Any thoughts on what would be the most preferred way to do this ?
> 
> This sequence sounds absolutely feasible.  What exactly is your
> question?

Since I wasn't familiar with DFU either I asked. I implemented it basically on 
the go, so while I was reading the spec. Along the way I found some items 
which I found not very logical for u-boot.
DFU states that the device should expose the normal descriptors + a DFU 
descriptor. I don't do that in my application. Instead I have another way to 
reset my application and tel u-boot to go in DFU mode. I however implemented 
the DFU driver in u-boot such way that it does work with dfu-utils without any 
issues.

Also I upload the full application to RAM first before storing it in NAND. On 
my board this has some limits. The RAM is 128M and NAND 256M, so I can not 
flash the whole NAND yet. The Openmoko driver implements a method that allows 
that, which can be added later of course.

I tested it the whole week and use it now as my main way to upgrade my 
application. Haven't seen it fail once so far, so it looks good.

> > Additionally I think I will implement this as a composite driver so that
> > both (usb)CDC and DFU are available via USB. I have both working, but
> > currently must select it at compile time.
> > My current implementation basically is just DFU as it assumes the
> > application (not u-boot) to be the firmware to be updated, so no need to
> > switch on descriptor layer level.
> > 
> > Any reply on this would be nice, even if my above thoughts are in line.
> > I hope to be able to post my changes in 1-2 weeks. After that my time is
> > extremely limited due to long time travel.
> 
> I'm really looking forward to getting DFU support into U-Boot - having
> lobbyied for it quite a while :)

Great. I hope I can post it and that it will be maintained. It really is a 
nice feature I think.
 
> > If anyone is interested in helping me out posting the changes it would
> > be very much appreciated.
> 
> What help do you need?

I'm on a real deadline for my project. I have to go on business trip end of 
next week and very limited in time. I finished u-boot for my companies products 
and I can post a full diff of it. I was hoping someone could help me out 
testing the patch on their board (either sam9g45 or using at91_udc ) and help 
me to post the changes to u-boot.
I can also post a full diff the the forum, but it's rather large I think. I 
never posted changes before, so I have no idea yet how to do it. I know 
there's reading info about it, but had no time yet to look into it (shame on 
me :-) ).

Best regards,
Marcel

















More information about the U-Boot mailing list