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给出的一张分区布局:

0818b9ca8b590ca3270a3433284dd417.png

图1

再来看MTK给出的系统启动流程图:

0818b9ca8b590ca3270a3433284dd417.png

图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)

参考链接

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐