[U-Boot] strawman Fastboot in U-Boot Design Doc

John Rigby john.rigby at linaro.org
Fri Apr 29 03:07:24 CEST 2011


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/fastboot_protocol.txt

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?


More information about the U-Boot mailing list