高通 MSM8K GPT异常导致无法开机问题分析
问题分析步骤如下:
一、
MSM8916平台gpt概率性问题:使用QPST emmc software download工具下载完软件后,无法开机。如下图:
log分析是userdata分区没有成功mount 。
二、
adb shell ls /dev/block 显示,开机失败的机器,比正常开机的机器少一个分区:mmcblk0p28 ,这个分区就是userdata所在分区!
参考本人的转并补充内容的另一篇文章《add_partition 函数学习》
可知,/dev/block/mmcblk0pxx 这些分区是根据gpt内容而创建,因此怀疑gpt内容错误,导致user分区没有被成功创建。
root@zxx/ # cd dev/block/
root@zxx:/dev/block # ls
mmcblk0
mmcblk0p1
mmcblk0p10
mmcblk0p11
mmcblk0p12
mmcblk0p13
mmcblk0p14
mmcblk0p15
mmcblk0p16
mmcblk0p17
mmcblk0p18
mmcblk0p19
mmcblk0p2
mmcblk0p20
mmcblk0p21
mmcblk0p22
mmcblk0p23
mmcblk0p24
mmcblk0p25
mmcblk0p26
mmcblk0p27
// mmcblk0p28 正常开机的有p28分区
mmcblk0p3
mmcblk0p4
mmcblk0p5
mmcblk0p6
mmcblk0p7
mmcblk0p8
mmcblk0p9
mmcblk0rpmb
三、
使用dd命令,从mmc设备mmcblk0中将gpt数据读取出来,正常开机、和无法开机的都读取一份。
四、 使用二进制比较工具hexcmp对比两份gpt的内容,主要异常有两处,如下两图:
从图中可以可以看到gpt headergpt header CRC 及 partition array CRC不同,First LBA、Last LBA不同。
如下图:
下图是partiton array 内容的比较,从图中可以看到userdata分区的end lba不同。
无法开机的gpt内容与默认build出来的gpt_main0.bin比较 ,发现userdata分区的end lba竟然和build出来的是相等的。
userdata分区是整个emmc的最后一分区,不同的emmc size最后一个分区的end lba是build阶段无法知道的,因此build的只是一个默认值。
必须由下载工具自动更新该lba值。
四、
从上面的分析可以知道QPST emmc software download 工具没有更新userdata end lba,或者更新失败。
那么,如何证明是工具没有写这个lba?还是写失败?或者写的是错误的内容?
使用winhex工具,从无法开机的gpt内容中将gpt header 和 gpt partition arrary 的内容分别截取出来。
使用AS-CRC32.EXE 工具,分别对gpt header 和 gpt partition array 的内容计算出crc。工具如下图:
通过对比crc,计算机出的crc的无法开机的gpt header中的两个crc都是相等的。
因此,可以证明,gpt中的userdata end 并非是写入失败,或者没有写入。
而是QPST emmc software download 工具定稿的错误的内容。
结论: 由上分析,可以证明是QPST emmc software download 工具的问题。
五、
解决方案建议,
更新QPST的软件版本,最新版本支持一个新的使用firehose协议的下载工具:QFIL,
代替QPST emmc software download ,QFIL更稳定,更好用。如下图:
参考:
80-N7350-1_B_GUID_Partition_Tables_Programming.pdf
UEFI_2_4_Errata_B.pdf
高通 MSM8K GPT异常导致无法开机问题分析相关推荐
- Android图形合成和显示系统---基于高通MSM8k MDP4平台
介绍了Android SurfaceFlinger层次以下的图形合成和显示系统,主要基于高通MSM8k MDP4x平台. 做为Android Display专题.SurfaceFlinger的详细介绍 ...
- 高通 MSM8K bootloader : SBL1 .
一. MSM8K Boot Flow 图1: 高通MSM8K平台bootloader启动流程基本类似,但具体各平台,比如MSM8974.MSM8916.MSM8994等,会有微小区别. 从上图,可以看 ...
- UsageStatsService之坑:一个XML解析异常导致的开机动画死循环
文章目录 UsageStatsService之坑:一个XML解析异常导致的开机动画死循环 声明 问题说明 日志排查 猜想和验证 问题定位 插曲 -- XML的解析 问题修复 杯弓蛇影 参考资料 修改说 ...
- 高通(Qualcomm)LK源码深度分析(三)
本编文章的内容主要是分析 boot/recovery 的启动过程,其中的 boot 就是 android 的kernel, 是整个 android 系统的核心.本文的分析是紧接着 aboot_init ...
- 高通与MTK瓜分天下?手机处理器品牌分析
http://mobile.pconline.com.cn/337/3379352.html [PConline 杂谈]如果你向朋友请教买一台怎样的台式机或者笔记本的话,很多时候那朋友会根据你对电脑的 ...
- 高通SDX55平台:5G速率问题排查分析方法
高通SDX55平台:5G速率问题排查分析方法 1. 背景 2. 测速环境配置介绍 2.1 测速工具 2.2 工具使用 2.3 网络参数介绍 2.3.1 带宽 2.3.2 信号质量 2.3.3 RB 2 ...
- 高通骁龙865之camera性能深度分析(一)
[题外话]近期申请了一个微信公众号:平凡程式人生.有兴趣的朋友可以关注,那里将会涉及更多更新图像处理方面的文章. 美国高通公司(Qualcomm)创立于1985年,总部设于美国加利福尼亚州圣迭戈市,3 ...
- 高通骁龙865之camera性能深度分析(二)
7.Up to 64 MP single camera @ 30 FPS with Zero Shutter Lag 骁龙865单摄场景最大支持64M 30fps,ISP IP处理能力需求为64M*3 ...
- Qualcomm 高通芯片组与Android音频系统缺陷测评分析
转自:http://www.soomal.com/doc/10100002164.htm Qualcomm高通公司是目前Android智能手机上最为知名的ARM架构的处理器和芯片方案硬件提供商,高通公 ...
最新文章
- 怎么看懂c语言程序,求讲解一下这个程序,我看了1个小时都没有看懂,
- activeRecord 绑定属性的属性
- 产品经理说以后接口不找你写了!啥情况?我要凉了?
- HDU 4565So Easy!2012长沙邀请赛A题(共轭构造+矩阵的快速幂)
- 【转】关于Ubuntu的sources.list 的总结
- ACL 2019 | 基于知识增强的语言表示模型,多项NLP任务表现超越BERT
- Linux 编译运行查找头文件和库的顺序
- Python14 函数
- shell脚本触发java程序支持传参补跑_01
- 电脑怎么改网络ip地址_电脑的桌面路径怎么改?
- hashCode()和equals()的若干问题
- 抖音矩阵源码短视频矩阵源码
- 网咖服务器cpu占用率高,CPU温度过高为什么会卡?
- 记录一个看着比较顺眼的blockquote的css装饰
- -webkit-内核兼容处理
- 基于Bmob的仿微信即时聊天软件
- android 读build.prop,Android build.prop简介
- FL Studio电音编曲软件V21中文完整版 安装下载教程
- C1认证学习十(Ipv6)
- 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』