zoukankan      html  css  js  c++  java
  • Android eMMC Booting

    Android eMMC Booting

    Contents

      [hide]

    [edit]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
    

    [edit]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
    

    [edit]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-point/
     # Above command won't work on GB/HC. For GB/HC, please use the following updated command
     %sudo ./out/host/linux-x86/bin/make_ext4fs -s -l 512M -a data userdata.img.new mnt-point/
     %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
    

    [edit]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.

  • 相关阅读:
    HTML DOM 12 表格排序
    HTML DOM 10 常用场景
    HTML DOM 10 插入节点
    HTML DOM 09 替换节点
    HTML DOM 08 删除节点
    HTML DOM 07 创建节点
    022 注释
    024 数字类型
    005 基于面向对象设计一个简单的游戏
    021 花式赋值
  • 原文地址:https://www.cnblogs.com/liang123/p/6325495.html
Copyright © 2011-2022 走看看