MTK 6577+Android EMMC分区布局
先来看MT6575_Android_scatter_emmc.txt的内容:
PRELOADER 0x0
{
}
DSP_BL 0x40000
{
}
MBR 0x600000
{
}
EBR1 0x604000
{
}
__NODL_PMT0x608000
{
}
__NODL_NVRAM0xa08000
{
}
__NODL_SECCFG0xf08000
{
}
UBOOT 0xf28000
{
}
BOOTIMG0xf88000
{
}
RECOVERY0x1588000
{
}
SEC_RO0x1b88000
{
}
__NODL_MISC0x2188000
{
}
LOGO 0x21e8000
{
}
__NODL_EXPDB0x24e8000
{
}
ANDROID0x26e8000
{
}
CACHE0x227e8000
{
}
USRDATA0x428e8000
{
}
__NODL_FAT0x629e8000
{
}
__NODL_BMTPOOL0xFFFF00a8
{
}
此文件在mediatek\source\misc下可以找到,这里的地址指导对应的image烧录到EMMC具体的地方,比如PRELOADER烧录到起始地址为0x0的地方,
__NODL_*,NODL是什么意思呢?NODOWNLOAD,就是说,这些分区不下载,或者说,不更新。其中就有NVRAM分区,对这个就好理解了,这个分区保存了手机的SN,IMEI及网卡的MAC地址,手机出厂后,这些硬件参数是不变的,所以刷机不会更新它们。除了NVRAM外,还有几个也是NODL,这些分区尚不清楚其作用,但有一点是肯定没错的,那就是将NODL的分区备份出来,以防万一。
可见是需要把这些镜像文件烧录到EMMC中的,这些镜像的功能主要是什么呢?下面先借用MTK给出的一张分区布局:
图1
再来看MTK给出的系统启动流程图:
图2
ISRAM是指内部RAM(MTK6577有64KB),DRAM是外部RAM。
由于不同处理器芯片厂商对arm core的封装差异比较大,所以不同的arm处理器,对于上电引导都是由特定处理器芯片厂商自己开发的程序,这个上电引导程序通常比较简单,会初始化硬件,提供下载模式等,然后才会加载通常的bootloader。
下面是几个arm平台的bootloader方案:
marvell(pxa935) : bootROM + OBM [l4] + BLOB
informax(im9815) : bootROM + barbox + U-boot
mediatek(mt6516/6517) : bootROM + pre-loader[l5] + U-boot
broadcom(bcm2157) : bootROM + boot1/boot2 + U-boot
下面安装保存在EMMC中地址递增的顺序来学习这些分区:
(1) Pre-loader
处理所有的下载和安全启动,第1个引导镜像,初始化EMMI、PLL和外部RAM等。
(2) DSP-BL
DSP引导程序(boot loader),modem+DSP。
(3) MBR
Master Boot Record主引导记录,定义在mediatek\source\misc下面。
(4) EBR1
Extend BootRecord扩展分区记录,记录了扩展分区包含了哪些分区,比如可能是USRDATA和FAT。
(5) PMT
这里还不知道PMT是指什么,知道的朋友麻烦分享下,后面在学习中搞懂了再不上来。
(6) NVRAM
保存硬件相关相关信息,比如校准数据(calibration data)、MAC地址、IMEI等等。
(7) SECCFG
SEC是security的简称,CFG是指configuration的简称,预留给安全平台。
(8) UBOOT
第2个引导镜像,处理大多数硬件初始化和启动整个内核(bring-upentire Linux kernel)。
(9) BOOTIMG
Linux内核镜像和它的根(root)文件系统,内核和ramdisk的根文件系统打包在一起,对应于boot.imag。
(10) RECOVERY
恢复模式下回复内核镜像和它的根文件系统,处理所有的系统恢复和固件(firmware)更新功能。
(11) SEC_RO
RO是region的简称,区域的意思,这里是为安全平台预留的安全区域。
(12) MISC
用于恢复处理(power loss)。
(13) LOGO
开机logo区域。
(14) EXPDB
用于保存内核panic调试信息。
(15) ANDROID
是一个YAFFS2文件系统,android系统镜像,对应system.img。
(16) CACHE
是一个YAFFS2文件系统,它将挂载到/cache目录下,Android系统内部系统,这里主要用于升级的缓存,比如保存android内部缓存数据(cache data)或是web缓存数据,内容由运行时来定。
(17) USRDATA
是一个YAFFS2文件系统,它将挂载到/data目录下,编译生成userdata.img,包含了所有应用相关的配置文件,以及用户相关数据NVRAM等参数。
(18) FAT
应该是指FAT文件系统,用户的数据就保存在这个区域,也是最大的分区。
(19) BMTPOOL
BM表示坏块管理(Bad block Manage)
参考链接
android 分区layout以及虚拟内存布局-小结
http://blog.csdn.net/honour2sword/article/details/8676230