
Hi,
I finally got things working well with my SAM9G45 USB devcie controller and continued to implement DFU for it. I implemented it using the new gadget layer and should be compatible with the at91_udc driver.
I have managed to get DFU working in such way that it transfers the file to RAM. There's still a lot to do, but most things are in place and working well. Basically after transfer to RAM, a u-boot script can handle additional actions, so I'm in doubt about the following :
The DFU implementation I used as a basis came from openmoko. This implements directly flashing the device. However, my thought is that it's much better to just write the file to RAM and let a script in u-boot handle what should happen with it (verify, boot, flash) The DFU spec seems to handle this with the bitManifestationTolentant bit, but the current dfu-utils don't use this bit (that can be updated of course, which I already did).
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 ?
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. If anyone is interested in helping me out posting the changes it would be very much appreciated.
Best regards, Marcel