mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-03 21:48:15 +00:00 
			
		
		
		
	Implement an alias name check for devices where GPT limitations prevent user-friendly partition names such as "boot", "system" and "cache". Or, where the actual partition name doesn't match a standard partition name used commonly with fastboot. To set an alias, add an environment setting as follows: fastboot_partition_alias_<alias partition name>=<actual partition name> Example: fastboot_partition_alias_boot=LNX Signed-off-by: Michael Scott <michael.scott@linaro.org> Acked-by: Steve Rae <srae@broadcom.com> Cc: Steve Rae <srae@broadcom.com> Cc: Lukasz Majewski <l.majewski@samsung.com>
		
			
				
	
	
		
			105 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
Android Fastboot
 | 
						|
~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
Overview
 | 
						|
========
 | 
						|
The protocol that is used over USB is described in
 | 
						|
README.android-fastboot-protocol in same directory.
 | 
						|
 | 
						|
The current implementation is a minimal support of the erase command,the
 | 
						|
"oem format" command and flash command;it only supports eMMC devices.
 | 
						|
 | 
						|
Client installation
 | 
						|
===================
 | 
						|
The counterpart to this gadget is the fastboot client which can
 | 
						|
be found in Android's platform/system/core repository in the fastboot
 | 
						|
folder. It runs on Windows, Linux and even OSX. Linux user are lucky since
 | 
						|
they only need libusb.
 | 
						|
Windows users need to bring some time until they have Android SDK (currently
 | 
						|
http://dl.google.com/android/installer_r12-windows.exe) installed. You
 | 
						|
need to install ADB package which contains the required glue libraries for
 | 
						|
accessing USB. Also you need "Google USB driver package" and "SDK platform
 | 
						|
tools". Once installed the usb driver is placed in your SDK folder under
 | 
						|
extras\google\usb_driver. The android_winusb.inf needs a line like
 | 
						|
 | 
						|
   %SingleBootLoaderInterface% = USB_Install, USB\VID_0451&PID_D022
 | 
						|
 | 
						|
either in the [Google.NTx86] section for 32bit Windows or [Google.NTamd64]
 | 
						|
for 64bit Windows. VID and PID should match whatever the fastboot is
 | 
						|
advertising.
 | 
						|
 | 
						|
Board specific
 | 
						|
==============
 | 
						|
The fastboot gadget relies on the USB download gadget, so the following
 | 
						|
options must be configured:
 | 
						|
 | 
						|
CONFIG_USBDOWNLOAD_GADGET
 | 
						|
CONFIG_G_DNL_VENDOR_NUM
 | 
						|
CONFIG_G_DNL_PRODUCT_NUM
 | 
						|
CONFIG_G_DNL_MANUFACTURER
 | 
						|
 | 
						|
NOTE: The CONFIG_G_DNL_VENDOR_NUM must be one of the numbers supported by
 | 
						|
the fastboot client. The list of vendor IDs supported can be found in the
 | 
						|
fastboot client source code (fastboot.c) mentioned above.
 | 
						|
 | 
						|
The fastboot function is enabled by defining CONFIG_CMD_FASTBOOT and
 | 
						|
CONFIG_ANDROID_BOOT_IMAGE.
 | 
						|
 | 
						|
The fastboot protocol requires a large memory buffer for downloads. This
 | 
						|
buffer should be as large as possible for a platform. The location of the
 | 
						|
buffer and size are set with CONFIG_USB_FASTBOOT_BUF_ADDR and
 | 
						|
CONFIG_USB_FASTBOOT_BUF_SIZE.
 | 
						|
 | 
						|
Fastboot partition aliases can also be defined for devices where GPT
 | 
						|
limitations prevent user-friendly partition names such as "boot", "system"
 | 
						|
and "cache".  Or, where the actual partition name doesn't match a standard
 | 
						|
partition name used commonly with fastboot.  Current implentation checks
 | 
						|
aliases when accessing partitions by name (flash_write and erase functions).
 | 
						|
To define a partition alias add an environment variable similar to:
 | 
						|
fastboot_partition_alias_<alias partition name>=<actual partition name>
 | 
						|
Example: fastboot_partition_alias_boot=LNX
 | 
						|
 | 
						|
In Action
 | 
						|
=========
 | 
						|
Enter into fastboot by executing the fastboot command in u-boot and you
 | 
						|
should see:
 | 
						|
|GADGET DRIVER: usb_dnl_fastboot
 | 
						|
 | 
						|
On the client side you can fetch the bootloader version for instance:
 | 
						|
|>fastboot getvar bootloader-version
 | 
						|
|bootloader-version: U-Boot 2014.04-00005-gd24cabc
 | 
						|
|finished. total time: 0.000s
 | 
						|
 | 
						|
or initiate a reboot:
 | 
						|
|>fastboot reboot
 | 
						|
 | 
						|
and once the client comes back, the board should reset.
 | 
						|
 | 
						|
You can also specify a kernel image to boot. You have to either specify
 | 
						|
the an image in Android format _or_ pass a binary kernel and let the
 | 
						|
fastboot client wrap the Android suite around it. On OMAP for instance you
 | 
						|
take zImage kernel and pass it to the fastboot client:
 | 
						|
 | 
						|
|>fastboot -b 0x80000000 -c "console=ttyO2 earlyprintk root=/dev/ram0
 | 
						|
|	mem=128M" boot zImage
 | 
						|
|creating boot image...
 | 
						|
|creating boot image - 1847296 bytes
 | 
						|
|downloading 'boot.img'...
 | 
						|
|OKAY [  2.766s]
 | 
						|
|booting...
 | 
						|
|OKAY [ -0.000s]
 | 
						|
|finished. total time: 2.766s
 | 
						|
 | 
						|
and on the gadget side you should see:
 | 
						|
|Starting download of 1847296 bytes
 | 
						|
|........................................................
 | 
						|
|downloading of 1847296 bytes finished
 | 
						|
|Booting kernel..
 | 
						|
|## Booting Android Image at 0x81000000 ...
 | 
						|
|Kernel load addr 0x80008000 size 1801 KiB
 | 
						|
|Kernel command line: console=ttyO2 earlyprintk root=/dev/ram0 mem=128M
 | 
						|
|   Loading Kernel Image ... OK
 | 
						|
|OK
 | 
						|
|
 | 
						|
|Starting kernel ...
 |