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
- Connect a USB cable to the OTG port on your platform
- Boot your platform up with a stock u-boot and MLO
- 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.
Android eMMC Booting的更多相关文章
- Android gingerbread eMMC booting
Android gingerbread eMMC booting This page is currently under construction. The content of this page ...
- AM335x Android eMMC mkmmc-android.sh hacking
# AM335x Android eMMC mkmmc-android.sh hacking # # . 有空解读一下android的分区文件. # . 代码来源:https://github.com ...
- 碎碎念android eMMC【转】
本文转载自:https://blog.csdn.net/Fybon/article/details/44242549 一./dev/blockroot@:/dev/block #ls bootdevi ...
- Android Service Summary
In the Androird, service is a none-UI background process that is doing some specific jobs. 6.1 Ex ...
- Android MMC/EMMC/MTD Partition Layout
Android devices have a couple of partitions to store different data. The common ones are the recover ...
- I.MX6 Android 5.1 回到 Android 4.2 emmc 启动
/*************************************************************************** * I.MX6 Android 5.1 回到 ...
- App doesn't auto-start an app when booting the device in Android
From Android 3.1, newly installed apps are always put into a "stopped" state and the only ...
- Android Bootloader LittleKernel的两篇文章 【转】
转自:http://blog.csdn.net/loongembedded/article/details/41747523 2014-12-05 14:37 3599人阅读 评论(2) 收藏 举报 ...
- Android系统启动过程-uBoot+Kernel+Android
摘要:本文是参考大量网上资源在结合自己查看源代码总结出来的,让自己同时也让大家加深对Android系统启动过程有一个更加深入的了解!再次强调,本文的大多数功劳应归功于那些原创者们,同时一些必要的参考链 ...
随机推荐
- 【BZOJ】【1025】【SCOI2009】游戏
DP/整数拆分 整个映射关系可以分解成几个循环(置换群的预备知识?),那么总行数就等于各个循环长度的最小公倍数+1(因为有个第一行的1~N).那么有多少种可能的排数就等于问有多少种可能的最小公倍数. ...
- c++new和new()区别(了解)
我们在C++程序中经常看到两种new的使用方式:new A以及new A().那么这两种究竟有什么区别呢? 调用new分配的内存有时候会被初始化,而有时候不会,这依赖于A的类型是否是POD(Plain ...
- Portlet之讲解
Portlet在Web门户上管理和显示的可插拔的用户界面组件.Portlet产生可以聚合到门户页面中的标记语言代码的片段,如HTML,XML等.通常,根据桌面隐喻,一个门户页面显示为一组互相不重叠的p ...
- MYSQL导入导出.sql文件(转)
一.MYSQL的命令行模式的设置: 桌面->我的电脑->属性->环境变量->新建-> PATH=“:path\mysql\bin;”其中path为MYSQL的安装路径. ...
- .net深入体验与实战精要--ASP.NET开发大杂烩(转)
转自:http://www.cnblogs.com/sunhan/p/3371337.html 正巧今天遇到一个获取动态生成table中的一个动态生成的TextBox的值的时候总是findcontro ...
- [初级教程]用SecureCRT+Xming轻松远程实现Linux的X DISPLAY
[初级教程]用SecureCRT+Xming轻松远程实现Linux的X DISPLAY 发布者:sqqdugdu 时间:10-06 阅读数:2117 测试环境:RHEL 6.1,SecureCRT 5 ...
- POJ 1679 The Unique MST(次小生成树)
题意:求解最小生成树的权值是否唯一,即要我们求次小生成树的权值两种方法求最小生成树,一种用prim算法, 一种用kruskal算法 一:用prim算法 对于给定的图,我们可以证明,次小生成树可以由最小 ...
- 获取及管理Android 手机运营商及状态
主要类 TelephonyManager: telephonyManager.getCellLocation();//获得服务区 telephonyManager.getCellId();//获得服务 ...
- android:scaleType属性
android:scaleType是控制图片如何resized/moved来匹对ImageView的size. ImageView.ScaleType / android:scaleType值的意义区 ...
- 在C#中读写INI配置文件(转)
在作应用系统开发时,管理配置是必不可少的.例如数据库服务器的配置.安装和更新配置等等.由于Xml的兴起,现在的配置文件大都是以xml文档来存储.比如Visual Studio.Net自身的配置文件Ma ...