Template Information

Trang

Android eMMC Booting

Thứ Năm, 18 tháng 8, 2011 / 07:00

eMMC binaries

This is the efi partition table as exists on the emmc
Sector#    Size Name

256 128K xloader

512 256K bootloader

2048 8M recovery

18432 8M boot

34816 512M system

1083392 256M cache

1607680 512M userdata

2656256 2183M media

Creating the GPT table

On Target

  1. Connect a USB cable to the OTG port on your platform

  2. Boot your platform up with a stock u-boot and MLO

  3. Once you platform is booted you will see the following:

Fastboot entered...

On Host Machine

locate fastboot in you android filesystem
cd $mydroid/out/host/linux-x86/bin/fastboot

Search for fastboot devices
fastboot devices

Create GPT table on eMMC/SD card
fastboot oem format

From the android build these are the binaries that go into each partition:
Sector#    Size Name            Binary

256 128K xloader MLO

512 256K bootloader u-boot.bin

2048 8M recovery recovery.img

18432 8M boot boot.img

34816 512M system system.img

1083392 256M cache cache.img

1607680 512M userdata userdata.img

2656256 2183M media none



File locations

  • MLO --> x-loader/MLO

  • u-boot --> u-boot/u-boot.bin

  • boot.img --> need to create using zImage + ramdisk.img

  • recovery.img ---> need to create using zImage + ramdisk-recovery.img

  • system.img --> $mydroid/out/target/product/<platform>/system.img

  • cache.img -->

  • userdata.img --> $mydroid/out/target/product/<platform>/userdata.img



All these partitions can be flashed with the given binary using fastboot.
fastboot flash <name> <binary>

Example flashing of all partitions
fastboot flash xloader     MLO

fastboot flash bootloader u-boot.bin

fastboot flash recovery recovery.img

fastboot flash boot boot.img

fastboot flash system system.img

fastboot flash cache cache.img

fastboot flash userdata userdata.img

Modifying .IMG Files

Typically when you want to modify any of the partitions, you would need to unzip-modify-rezip and then fastboot flash.
Following section talks about how to do that for each partition
BOOT.IMG
boot.img = zImage + ramdisk.img

zImage = kernel image

ramdisk.img = out/target/product/blaze/root/

 %./out/host/linux-x86/bin/mkbootimg

--kernel zImage

--ramdisk ramdisk.img

--base 0x80000000

--cmdline "console=ttyO2,115200n8 mem=456M@0x80000000 mem=512M@0xA0000000 init=/init vram=10M omapfb.vram=0:4M androidboot.console=ttyO2"

--board omap4

-o boot.img.new

Output: boot.img.new

**Note: bootarg is passed to kernel via --cmdline option above

To "just" boot boot.img (before flashing) you can use:
%fastboot boot boot.img

RAMDISK.IMG
 %mkdir root

 %cd root

 %gunzip -c ../ramdisk.img | cpio -i

<make changes to root/ contents...>

 %./out/host/linux-x86/bin/mkbootfs root/ | ./out/host/linux-x86/bin/minigzip >ramdisk.img.new

#output: ramdisk.img.new

** Note: any init.rc changes will need to use this method

RECOVERY.IMG
Is just like boot.img. 

recovery.img = zImage + ramdisk-recovery.img

*Follow the same steps as boot.img for packing/unpacking

SYSTEM.IMG
#uncompress

 %./out/host/linux-x86/bin/simg2img system.img system.img.raw

#mount to directory mnt-point/

 %mkdir mnt-point

 %sudo mount -t ext4 -o loop system.img.raw mnt-point/

#modify any .so or apk in the mnt-point/ directory

#rezip

 %sudo out/host/linux-x86/bin/make_ext4fs -s -l 512M -a system system.img.new mnt-point/

 %sudo umount mnt-point/

Output: system.img.new

Instead of having to reflash the whole big system.img, one can selective update any binary in /system folder on running target
%adb remount

%adb push <local> <remote>

Eg:

%adb remount

%adb push out/target/product/blaze/obj/lib/overlay.omap4.so /system/lib/hw/overlay.omap4.so

%adb sync

USERDATA.IMG
#uncompress

 %./out/host/linux-x86/bin/simg2img userdata.img userdata.img.raw

#mount to directory mnt-point/

 %mkdir mnt-point

 %sudo mount -t ext4 -o loop userdata.img.raw mnt-point/

#modify any .so or apk in the mnt-point/ directory

#rezip

 %sudo ./out/host/linux-x86/bin/make_ext4fs -s -l 512M -a userdata userdata.img.new mnt/

 %sudo umount mnt-point/

Output: userdata.img.new

CACHE.IMG
#This is empty ext4 fs image

 %mkdir mnt-point/

 %sudo ./make_ext4fs -s -l 256M -a cache cache.img mnt-point/

Output: cache.img

TI Android build setup

Copy kernel zImage, u-boot.bin and MLO for your board in folder device/ti/blaze/boot/.
Rename as:
 %mv MLO MLO_es2.2_emu 

or

 %mv MLO MLO_es2.2_gp

(based on your board being GP or EMU)

Next start standard android build and all img files are generated in:
out/target/product/blaze/*.img

A script is introduced in TI Android release to make this flashing process easier: device/ti/blaze/boot/fastboot.sh
Usage:

cd device/ti/blaze/boot/

%fastboot.sh --emu

or

%fastboot.sh --gp

Running this script will flash whole android system on your board.

0 nhận xét:

Đăng nhận xét