mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-30 19:48:19 +00:00 
			
		
		
		
	In both DOS and ISO partition tables the same code to create partition name like "hda1" was repeated. Code moved to into a new function part_set_generic_name() in part.c and optimized. Added recognition of MMC and SD types, name is like "mmcsda1". Signed-off-by: Petr Kulhavy <brain@jikos.cz> Reviewed-by: Tom Rini <trini@konsulko.com> Acked-by: Steve Rae <steve.rae@raedomain.com> Reviewed-by: Simon Glass <sjg@chromium.org>
		
			
				
	
	
		
			143 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			5.0 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_USB_GADGET_DOWNLOAD
 | |
| 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_USB_FUNCTION_FASTBOOT,
 | |
| 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_FASTBOOT_BUF_ADDR and
 | |
| CONFIG_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
 | |
| 
 | |
| Partition Names
 | |
| ===============
 | |
| The Fastboot implementation in U-boot allows to write images into disk
 | |
| partitions (currently on eMMC). Target partitions are referred on the host
 | |
| computer by their names.
 | |
| 
 | |
| For GPT/EFI the respective partition name is used.
 | |
| 
 | |
| For MBR the partitions are referred by generic names according to the
 | |
| following schema:
 | |
| 
 | |
|   <device type> <device index letter> <partition index>
 | |
| 
 | |
| Example: hda3, sdb1, usbda1
 | |
| 
 | |
| The device type is as follows:
 | |
| 
 | |
|   * IDE, ATAPI and SATA disks: hd
 | |
|   * SCSI disks: sd
 | |
|   * USB media: usbd
 | |
|   * MMC and SD cards: mmcsd
 | |
|   * Disk on chip: docd
 | |
|   * other: xx
 | |
| 
 | |
| The device index starts from 'a' and refers to the interface (e.g. USB
 | |
| controller, SD/MMC controller) or disk index. The partition index starts
 | |
| from 1 and describes the partition number on the particular device.
 | |
| 
 | |
| Writing Partition Table
 | |
| =======================
 | |
| Fastboot also allows to write the partition table to the media. This can be
 | |
| done by writing the respective partition table image to a special target
 | |
| "gpt" or "mbr". These names can be customized by defining the following
 | |
| configuration options:
 | |
| 
 | |
| CONFIG_FASTBOOT_GPT_NAME
 | |
| CONFIG_FASTBOOT_MBR_NAME
 | |
| 
 | |
| 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 ...
 |