[Linux Device Driver] 高通平台分区学习

本文详细介绍了Android系统的各个分区及其作用,包括SSD、persist、misc等,并解释了这些分区如何影响设备的安全性和功能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 分区名字 && 作用

ssd ———ssd diag模块的分区,存储加密的RSA密钥。

persist ———其中包含在设备出厂后不应该更改的数据,例如:芯片的校准数据(WIFI,bt,相机等),证书和其他与安全性相关的文件。可以进行高级恢复或安卓系统维护工作。

misc ———Miscellaneous的简称,cpu加电之后,启动bootloader,就会读取MISC分区获得来自Main system和Recovery的消息,并以此决定做何种操作。

keystore ———密钥库服务分区,隶属于高通QSEE组件(高通安全执行环境,Qualcomm Security Executing Environment),用于加密data分区,旨在保障用户数据的安全。

metadata ———这个也是用于加密的,这里面放了一个key,如果没有这个key,userdata数据不能访问。logcat就有类似找不到这个key的错误:
No key found in /metadata/vold/metadata_encryption/key。

frp ———Factory Reset Protection的简称,自Android 5.0后引入,为了防止手机被盗后被刷机而引入的一种保护机制。下面是一个例子,但是其作用更加复杂,远不止一下一种,总之为了保护用户安全以及权益:
比如手机被盗了,偷窃者通过recovery模式恢复出厂设置,但是在设备的数据都被清除之后,重启进入设备需要输入原来的账号密码。

super ———包含system.img、vendor.img、product.img; android11还会包含odm.img和system_ext.img。

system ———包含device、 frameworks、packages以及部分的权限 。

vendor ———包含部分的权限,以及hardware。

odm ———放一些标志位、sn号、gpio测试、国家码。

product ———product分区目前不知道干啥的,看名字和产品有关。

userdata ———这个分区也叫用户数据区,包含了用户的数据:联系人、短信、设置、用户安装的程序;擦除这个分区,本质上等同于手机恢复出厂设置,也就是手机系统第一次启动时的状态,或者是最后一次安装官方或第三方ROM后的状态。该分区挂在/data目录下。在Recovery程序中进行的“data/factory reset ”操作就是在擦除这个分区。

rawdump ———系统crash发生时,抓取crash ramdump。

PrimaryGPT ———android系统分区相关。

BackupGPT ———android系统分区相关。

xbl&abl ——— 高通引入了UEFI,用来代替LK(Little Kernel); 其实这玩意在电脑上早被应用了,用于取代bios,手机&物联网IOT也是最近才开始应用。高通UEFI由XBL和ABL两部分组成。XBL负责芯片驱动及充电等核心应用功能。ABL包括芯片无关的应用如fastboot。 XBL核心是none-HLOS boot_image代码的一部分,属于高通私有代码;ABL则在开源Linux Android代码树里。LK的设备驱动都放在了XBL核心,Linux加载启动及fastboot等功能组件则作为独立的UEFI应用存在。编译方法就是make aboot。

ALIGN_TO_128K_1 ———暂时不知道干啥的,目前被清空。

cdt ———高通平台使用CDT(Configure Data Table)来存储平台信息和内存参数,CDT默认以数组方式存放在boot_images的源文件中,并最终编译到sbl1中;CDT也可以保存到emmc或eeprom中,在启动过程中加载;此外,我们可以修改部分平台信息比如说msm-id来代码兼容(满足客制化的特殊需求)。

ddr ———根据名字,应该是存储内存相关参数或者配置的,这个我司目前是清空。

last_parti ———不知道干啥的,目前啥也没烧录。

aop ———modem侧的,不知道干啥的。

tz ———modem那边trustzone的修改,和安全有关。

multiimgoem_a ———modem侧的,不知道干啥的。

hyp ———管理程序映像。

modem ———负责处理通讯协议相关的基带镜像:NON-HLOS.bin。

bluetooth ———根据名字,应该是蓝牙相关的。

dsp ———modem侧的,烧录adsp,比如高通的音视频算法就在这里,语音增强,回声抑制、降噪等。

keymaster ———加密相关的。

boot ———目前android10、android11是kernel、以及部分vendor下面的代码以及设备树。

recovery ———这是专门为备份而设计的,恢复分区可以视为备用启动分区。

vbmeta ———存放校验签名,给bootloader用的。

dtbo ———kernel以及vendor下面的设备树文件。

imagefv ———不知道干啥的。

core_nhlos ———烧录Core_NON-HLOS.bin,这个不晓得干啥的,问了高通说不用管,可能是把一些高通一些机密的modem代码封装了。

fsg ———存射频相关的参数。比如有的产品要出口欧洲,有的要出口北美,这个地方就有差异。

2. 参考链接

  1. https://blog.youkuaiyun.com/ly890700/article/details/67634784
  2. https://www.cnblogs.com/zzb-Dream-90Time/p/6557716.html
### PyCharm 打开文件显示不全的解决方案 当遇到PyCharm打开文件显示不全的情况时,可以尝试以下几种方法来解决问题。 #### 方法一:清理缓存并重启IDE 有时IDE内部缓存可能导致文件加载异常。通过清除缓存再启动程序能够有效改善此状况。具体操作路径为`File -> Invalidate Caches / Restart...`,之后按照提示完成相应动作即可[^1]。 #### 方法二:调整编辑器字体设置 如果是因为字体原因造成的内容显示问题,则可以通过修改编辑区内的文字样式来进行修复。进入`Settings/Preferences | Editor | Font`选项卡内更改合适的字号大小以及启用抗锯齿功能等参数配置[^2]。 #### 方法三:检查项目结构配置 对于某些特定场景下的源码视图缺失现象,可能是由于当前工作空间未能正确识别全部模块所引起。此时应该核查Project Structure里的Content Roots设定项是否涵盖了整个工程根目录;必要时可手动添加遗漏部分,并保存变更生效[^3]。 ```python # 示例代码用于展示如何获取当前项目的根路径,在实际应用中可根据需求调用该函数辅助排查问题 import os def get_project_root(): current_file = os.path.abspath(__file__) project_dir = os.path.dirname(current_file) while not os.path.exists(os.path.join(project_dir, '.idea')): parent_dir = os.path.dirname(project_dir) if parent_dir == project_dir: break project_dir = parent_dir return project_dir print(f"Current Project Root Directory is {get_project_root()}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值