天天看点

MTK平台修改分区大小之后,通过fastboot工具烧录的说明

1、gpt分区存储的是分区表本身相关信息:

gpt分区,放在对应存储器区域起始,起始偏移为0,分区大小直接参考MTXXXX_Android_scatter.txt即可;

要烧录分区表信息文件需要烧录以下文件

fastboot flash gpt PGPT_EMMC/PGPT_UFS
           

本项目选择的是PGPT_UFS,所以需要烧录PGPT_UFS,如果使用的是PGPT_EMMC,则对应烧录即可,当需要更新分区表信息时,其他对应的img文件也需要重新烧录一遍,否则可能会导致无法开机。

2、验证过程

1.查看当前MTK设备的分区挂载情况:

通过ls -l /dev/block/platform/bootdevice/by-name命令可以查看到当前的分区挂载情况

console:/ # ls -l /dev/block/platform/bootdevice/by-name           
total 0
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 audio_dsp -> /dev/block/sdc21
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 boot -> /dev/block/sdc33
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 boot_para -> /dev/block/sdc19
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 cache -> /dev/block/sdc41
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 cam_vpu1 -> /dev/block/sdc26
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 cam_vpu2 -> /dev/block/sdc27
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 cam_vpu3 -> /dev/block/sdc28
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 dtbo -> /dev/block/sdc35
lrwxrwxrwx 1 root root 15 2021-06-23 12:18 expdb -> /dev/block/sdc4
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 flashinfo -> /dev/block/sdc43
lrwxrwxrwx 1 root root 15 2021-06-23 12:18 frp -> /dev/block/sdc5
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 gz1 -> /dev/block/sdc29
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 gz2 -> /dev/block/sdc30
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 lk -> /dev/block/sdc31
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 lk2 -> /dev/block/sdc32
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 logo -> /dev/block/sdc34
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 md1img -> /dev/block/sdc18
lrwxrwxrwx 1 root root 15 2021-06-23 12:18 md_udc -> /dev/block/sdc9
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 metadata -> /dev/block/sdc10
lrwxrwxrwx 1 root root 15 2021-06-23 12:18 misc -> /dev/block/sdc2
lrwxrwxrwx 1 root root 15 2021-06-23 12:18 nvcfg -> /dev/block/sdc7
lrwxrwxrwx 1 root root 15 2021-06-23 12:18 nvdata -> /dev/block/sdc8
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 nvram -> /dev/block/sdc17
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 otp -> /dev/block/sdc14
lrwxrwxrwx 1 root root 15 2021-06-23 12:18 para -> /dev/block/sdc3
lrwxrwxrwx 1 root root 23 2021-06-23 12:18 preloader_a -> /dev/block/mmcblk0boot0
lrwxrwxrwx 1 root root 23 2021-06-23 12:18 preloader_b -> /dev/block/mmcblk0boot1
lrwxrwxrwx 1 root root 50 2021-06-23 12:18 preloader_emmc_a ->
/dev/block/platform/bootdevice/by-name/preloader_a
lrwxrwxrwx 1 root root 50 2021-06-23 12:18 preloader_emmc_b ->
/dev/block/platform/bootdevice/by-name/preloader_b
lrwxrwxrwx 1 root root 50 2021-06-23 12:18 preloader_ufs_a ->
/dev/block/platform/bootdevice/by-name/preloader_a
lrwxrwxrwx 1 root root 50 2021-06-23 12:18 preloader_ufs_b ->
/dev/block/platform/bootdevice/by-name/preloader_b
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 product -> /dev/block/sdc38
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 proinfo -> /dev/block/sdc16
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 protect1 -> /dev/block/sdc11
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 protect2 -> /dev/block/sdc12
lrwxrwxrwx 1 root root 15 2021-06-23 12:18 recovery -> /dev/block/sdc1
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 scp1 -> /dev/block/sdc22
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 scp2 -> /dev/block/sdc23
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 sec1 -> /dev/block/sdc15
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 seccfg -> /dev/block/sdc13
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 spmfw -> /dev/block/sdc20
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 sspm_1 -> /dev/block/sdc24
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 sspm_2 -> /dev/block/sdc25
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 system -> /dev/block/sdc40
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 tee1 -> /dev/block/sdc36
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 tee2 -> /dev/block/sdc37
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 userdata -> /dev/block/sdc42
lrwxrwxrwx 1 root root 15 2021-06-23 12:18 vbmeta -> /dev/block/sdc6
lrwxrwxrwx 1 root root 16 2021-06-23 12:18 vendor -> /dev/block/sdc39
           

然后通过cat /sys/block/sdc/sdcXX/size命令可以查看对应分区的大小,例如我这里查看system的分区大小。

console:/ # cat /sys/block/sdc/sdc40/size //查看system分区大小
6291456
           

然后通过查看对应size值为分区对应大小,单位为512byte,将得到的size值乘以512,然后除以1024,也即

直接将size值除以2即可得到对应分区的大小与partition_table_MT6785_emmc.csv分区表对应,大小为KB。

例如这里的sdc40对应的分区img是system分区,它在partition_table_MT6785_emmc.csv分区表对应的配置为

6291456/2=3145728KB

2.修改mtk的分区文件(注意修改的数值大小要确保是1024的倍数,不然有可能会导致烧录之后机器跑起来有问题

或者开不了机), device/mediatek/build/build/tools/ptgen/MT6785/partition_table_MT6785_emmc.csv

随便改一个分区来验证,例如我这里改了system分区,如下代码所示:

--- a/device/mediatek/build/build/tools/ptgen/MT6785/partition_table_MT6785_emmc.csv
+++ b/device/mediatek/build/build/tools/ptgen/MT6785/partition_table_MT6785_emmc.csv
@@ -2,7 +2,7 @@
Partition_Name,Type,Size_KB,,Region,,Group,Reserved,Download,Download_File,OTA_U
,,eng,user,emmc,ufs,,,,,,,eng,user,eng,user,
preloader,Raw data,512,,EMMC_BOOT1_BOOT2,UFS_LU0_LU1,,N,Y,AUTO,Y,N,N,,N,,BOOTLOADERS
pgpt,Raw data,32,,EMMC_USER,UFS_LU2,,N,N,NONE,N,N,Y,N,Y,N,AUTO
recovery,Raw data,32768,,EMMC_USER,UFS_LU2,,N,Y,recovery.img,Y,N,Y,,Y,,AUTO
misc,Raw data,512,,EMMC_USER,UFS_LU2,,N,N,NONE,N,N,N,,N,,AUTO
para,Raw data,512,,EMMC_USER,UFS_LU2,,N,N,NONE,N,N,N,,N,,AUTO
expdb,Raw data,20480,,EMMC_USER,UFS_LU2,,N,N,NONE,N,N,N,,N,,AUTO
@@ -51,7 +51,7 @@ tee2,Raw data,5120,,EMMC_USER,UFS_LU2,,N,Y,tee.img,Y,N,N,,N,,AUTO
odm,EXT4,32768,,EMMC_USER,UFS_LU2,main,N,Y,odm.img,Y,N,Y,,Y,,AUTO
product,EXT4,409600,,EMMC_USER,UFS_LU2,main,N,Y,product.img,Y,N,Y,,Y,,AUTO
vendor,EXT4,524288,,EMMC_USER,UFS_LU2,main,N,Y,vendor.img,Y,N,Y,,Y,,AUTO
-system,EXT4,3145728,,EMMC_USER,UFS_LU2,main,N,Y,system.img,Y,N,Y,,Y,,AUTO
+system,EXT4,4145728,,EMMC_USER,UFS_LU2,main,N,Y,system.img,Y,N,Y,,Y,,AUTO
super,Raw data,3670016,,EMMC_USER,UFS_LU2,,N,Y,super.img,Y,N,N,,N,,AUTO
cache,EXT4,442368,,EMMC_USER,UFS_LU2,,N,Y,cache.img,N,N,Y,,Y,,AUTO
userdata,EXT4,3145728,,EMMC_USER,UFS_LU2,,N,Y,userdata.img,N,N,Y,,Y,,AUTO
           

3.修改之后fastboot烧录PGPT_UFS和所有img文件(注意:修改之后要重新烧录所有的img文件)

fastboot devices
fastboot flash gpt PGPT_UFS
fastboot preloader preloader_gm10_g90_k85v1_64_V6.bin
fastboot flash recovery recovery.img
fastboot flash vbmeta vbmeta.img
fastboot flash md1img md1img-verified.img
fastboot flash spmfw spmfw-verified.img
fastboot flash audio_dsp audio_dsp-verified.img
fastboot flash scp1 scp-verified.img
fastboot flash scp2 scp-verified.img
fastboot flash sspm_1 sspm-verified.img
fastboot flash sspm_1 sspm-verified.img
fastboot flash lk lk-verified.img
fastboot flash lk2 lk-verified.img
fastboot flash boot boot.img
fastboot flash logo logo-verified.bin
fastboot flash dtbo dtbo-verified.img
fastboot flash tee1 tee-verified.img
fastboot flash tee2 tee-verified.img
fastboot flash product product.img
fastboot flash vendor vendor.img
fastboot flash system system.img
fastboot flash cache cache.img
fastboot flash userdata userdata.img
pause
           

4.修改烧录之后应该得到以下结果:

console:/ $ cat /sys/block/sdc/sdc40/size //查看system分区大小
8306688
           

5.尝试修改别的分区,例如boot.img分区来验证。

原本是32 * 1024=32768KB,我改大成33 * 1024=33792KB

--- a/device/mediatek/build/build/tools/ptgen/MT6785/partition_table_MT6785_emmc.csv
+++ b/device/mediatek/build/build/tools/ptgen/MT6785/partition_table_MT6785_emmc.csv
@@ -42,7 +42,7 @@ gz1,Raw data,32768,,EMMC_USER,UFS_LU2,,N,Y,gz.img,Y,N,N,,N,,AUTO
gz2,Raw data,32768,,EMMC_USER,UFS_LU2,,N,Y,gz.img,Y,N,N,,N,,AUTO
lk,Raw data,2048,,EMMC_USER,UFS_LU2,,N,Y,lk.img,Y,Y,Y,N,Y,N,AUTO
lk2,Raw data,2048,,EMMC_USER,UFS_LU2,,N,Y,lk.img,Y,N,Y,N,Y,N,AUTO
-boot,Raw data,32768,,EMMC_USER,UFS_LU2,,N,Y,boot.img,Y,N,Y,,Y,,AUTO
+boot,Raw data,33792,,EMMC_USER,UFS_LU2,,N,Y,boot.img,Y,N,Y,,Y,,AUTO
logo,Raw data,8192,,EMMC_USER,UFS_LU2,,N,Y,logo.bin,N,Y,Y,N,Y,N,AUTO
odmdtbo,Raw data,16384,,EMMC_USER,UFS_LU2,,N,Y,odmdtbo.img,Y,N,Y,,Y,,AUTO
dtbo,Raw data,8192,,EMMC_USER,UFS_LU2,,N,Y,dtbo.img,Y,N,Y,,Y,,AUTO
           

修改前boot分区大小为65536/2 =32768KB

console:/ $ cat /sys/block/sdc/sdc33/size                   
65536
           

修改后boot分区大小为67584/2=33792KB

console:/ $ cat /sys/block/sdc/sdc33/size                   
67584