二、单分区、AB分区、动态分区及virtualAB分区
这里把单分区、AB分区、动态分区及virtualAB分区放在一起说明一下,virtualAB是安卓R新特性会相对详细说明。
(一)单分区——>AB分区
单分区,我之前讲的那个MTK分区布局图就是单分区的
可以看到单分区在EMMC的USER区域是没有备份的,所以比如lk所在的EMMC区域发生了坏块或者被用户无意修改损坏,整个系统就启动不了。
怎么解决这个问题呢?
答:做备份啊,如果我EMMC空间足够,而我备份一下重要的分区:如lk、boot、recovery。即使用户无意修改损坏了原分区,我依然可以从备份的分区启动,甚至还原原分区。
这就是AB分区的作用
对于MTK,单分区改成AB分区很简单
(1)修改打包列表,去掉recovery.img和cache.img
为什么这样做?
我有问过组内大牛,大牛回复因为AB分区OTA升级无需进入recovery模式,cache.img也是同样的原因
(2)修改项目配置文件alps/device/wingtech/项目名/ProjectConfig.mk
将MTK_AB_OTA_UPDATER配置为yes(原来没有加上)
(3)修改preloader配置文件
alps/vendor/mediate/proprietary/bootable/bootloader/preloader/custom/项目名/项目名.mk
将MTK_AB_OTA_UPDATER配置为yes(原来没有加上)
再在”export MTK_PLATFORM_MTK_MT6333_SUPPORT …”后面加上“MTK_AB_OTA_UPDATER”
(4)修改lk配置文件
alps/vendor/mediate/proprietary/bootable/bootloader/lk/project/项目名.mk
将MTK_AB_OTA_UPDATER配置为yes(原来没有加上)
(5)修改内核配置文件(以32为为例)
Alps/kernel-4.9/arch/arm/config/项目名_defconfig、项目名_debug_defconfig
将CONFIG_MTK_AB_OTA_UPDATER配置为yes(原来没有加上)
(二)AB——>动态分区
有AB分区,我不用担心重要分区损坏后启动不了的问题。但是有一些分区比如
System、vendor、product这些分区,由于这些分区数据改动比较大,很有可能我项目最开始设置比如system分区1024M,但项目越做system数据越多,结果发现1024M不够了。
这个时候如果我去改分区表,那就只能重新烧录了。不说全擦烧,fireware upgrade固件升级烧录方式是免不了了。
为了少数几个分区,我就把全烧一遍,很不划算。
所以这样解决
我单独划出一个大分区super,把system、vendor、product等有可能以后需要扩大的分区都放在super这个大分区区域里面,而我故意把super分区设置的大一点,这样super分区除了system、vendor、product这些分区占用的空间,还有一部分空闲区域