1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 高通MDM平台-分区表

高通MDM平台-分区表

时间:2022-02-24 08:49:08

相关推荐

高通MDM平台-分区表

最近想要回顾下之前的一些东西,记录下一些简单但细碎的东西,本章简单从分区表入手随便写写

分区表文件在common\config\partition_nand.xml

<partition><name length="16" type="string">0:boot</name>//分区名<size_kb length="4">7500</size_kb>//大小必须为block整数,block 为64个page,也可以直接用size_blks<pad_kb length="4">500</pad_kb>//大小必须为block整数,block 为64个page,也可以直接用spad_blks<which_flash>0</which_flash><attr>0xFF</attr><attr>0x01</attr><attr>0x00</attr><attr>0xFF</attr><img_name type="string">mdm9607-boot.img</img_name>//固件名称</partition>

以一个分区的配置为例,定义了一个boot的分区,大小为7500kb + 500 kb,但是最后是需要取整到block,以128kb block size来看,最后大小为(59+4)*128kb换算称 16进制就是007e0000

这个可以从mtd中看到

cat proc/mtddev: size erasesize namemtd0: 00140000 00020000 "sbl"mtd1: 00140000 00020000 "mibib"mtd2: 00c00000 00020000 "efs2"mtd3: 000c0000 00020000 "tz"mtd4: 00060000 00020000 "rpm"mtd5: 000a0000 00020000 "aboot"mtd6: 007e0000 00020000 "boot"mtd7: 00be0000 00020000 "scrub"mtd8: 02440000 00020000 "modem"mtd9: 007c0000 00020000 "recovery"mtd10: 00180000 00020000 "fota"mtd11: 00f20000 00020000 "recoveryfs"mtd12: 00040000 00020000 "sec"mtd13: 09500000 00020000 "system"

从mtd 文件看到flash分为13个mtd分区。下面简单的介绍下每个分区的含义以及对应的固件

SBL:sbl1.mbn 可以看做软件最开始的入口,固定位置,由芯片固化PBL 跳转

mibib:分区表

efs2:modem efs 文件系统

tz,rpm:trustzone rpm

aboot:lk,ap的BootLoader

boot:kernel mdm9607-boot.img

srub:flash srub 功能的交换区

modem:mp

recovery:升级的kernel,与boot烧录一样的

recoveryfs:升级的ubifs,只有部分必要的功能

system:ubifs

可以看到flash中存储了两个kernel 和两个fs,一个用于正常工作,一个用于升级操作。具体加载选择在lk中通过cmdline传递加载哪个fs。下面就是加载mtd13的正常system fs

rootfstype=ubifs rootflags=bulk_read,sync root=ubi0:rootfs ubi.mtd=13

mdm平台中的fs都是采用的ubifs,包含的三个文件系统:system ,recoveryfs,modem都是ubifs

从上面的cmdline中看到ubi0:rootfs,说明整个ubi0应该有分成不同的volume,具体需要追究下编译过程中的ubifs制作:

apps_proc\oe-core\meta-qcom\recipes\images\mdm-usr-image.inc 中顶一个了最后制作ubifs的命令

ubinize -o ${OUTPUT_FILE_FINAL_UBI} ${UBINIZE_ARGS} ${UBINIZE_CFG}

UBINIZE_CFG 也是在这个文件中生成,可以在生成路径中查询apps_proc/oe-core/build/tmp-glibc/deploy/images/mdm9607/ubinize_system_userdata.cfg,最后的结果为

[sysfs_volume]mode=ubiimage=apps_proc/oe-core/build/tmp-glibc/deploy/images/mdm9607/mdm-image-mdm9607.ubifsvol_id=0vol_type=dynamicvol_name=rootfsvol_size=53MiB[usrfs_volume]mode=ubiimage=apps_proc/oe-core/build/tmp-glibc/deploy/images/mdm9607/mdm9607-usrfs.ubifsvol_id=1vol_type=dynamicvol_name=usrfsvol_flags = autoresize[cache_volume]mode=ubivol_id=2vol_type=dynamicvol_name=cachefsvol_size=75MiB

所以整个ubi0被分成了三个volume,cachefs是空的,所以没有指定image

UBINIZE_ARGS 在apps_proc\oe-core\meta-msm\conf\machine\mdm9607.conf定义

#UBINIZE ArgsUBINIZE_ARGS = "-m 2048 -p 131072 -s 2048"#MKUBIFS ArgsMKUBIFS_ARGS = "-m 2048 -e 126976 -c 2146 -F"#Volume sizesSYSTEM_VOLUME_SIZE = "53MiB"CACHE_VOLUME_SIZE = "75MiB"

rootfs 的ubi文件是由meta/classes/image_types.bbclass来生成。一般不需要修改

usrfs 的ubi文件是在mdm-usr-image.inc生成。

那之前cmdline中只讲第一个rootfs挂载为root,其他的两个volume是由apps_proc\oe-core\meta-msm\recipes\startup-scripts\files\mdm9607 find_partitions.sh 脚本在启动时挂载

eval FindAndMountVolume${fstype} usrfs /dataeval FindAndMountVolume${fstype} cachefs /cacheeval FindAndMount${fstype} modem /firmware

modem的ubifs名称为NON-HLOS.ubi,制作ubifs 的配置文件在common\config\my_ubi.ini,相应的mkfs.ubifs,ubinize配置在common\build\contents.xml中

<step type="exec"><params>@tool_name -r @src_dir -o @destn_image -m @min_ip_op_unit_size -e @eraseblock_size -c @max_file_system_size_logical_eraseblocks -F</params><tool_name>mkfs.ubifs</tool_name><src_dir>./bin</src_dir><max_file_system_size_logical_eraseblocks>2146</max_file_system_size_logical_eraseblocks><eraseblock_size>126976</eraseblock_size><min_ip_op_unit_size>2048</min_ip_op_unit_size><destn_image>NON-HLOS.ubifs</destn_image></step><step type="exec"><params>@tool_name -v -o @destn_image -m @min_ip_op_unit_size -p @physical_eraseblock_size -s @sub_page_size ./../config/my_ubi.ini</params><tool_name>ubinize</tool_name><min_ip_op_unit_size>2048</min_ip_op_unit_size><physical_eraseblock_size>131072</physical_eraseblock_size><sub_page_size>2048</sub_page_size><destn_image>NON-HLOS.ubi</destn_image></step>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。