问题分析步骤如下:

一、

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异常导致无法开机问题分析相关推荐

  1. Android图形合成和显示系统---基于高通MSM8k MDP4平台

    介绍了Android SurfaceFlinger层次以下的图形合成和显示系统,主要基于高通MSM8k MDP4x平台. 做为Android Display专题.SurfaceFlinger的详细介绍 ...

  2. 高通 MSM8K bootloader : SBL1 .

    一. MSM8K Boot Flow 图1: 高通MSM8K平台bootloader启动流程基本类似,但具体各平台,比如MSM8974.MSM8916.MSM8994等,会有微小区别. 从上图,可以看 ...

  3. UsageStatsService之坑:一个XML解析异常导致的开机动画死循环

    文章目录 UsageStatsService之坑:一个XML解析异常导致的开机动画死循环 声明 问题说明 日志排查 猜想和验证 问题定位 插曲 -- XML的解析 问题修复 杯弓蛇影 参考资料 修改说 ...

  4. 高通(Qualcomm)LK源码深度分析(三)

    本编文章的内容主要是分析 boot/recovery 的启动过程,其中的 boot 就是 android 的kernel, 是整个 android 系统的核心.本文的分析是紧接着 aboot_init ...

  5. 高通与MTK瓜分天下?手机处理器品牌分析

    http://mobile.pconline.com.cn/337/3379352.html [PConline 杂谈]如果你向朋友请教买一台怎样的台式机或者笔记本的话,很多时候那朋友会根据你对电脑的 ...

  6. 高通SDX55平台:5G速率问题排查分析方法

    高通SDX55平台:5G速率问题排查分析方法 1. 背景 2. 测速环境配置介绍 2.1 测速工具 2.2 工具使用 2.3 网络参数介绍 2.3.1 带宽 2.3.2 信号质量 2.3.3 RB 2 ...

  7. 高通骁龙865之camera性能深度分析(一)

    [题外话]近期申请了一个微信公众号:平凡程式人生.有兴趣的朋友可以关注,那里将会涉及更多更新图像处理方面的文章. 美国高通公司(Qualcomm)创立于1985年,总部设于美国加利福尼亚州圣迭戈市,3 ...

  8. 高通骁龙865之camera性能深度分析(二)

    7.Up to 64 MP single camera @ 30 FPS with Zero Shutter Lag 骁龙865单摄场景最大支持64M 30fps,ISP IP处理能力需求为64M*3 ...

  9. Qualcomm 高通芯片组与Android音频系统缺陷测评分析

    转自:http://www.soomal.com/doc/10100002164.htm Qualcomm高通公司是目前Android智能手机上最为知名的ARM架构的处理器和芯片方案硬件提供商,高通公 ...

最新文章

  1. 怎么看懂c语言程序,求讲解一下这个程序,我看了1个小时都没有看懂,
  2. activeRecord 绑定属性的属性
  3. 产品经理说以后接口不找你写了!啥情况?我要凉了?
  4. HDU 4565So Easy!2012长沙邀请赛A题(共轭构造+矩阵的快速幂)
  5. 【转】关于Ubuntu的sources.list 的总结
  6. ACL 2019 | 基于知识增强的语言表示模型,多项NLP任务表现超越BERT
  7. Linux 编译运行查找头文件和库的顺序
  8. Python14 函数
  9. shell脚本触发java程序支持传参补跑_01
  10. 电脑怎么改网络ip地址_电脑的桌面路径怎么改?
  11. hashCode()和equals()的若干问题
  12. 抖音矩阵源码短视频矩阵源码
  13. 网咖服务器cpu占用率高,CPU温度过高为什么会卡?
  14. 记录一个看着比较顺眼的blockquote的css装饰
  15. -webkit-内核兼容处理
  16. 基于Bmob的仿微信即时聊天软件
  17. android 读build.prop,Android build.prop简介
  18. FL Studio电音编曲软件V21中文完整版 安装下载教程
  19. C1认证学习十(Ipv6)
  20. 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』

热门文章

  1. Python案例:围棋的状态数
  2. 学习黑客必须要掌握的DOS命令全集
  3. mysql count 去重复_mysql – 忽略COUNT中的重复行
  4. X-XSS-Protection
  5. C# 提取Word文档中的图片
  6. 俗话说别在一棵树上吊死,那为什么那么多NOSQL都喜欢在LSM树上吊死呢?
  7. excel 查询 表关联_在Excel中计算查询表
  8. 设置局域网NTP对时
  9. win10系统ipv6服务器地址,win10系统设置ipV6地址的处理办法
  10. 第三方支付-核心交易之商户结算设计