MTK智能平台分区解析


2013-01-14 14:42:57|  分类: 默认分类 |  标签:mtk  scatter  android  分区  |举报|字号 订阅

联想A750内置4G存储,它是如何分配的?
有些买家看到手机内置存储卡大小连2G都不到,就开始咆哮了:“不是说4G ROM吗???“现在就让我帮你算算这标称的4G是怎么来的。
找一个文本查看器,打开/proc/dumchar_info
你将会看到里面的内容如下:

Part_Name    Size    StartAddr    Type    MapTo
preloader    0x00040000   0x00000000   2   /dev/misc-sd
dsp_bl       0x001e0000   0x00040000   2   /dev/misc-sd
mbr          0x00004000   0x00000000   2   /dev/block/mmcblk0
ebr1         0x0005c000   0x00004000   2   /dev/block/mmcblk0p1
pmt          0x00400000   0x00060000   2   /dev/block/mmcblk0
nvram        0x00300000   0x00460000   2   /dev/block/mmcblk0
seccfg       0x00020000   0x00760000   2   /dev/block/mmcblk0
uboot        0x00060000   0x00780000   2   /dev/block/mmcblk0
bootimg      0x00600000   0x007e0000   2   /dev/block/mmcblk0
recovery     0x00600000   0x00de0000   2   /dev/block/mmcblk0
sec_ro       0x00600000   0x013e0000   2   /dev/block/mmcblk0p5
misc         0x00060000   0x019e0000   2   /dev/block/mmcblk0
logo         0x00300000   0x01a40000   2   /dev/block/mmcblk0
expdb        0x000a0000   0x01d40000   2   /dev/block/mmcblk0
ebr2         0x00004000   0x01de0000   2   /dev/block/mmcblk0
android      0x20100000   0x01de4000   2   /dev/block/mmcblk0p6
cache        0x20100000   0x21ee4000   2   /dev/block/mmcblk0p2
usrdata      0x30100000   0x41fe4000   2   /dev/block/mmcblk0p3
fat          0x762fc000   0x720e4000   2   /dev/block/mmcblk0p4
bmtpool      0x00a00000   0xffdd0050   2   /dev/block/mmcblk0
Part_Name:Partition name you should open;
Size:size of partition
StartAddr:Start Address of partition;
Type:Type of partition(MTD=1,EMMC=2)
MapTo:actual device you operate



很明显,第一列是分区名称,第二列是分区大小,第三列是分区的地址偏移量,第四列说明分区是EMMC而非MTD,第五列是分区在内存中的镜像。

把第二列全部加起来,注意是十六进制相加,
sum=0x00040000+0x001e0000+0x00004000+0x0005c000+0x00400000+0x00300000+0x00020000+0x00060000+0x00600000+0x00600000+0x00600000+0x00060000+0x00300000+0x000a0000+0x00004000+0x20100000+0x20100000+0x30100000+0x762fc000+0x00a00000
=0xe9000000=3909091328

按照工业经典换算率,3909091328B=3.9GB

现在知道4G ROM是怎么来的吧?



接下来让我们看看官方刷机包里的一个文件MT6575_Android_scatter_emmc.txt。刷机包那么多文件,为什么偏偏看这个文件?因为它是刷机过程中唯一让我们选择的一个文件,就是点击Scatter-loading按钮所选的文件,由此可见此文件对刷机是至关重要的。

内容如下:


PRELOADER 0x0
{
}
DSP_BL 0x40000
{
}
MBR 0x220000
{
}
EBR1 0x224000
{
}
__NODL_PMT 0x280000
{
}
__NODL_NVRAM 0x680000
{
}
__NODL_SECCFG 0x980000
{
}
UBOOT 0x9a0000
{
}
BOOTIMG 0xa00000
{
}
RECOVERY 0x1000000
{
}
SEC_RO 0x1600000
{
}
__NODL_MISC 0x1c00000
{
}
LOGO 0x1c60000
{
}
__NODL_EXPDB 0x1f60000
{
}
EBR2 0x2000000
{
}
ANDROID 0x2004000
{
}
CACHE 0x22104000
{
}
USRDATA 0x42204000
{
}
FAT 0x72304000
{
}
__NODL_BMTPOOL 0xFFFF0050
{
}




这个文件标示了各个分区的地址偏移量,刷机工具将分区数据刷写到它标示的地址。在上面会看到几个特殊的分区,都是以下划线开头的,__NODL_*,NODL是什么意思呢?NODOWNLOAD,就是说,这些分区不下载,或者说,不更新。其中就有NVRAM分区,对这个就好理解了,这个分区保存了手机的SN,IMEI及网卡的MAC地址,手机出厂后,这些硬件参数是不变的,所以刷机不会更新它们。除了NVRAM外,还有几个也是NODL,这些分区尚不清楚其作用,但有一点是肯定没错的,那就是将NODL的分区备份出来,以防万一。
估计有人会问,怎么备份??
举个例子,备份NVRAM分区,首先看/proc/dumchar_info的内容,可以看到nvram的大小是3M,于是,安卓的瑞士军刀busybox就派上用场了,虽然安卓的toolbox也有dd命令,但是已经被精简得不太可靠了,所以选择瑞士军刀。
在这里先给读者提个醒,镜像地址是/dev/block/mmcblk0的各个分区其实真正的镜像地址在/dev目录,比如nvram的镜像就在/dev/nvram,因此,备份nvram的命令就是busybox dd if=/dev/nvram  of=/sdcard/nvram  bs=3M count=1   
以上命令只要保证bs与count都是整数且两者的乘积刚好是3M  。

其他分区类似,不再赘述。

你可能感兴趣的:(MTK智能平台分区解析)