
Here a first draft design doc. It is based in part on the Fastboot implementation in the rowboat git repo (pointer below).
As always, comments welcome. John
Purpose =======
Mainline support for Android Fastboot would be useful. Arguing the merits of Fastboot vs DFU is not in the scope of this document. This document is to discuss design goals/requirements of an implementation of Fastboot in U-Boot.
Background ==========
See the Android Fastboot page in Omappedia for an example of how Fastboot is used to flash nand partitions on an Android device. http://www.omappedia.org/wiki/Android_Fastboot
A description of the Fastboot protocol is available in the gitorious rowboat git repo. http://gitorious.org/rowboat/bootable-bootloader-legacy/blobs/master/fastboo...
Hooks into U-Boot =================
Fastboot gets access to the USB subsystem via the same interfaces as USB_TTY, namely the udc_* api's: udc_init udc_startup_events udc_connect udc_poll udc_setup_ep etc.
Startup =======
Fastboot will be started on the target by issuing the "fastboot" command. Optionally a board specific startup method may exist. For example if a certain combination of keys is pressed on reset then fastboot will be started immediately.
Shutdown ========
Once started the fastboot command will continue until: <CTRL-C> is typed on the console a "continue" command is sent from the host usb cable is removed no commands have been sent from the host for some configurable timeout Coexistance With USB_TTY and DFU ================================
One should be able to enable USB_TTY, DFU and Fastboot at compile time and chose one at runtime.
Questions ========
Should a Fastboot host program be included in the U-Boot source? Could Fastboot be implemented as an extension to USB_TTY? Could Fastboot, DFU and USB_TTY share a layer of code above the udc_* api's?