红米6/6A/6 Pro/S2 +关注 已有17397人关注 +发表新主题
Mi_137350233

发烧级手机控

  1. 1235 积分
  2. 127 经验
  3. 550 贡献值

Ta的主页 发消息
签到
连续0天
0人
签到看排名
扫码下载App
一键签到 升级加速
回复

MIUI系统的MBR、EBR、scatter、800M的关系

发表在 玩机教程 2013-11-27 15:20:47  来自老版论坛 复制链接 手机看帖扫一扫!手机看帖更爽 29 7825

      自从拿到红米后,就开始在论坛学习,定制自己的ROOT包,并卡刷,再后来学习合并800M,期间遇到了很多困难,感谢论坛的各位老大的帮助。
      我觉得研究出来的东西应该拿出来的大家分享一下,由于时间有限,那就慢慢来,今天先说一说MBR、EBR等,因为这个和合并800M有关的。

一、文件名称解释
    scatter文件:该文件描述了MIUI系统中各个存储块的起始地址。卡刷中文件名为:scatter.txt,线刷中的文件名为:MT6589_Android_scatter_emmc.txt。
    MBR:主分区表,实际大小为512字节,用UE打开后,每行16个字节,最后四行代表分区情况,后面详细解释该文件。
    EBR1:从分区表1,实际大小为512字节。
    EBR2:从分区表2,实际大小为512字节。

二、每个文件内容解释
    1.scatter
    使用UE打开,使用WINDOWS文本打开的话,没有断行,且使用文本编辑后,MIUI系统可能无法识别。为什么?自己百度:换行0x0d 0x0a。LINUX使用0x0a代表换行,WINDOWS使用0x0d 0x0a两个字节代表换行。该文件格式:块名 地址。如果块名前面加__NODL_代表在线刷时,该地空间不写入内容。
    2.MBR、EBR1
    由于两个文件前面的内容都是0x00,所以在这里不列出,只列出有用的东西。
    大家看看下面两个表,地址代表MBR文件中这行内容的地址,其中,类型、起始地址、大小、结束四列的内容是MBR文件的原始数据,后面几列,是说明。相信有点计算机知识的都能看明白吧。

MBR分区表说明
(MBR的地始地址为:0x600000(从scatter文件得知),因以下地址转换到scatter时需加上。因分区表中每个单元为512Byte,即转换地址时需将起始地址*512,即0x200
地址
类型
起始地址
大小
 结束
起始地址转换反向看数据
大小转换反向看数据
说明
分区的块名
1C0H
0000 05000000
00 04 00 00
FF FF FF FF
00 00
0x000400
0xFFFFFFFF
05代表下个分区表信息,地址为0x400
0x400*0x200+0x600000=0x680000
EBR1的地址:0x680000
EBR1
1D0H
0000 83000000
00 68 00 00
00 50 00 00
00 00
0x006800
0x5000
83代表分区,起始地址为0x6800
0x6800*0x200+0x600000=0x1300000
PROTECT_F块的地址,大小为10M
PROTECT_F
1E0H
0000 83000000
00 B8 00 00
00 50 00 00
00 00
0x00B800
0x5000
83代表分区,起始地址为0xB800
0xB800*0x200+0x600000=0x1D00000
PROTECT_S块的地址,大小为10M
PROTECT_S
1F0H
0000 83000000
00 6C 00 00
00 30 00 00
55 AA
0x016C00
0x3000
83代表分区,起始地址为0x16C00
0x16C00*0x200+0x600000=0x3380000
SEC_RO块的地址,大小为6M
SEC_RO
EBR1分区表说明
(EBR1的地始地址为:0x680000(由MRB计算,从scatter文件得知),因以下地址转换到scatter时需加上。因分区表中每个单元为512Byte,即转换地址时需将起始地址*512,即0x200
地址
类型
起始地址
大小
 
起始地址转换
大小转换
说明
分区的块名
1C0H
0000 83000000
00 08 02 00
00 50 14 00
00 00
0x020800
0x145000
83代表分区,起始地址为0x020800
0x020800*0x200+0x680000=0x4780000
ANDROID块的地址,大小为650M
ANDROID
1D0H
0000 83000000
00 58 16 00
00 F0 03 00
00 00
0x165800
0x03F000
83代表分区,起始地址为0x165800
0x165800*0x200+0x680000=0x2D180000
CACHE块的地址,大小为126M
CACHE
1E0H
0000 83000000
00 48 1A 00
00 00 40 00
00 00
0x1A4800
0x400000
83代表分区,起始地址为0x1A4800
0x1A4800*0x200+0x680000=0x34F80000
USRDATA块的地址,大小为2048M
USRDATA,即系统存储
1F0H
0000 05000000
00 B4 01 00
FF FF FF FF
55 AA
0x01B400
0xFFFFFFFF
05代表下个分区表信息,地址为0x01B400
0x400*0x200+0x680000=0x680000
EBR2的地址
EBR2


      看了上面的说明,也许大家也明天怎么去合并800M了吧,因为EBR1文件里描述了USRDATA的大小,所以我们就改这里就可以了。将上表第三行大小一列00 00 40 00,改为FF FF FF FF,表示后面的空间全部归USRDATA,第四行所有数据清0,55 AA保留。

    通过线刷,将EBR1代替原厂的EBR1,顺便替换原厂的recovery,方便卡刷。

    在这里顺便提供一下红米MIUI的分区信息。
地址
名称
作用
大小
是在分区表体现
0x00000000
PRELOADER
 
 
0x00600000
MBR
主分区表
512K
(实际使用512)
0x006001FF
0x00680000
EBR1
从分区表1
512K
(实际使用512)
0x006801FF
0x00700000
PMT
 
4M
0x00AFFFFF
0x00B00000
INFO
 
3M
0x00DFFFFF
0x00E00000
NVRAM
 
5M
0x012FFFFF
0x01300000
PROTECT_F
 
10M
0x01CFFFFF
0x01D00000
PROTECT_S
 
10M
0x026FFFFF
0x02700000
SECCFG
 
128K
0x0271FFFF
0x02720000
UBOOT
 
384K
0x0277FFFF
0x02780000
BOOTIMG
 
6M
0x2D7FFFF
0x2D80000
RECOVERY
 
6M
0x337FFFF
0x3380000
SEC_RO
 
6M
0x397FFFF
0x3980000
MISC
 
512K
0x39FFFFF
0x3A00000
LOGO
 
3M
0x3CFFFFF
0x3D00000
EBR2
 
512K
0x3D7FFFF
0x3D80000
EXPDB
 
10M
0x477FFFF
0x4780000
ANDROID
 
650M
0x2D17FFFF
0x2D180000
CACHE
 
126M
0x34F7FFFF
0x34F80000
USRDATA
系统存储
2048M
0xB4F7FFFF
0xB4F80000
FAT
800M的空间
1200M
0xFFFF00A7
0xFFFF00A8
BMTPOOL
 
64K
0xFFFFFFFF

扫描二维码,手机查看本帖
发表
回复