高通公司 MSM8K GPT异常原因分析无法开机的问题
问题分析过程如下面:
一、
MSM8916台gpt概率问题:采用QPST emmc software download下载软件工具后,无法开机。例如下面的附图:
log分析是userdata分区未成功mount 。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRnlib24=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
二、
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的内容,主要异常有两处,例如以下两图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRnlib24=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
从图中能够能够看到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值。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRnlib24=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
四、
从上面的分析能够知道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更稳定,更好用。例如以下图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRnlib24=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
參考:
80-N7350-1_B_GUID_Partition_Tables_Programming.pdf
UEFI_2_4_Errata_B.pdf
版权声明:本文博主原创文章,博客,未经同意不得转载。
高通公司 MSM8K GPT异常原因分析无法开机的问题的更多相关文章
- 修改List报ConcurrentModificationException异常原因分析
使用迭代器遍历List的时候修改List报ConcurrentModificationException异常原因分析 在使用Iterator来迭代遍历List的时候如果修改该List对象,则会报jav ...
- 泛泰A820L (高通公司MSM8660 cpu) 3.4内核CM10.1(Android 4.2.2) 测试版第二版
欢迎关注泛泰非盈利专业第三方开发团队 VegaDevTeam (本team 由 syhost suky zhaochengw(z大) xuefy(大星星) tenfar(R大师) loogeo cr ...
- Cron连接正常工作5次后异常原因分析
目录 目录 1 问题描述 1 分析定位 1 解决方法 2 附1:Cron工作流 3 附2:SIGPIPE发生的位置 3 如果一个shell命令的"$?"值为141,则它是收到了SI ...
- 使用迭代器遍历List的时候修改List报ConcurrentModificationException异常原因分析
在使用Iterator来迭代遍历List的时候如果修改该List对象,则会报java.util.ConcurrentModificationException异常,下面看一个例子演示: package ...
- Nubia Z5S(高通公司MSM8974) QHSUSB_BULK砖的方法节省模式(随着win7在恢复recovery分区案例)
Nubia Z5S在某些异常情况或按组合键进入QHSUSB_BULK状态, 这种模式的现象, 猜想windows(实例win7)即使在数据线, 它会出现在计算机n载,甚至会提示要格式化某些分区(这里要 ...
- 泛泰A860(高通公司8064 cpu 1080p) 拂4.4中国民营recovery TWRP2.7.1.2文本(通过刷第三版)
专业第三方开发团队 VegaDevTeam (本team 由 syhost suky zhaochengw(z大) xuefy(大星星) tenfar(R大师) loogeo crazyi(天下无雪 ...
- 高通与MTK瓜分天下?手机处理器品牌分析
http://mobile.pconline.com.cn/337/3379352.html [PConline 杂谈]如果你向朋友请教买一台怎样的台式机或者笔记本的话,很多时候那朋友会根据你对电脑的 ...
- 被高通收购的CSR是一家怎样的公司
CSR plc(LSE:CSR),原名剑桥硅晶无线电或英商剑桥无线电(英语:Cambridge Silicon Radio),是一间创立于 1998年的跨国无厂半导体公司,总部位于英国剑桥.早期技术主 ...
- 高通安卓调试LCD几方面总结
来公司上班现在已经整整一个月了,蔽人不才,能力有限,学习进度缓慢,不过也是有一点点的收获与心得,在这里写出来与大家分享,养成良好的记录习惯也免得后忘记. 不啰嗦了,开入正题.来公司一个月左右的时间,主 ...
随机推荐
- NDK/JNI学习--进口hello-jniproject
上一篇文章,简单的设置NDK开发环境,本文通过导入C:\android-ndk-r9d\samples\hello-jni(NDK自带example)来疏通真个环境. 打开Eclipse IDE.指定 ...
- Blink: Chromium的新渲染引擎
编自http://www.chromium.org/blink 关于blink Google Chrome/Chromium 从创始至今一直使用 WebKit(WebCore) 作为 HTML/CSS ...
- 小米2S TWRP 3.0.2-0 最新中文版本Recovery
注意:此版本为合并分区后的twrp 小米2S 合并分区教程:http://forum.xda-developers.com/mi-2/orig-development/flashtools-mifl ...
- android 网络运营商的名字显示规则(锁定屏幕,下拉列表)
一:Background & 有关flow MTK Operator name display分为两种类型的手机: 1. Sim卡名称: 从基于引导SIM卡读取IMSI到Spn-conf.xm ...
- centos安装和卸载软件
==如何卸载: 1.打开一个SHELL终端 2.因为Linux下的软件名都包括版本号,所以卸载前最好先确定这个软件的完整名称. 查找RPM包软件:rpm -qa ×××* 注意:×××指软件名称开头的 ...
- telnet模拟http訪问
HTTP协议经常使用的无非就那么几个命令 GET HEAD PUT POST 此处简单说下http的GET和HEAD 举两个简单的样例: GET的样例 telnet serverip 80 GET h ...
- poj 3311Hie with the Pie
题意:一个送披萨的,每次送外卖不超过10个地方,给你这些地方之间的时间,求送完外卖回到店里的总时间最小. 解法一: 这个n不大,即使是NP问题也才1E6多一些所以可以dfs():具体的回溯方法结合da ...
- 用bat 删除当前文件夹下的某类文件
@echo on for /r %%f in (*.pdb,*.xml) do del %%f 保存为bat文件执行!
- 【转】java JTable排序和过滤
JTable排序 在Java SE 6中除了java.awt被更新外,javax.swing同时也有了很大的改进.在C/S程序中我们会经常使 用到"表".如我们可以在查询数据库后将 ...
- (hdu step 6.3.5)Card Game Cheater(匹配的最大数:a与b打牌,问b赢a多少次)
称号: Card Game Cheater Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...