android 9.0 中关于OTA 升级的注意事项

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wed110/article/details/85691521

droid 分区查看 emcc 7.x 8.x

一、要确定有多少个分区?

详细解析:

major 表示主设备号 

minor 表示次设备号 

#blocks 表示的是block的数目 

name 是指的设备名称

例如:

major 主设备号,比如一个U盘有3个分区,主设备名为sda,major为8,分区的major也为8 (可能所有的U盘插进来,major都是8),minor则为分区号,sda1,sda2,minor值为1 ,2

zram swap 主要原理就是从内存分配一块区域出来用作 swap 分区。如果内存空间不够时,不是把应用程序杀掉,而是把应用程序所占用的内存数据复制到 swap 分区,等切换回来的时候就可以直接把这部分数据恢复到内存当中,节省重新开启所需的时间。

而被放到 swap 分区的应用程序,所占用的内存都是被压缩过的。

注:

config中均是我司内部有测试过的,如无特殊需求,建议按照default设定,因为设置太大的swap ,会导致可以直接使用的内存减少,这样就会间接增加压缩,解压缩对CPU的消耗,当然这个设置较大,可以缓存更多应用在内存,若设置较少,可用内存较多,但是A-go的版本本身的内存并不大,设置较少,会使缓冲的应用较少,这样每次启动也会延长时间

USRDATA分区就是任何用户都可以读写的分区,不可设置大小,大小等于emmc总容量减去其他分区的大小。

mmcblk0 为 eMMC 的块设备,也相当于真实内部存储总容量

mmcblk0boot0 和 mmcblk0boot1 对应两个 Boot Area Partitions,这两个区域在存储的稳定性、可靠性及擦除次数上都远比UDA要好 ,所以经常放一些关键数据

mmcblk0rpmb 则为 RPMB Partition,保护性存储,是用来给系统存放一些特殊的、需要进行访问授权的数据(指纹,安全支付)

mmcblk0px 为 UDA 划分出来的 SW Partitions,AP及用户可以进行读写存储的区域,通常其大小为整块EMMC表示大小的93%左右

注:

1k-blocks=1024B

二、分区对应的别名?

也可以到源码里面获取这些信息:

mtk方案:

out\target\product\k39tv1_64_bsp\recovery\root\etc

recovery.fstab

三、主要的分区是?

四、怎么修改?

8.x MTK

eg:

alps/device/mediatekprojects/$project/BoardConfig.mk中设定:

BOARD_MTK_SYSTEM_SIZE_KB := 改成你需要的

BOARD_MTK_VENDOR_SIZE_KB := 307200

BOARD_MTK_CACHE_SIZE_KB := 114688

8.x sprd

eg:

device/sprd/pike2/sp7731e_1h10/BoardConfig.mk中定义:

BOARD_VENDORIMAGE_PARTITION_SIZE :=314572800

BOARD_CACHEIMAGE_PARTITION_SIZE := 104857600

BOARD_SYSTEMIMAGE_PARTITION_SIZE := 改成你需要的--待确定,修改如下:

五、附件

六、知识补充:

swap功能

swap 分区

https://blog.csdn.net/fanmengke_im/article/details/28389495

单个手机自定义

https://blog.csdn.net/u011109881/article/details/73694700

打开关闭swap

https://blog.csdn.net/Extreme_fallen/article/details/84322475

解析swap

https://blog.csdn.net/hiyun9/article/details/51967742

adb shell cat /proc/swaps ---对应的swaps分区

mtk8.1 关闭swap

echo 0 > proc/sys/vm/swaappiness

echo 0 > /sys/fs/cgroup/memory/sw/memory.swappiness

查看swap功能是否开启?

adb shell cat /proc/meminfo

查看SwapTotal的值是否为0,0代表关闭

linux查看磁盘及文件大小:

du -h

du -sh

---文件大小

df -h

---磁盘大小

free -m

https://www.cnblogs.com/coldplayerest/archive/2010/02/20/1669949.html

CTS要求

https://source.android.com/compatibility/cdd

https://source.android.com/compatibility/android-cdd.pdf

vendor.img

http://gityuan.com/2018/04/08/android_p/

为什么emmc总量大于实际设备中显示的大小?

1.emmc存储中有坏死块

2.8G的计算方式不一致

8G=8*1000MB=8*1000*1000KB=8*1000*1000*1000B

而我们计算机或手机的计算方式为:

8G=8*1024MB=8*1024*1024KB=8*1024*1024*1024B

3.本身存储了部分软件,占了部分空间

参考学习

https://blog.csdn.net/roland_sun/article/details/50969958

https://www.cnblogs.com/xiaolei-kaiyuan/p/5462436.html

https://blog.csdn.net/tianshiyalin/article/details/37775057

https://blog.csdn.net/u013686019/article/details/66472291

https://linux.codingbelief.com/zh/storage/flash_memory/

https://blog.csdn.net/u014645605/article/details/52061034

https://blog.csdn.net/zhouzhenhe2008/article/details/72943314?utm_source=blogxgwz3

https://www.jianshu.com/p/33335b7cc6bb

mtk online中相关资料

[FAQ06257] Flash上新建分区的大小限定

内容 (2014-09-10)

目前的分区类型有如下两种:Rawdata和文件系统,文件系统的类型与Flash类型相关,Nand Flash上的文件系统为Yaffs2;Emmc上的文件系统为Ext4。

Rawdata:至少1*Block Size;

Yaffs2: 至少9*Block Size;

Ext4:至少5MB

目前常见的Nand Flash上,Block Size一般为128KB和256KB。

另外需要注意一点,新建分区的start address和size必须是Block align的。

[FAQ06165] [NVRAM][SIM_ME_LOCK]protect_f和protect_s分区的作用是什么?

内容 (2017-07-07)

[Description]

protect_f和protect_s分区的作用是什么?

[Solution]

在没有Protect_s和Protect_f分区之前,SIM ME LOCK数据存在USER DATA分区内,详细路径为/data/nvram/md/NVRAM/IMPORTANT。

当恢复出厂设置时,会将/data/nvram/md/下的文件全部清除,其后开机时会将NVRAM BIN Region中备份的数据recovery到/data/nvram/md/下。

如NVRAM BIN REGION中数据为空,则会按照默认值生成SIM ME LOCK数据。

如NVRAM BIN REGION中数据不为空,则会将SIM ME LOCK数据恢复为NVRAM BIN REGION保存的状态。

针对case 2,由于NVRAM BIN REGION中保存的状态并不总是同恢复出厂之前/data/nvram/md/NVRAM/IMPORTANT下的SIM ME LOCK数据状态一致,因此可能无法满足SML 的更新一致性要求。

为了对SML数据进行持久化保存以及更新一致性的目的,我们将SML数据移入Protect_s和Protect_f分区。

Protect_s和Protect_f分区的特点有:

Download的时候若要format USERDATA分区时,不会format Protect_s和Protect_f。

恢复出厂设置时,也不会清除 Protect_s和Protect_f。但若此时BIN Region中无内容,开机时会判断出USERDATA分区中/data/nvram/md不存在且BIN Region中无内容,进而断定是第一次开机从而根据默认值生成SIM ME LOCK。

[FAQ04658] 【partition】android\cache\userdata三个partition大小设定

内容 (2013-01-03)

[DESCRIPTION]

在6589,eMMC中,JB的android\cache\userdata三个partition大小设定

[SOLUTION]

(1)android分区:650M

      a,预留更大的空间来安装apk

      b,如果未来不需要upgrade,可以适当缩写这个分区的大小

     c,建议这个分区不要小于512M。

(2)cache分区:126M

      a,这个分区的大小大于等于100M,以满足google的CDD测试

      b,FOTA升级的时候会用到cache分区

(3)userdata分区:1024M

      a,至少是350M,以满足google的CDD测试

      b,可以给这个分区预置更大的空间来以便user安装更多的apk

      c,FOTA升级的时使用这个分区来download

[FAQ21281] android P分区表中odmdtbo与dtbo分区的说明

内容 (2018-10-18)

[DESCRIPTION]

Android O版本odmdtbo.img,在Android P版本改名成dtbo.img。

虽然android P分区表中可以同时看到odmdtbo与dtbo分区,但实际上,ptgen在build生成的MTxxxx_Android_scatter.txt中,仅会包含其中一个分区。

[SOLUTION]

P版本有一个宏开关: MTK_DTBO_UPGRADE_FROM_ANDROID_O,配置路径:

/device/mediatekprojects/<your_project>/ProjectConfig.mk

1. 对于需要OTA (O to P)升级到P版本的Project,分区layout必须与O版本完全一致,因此,请配置:

      MTK_DTBO_UPGRADE_FROM_ANDROID_O = yes

   此时build会生成odmdtbo.img,对应下载到odmdtbo分区。

2. 对于P版本新开的Project,请配置:

      MTK_DTBO_UPGRADE_FROM_ANDROID_O = no

   此时build会生成dtbo.img,对应下载到dtbo分区。

[Related Information]

1. FAQ21246 Android P dtbo 

2. OTA (O to P)升级,还会涉及其它修改,请参考:

    《Android OTA SDCARD update》,重点看OTA(O to P)相关部分。

3. Google关于dtbo的说明:

    https://source.android.com/devices/architecture/dto/partitions

[FAQ03559] [Storage]MTK platform partition meaning

Pre-loader

Pre-loader image

Handles all the download and secure boot procedure 

       DSP_BL

 DSP Boot Loader

        MBR、EBR1、EBR2

 Ext4 file system partition index table

       PMT

 Partition management table

       NvRam

Stores the hardware related information, such as calibration data, MAC address, IMEI … etc

       SECCFG and SECSTATIC

Reserved for the security platform used

    protect1 or protect_f

store SIM LOCK

    protect2 or protect_s

backup SIM LOCK

    pgpt

Partition management table, compared with MBR

    sgpt

backup of pgpt

    oemkeystore and keystore

image authentication key for verified boot, not used yet

    tee1

Trusted Excution Environment(https://www.trustonic.com/technology/trustzone-and-tee)

    tee2

backup of tee1

     U-boot/LK

 Second loader image

Handles most hardware initializations and bring-up entire Linux kernel

     Boot image

Linux kernel image and it's root file system

     Recovery

Recovery kernel image and it's root file system

Handles all the system recovery and firmware update functionalities

    SEC_RO or SECRO

Reserved for the security platform used

     Misc

Used for the recovery procedure (power loss)

     Logo

 Boot-up logo image

     EXPDB

 Store Exception database

     System

 Android system image

     Cache

 For  Android internal used

 Store Android internal cache data or web cache data

    User data

Used for Android system to store user data such as user contacts, settings, installed applications … etc

     FAT/intsd

Internal sdcard on emmc

      OTP

Otp(one time program) area on emmc

   flashinfo

flash tool download information

     BMTPOOL

Handles Bad Block Management(nandflash used and reserved on emmc)

   PARA

save parameter for recovery

   FRP

factory reset for protect , used for stolen phones

   NVDATA

store data in data/nvram/

   PROINFO

a nvram partition, store one struct default, can be added

   md1img, md1dsp,md1arm7, md3img

For Android M, MD image have switched to MD standalone partition, all modem images will be load from the partition: md1img, md1dsp, md1arm7 and md3img

   scp1,scp2

system control processor, used for recovery fail

   lk1,lk2

used for the case of update lk throught OTA fail

   persist

 store data which will be stable for a long time

   metadata

store master key for data encryption

   nvcfg

nvram config, controlled by MTK_NVCONFIG_PARTITION_SUPPORT, not used yet

   custom

customization partition, controlled by MTK_CIP_SUPPORT

   efuse

download BB chip's efuse

   ppl

Privacy protection lock,used for mobile phone antitheft

[FAQ20591] 关于Android Go 版本userdata 分区size限定说明

内容 (2018-01-18)

[DESCRIPTION]

 根据google释放的Android Go 文档《GMS_Go_Requirements.pdf》中Disk Space Requirements章节的说明,Android Go版本,需要根据emmc size做调整,userdata分区至少打到如下size限定要求,来满足终端用户的使用体验需求。

[SOLUTION]

需要特别注意上面的说明,GB单位是以1000位base计算的,不是1024 base,

以8GB emmc为例,要求开机后,adb shell df 查到的data分区1k-blocks的数值*1024之后>= 5500000000即可

也就是 data分区的total size > 5500000000 bytes,约5.1 GB就可以满足google要求

这部分我们有跟google 确认过,按上面理解配置即可。

针对google在A-Go上userdata分区这部分限定,按O版本原生的配置无法达到google的要求,

我们建议在BoardConfig.mk中,按如下大小设定,这样可以满足google需求,且不影响后续升级及软件基本功能

alps/device/mediatekprojects/$project/BoardConfig.mk中设定:

BOARD_MTK_SYSTEM_SIZE_KB := 1024000

BOARD_MTK_VENDOR_SIZE_KB := 307200

BOARD_MTK_CACHE_SIZE_KB := 114688

修改后如有相关问题,请提eservcie支持。

[FAQ10389] 如何关闭 zram/swap功能

也可以cat /proc/meminfo 里面的swap相关栏位为0

[FAQ09456] zram(内存压缩)介绍

内容 (2015-10-08)

下面是对Zram(内存压缩)一个简单介绍:

1. zram 又称内存压缩,Linux kernel会把不常用的内存进行压缩,以换出更多的内存供系统使用

    -- 平时空闲时候会做压缩,以备不时之需

    --  kernel 申请不到内存,会触发压缩机制

2. 只有user process的内存可被压缩

3. 压缩是有成本的,会影响performance

    -- 通常,launch app的时候会受影响

    -- 代码执行中,突然要大量内存的时候也会受到影响

4. 在LCA/non-LCA的项目都有可能Enable,目前为止只有72&82&92项目上面支持,其它暂不支持

若有更细节问题,可提e-service与MTK讨论

猜你喜欢

转载自blog.csdn.net/wed110/article/details/85691521