高通公司 MSM8K GPT异常原因分析无法开机的问题
問題分析過程如下面:
一、
MSM8916臺gpt概率問題:采用QPST emmc software download下載軟件工具后,無法開機。例如下面的附圖:
log分析是userdata分區(qū)未成功mount 。
二、
adb shell ls /dev/block 顯示。開機失敗的機器。比正常開機的機器少一個分區(qū):mmcblk0p28 ,這個分區(qū)就是userdata所在分區(qū)!
參考本人的轉(zhuǎn)并補充內(nèi)容的還有一篇文章《add_partition 函數(shù)學(xué)習(xí)》
可知,/dev/block/mmcblk0pxx 這些分區(qū)是依據(jù)gpt內(nèi)容而創(chuàng)建,因此懷疑gpt內(nèi)容錯誤,導(dǎo)致user分區(qū)沒有被成功創(chuàng)建。
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分區(qū)
mmcblk0p3
mmcblk0p4
mmcblk0p5
mmcblk0p6
mmcblk0p7
mmcblk0p8
mmcblk0p9
mmcblk0rpmb
三、
使用dd命令,從mmc設(shè)備mmcblk0中將gpt數(shù)據(jù)讀取出來,正常開機、和無法開機的都讀取一份。
四、 使用二進制比較工具h(yuǎn)excmp對照兩份gpt的內(nèi)容,主要異常有兩處,例如以下兩圖:
從圖中能夠能夠看到gpt headergpt header CRC 及 partition array CRC不同,First LBA、Last LBA不同。
例如以下圖:
下圖是partiton array 內(nèi)容的比較。從圖中能夠看到userdata分區(qū)的end lba不同。
無法開機的gpt內(nèi)容與默認(rèn)build出來的gpt_main0.bin比較 ,發(fā)現(xiàn)userdata分區(qū)的end lba居然和build出來的是相等的。
userdata分區(qū)是整個emmc的最后一分區(qū),不同的emmc size最后一個分區(qū)的end lba是build階段無法知道的。因此build的僅僅是一個默認(rèn)值。
必須由下載工具自己主動更新該lba值。
四、
從上面的分析能夠知道QPST emmc software download 工具沒有更新userdata end lba。或者更新失敗。
那么,怎樣證明是工具沒有寫這個lba?還是寫失敗?或者寫的是錯誤的內(nèi)容?
使用winhex工具,從無法開機的gpt內(nèi)容中將gpt header 和 gpt partition arrary 的內(nèi)容分別截取出來。
使用AS-CRC32.EXE 工具。分別對gpt header 和 gpt partition array 的內(nèi)容計算出crc。工具例如以下圖:
通過對照crc。計算機出的crc的無法開機的gpt header中的兩個crc都是相等的。
因此,能夠證明,gpt中的userdata end 并不是是寫入失敗,或者沒有寫入。
而是QPST emmc software download 工具定稿的錯誤的內(nèi)容。
結(jié)論: 由上分析,能夠證明是QPST emmc software download 工具的問題。
五、
解決方式建議。
更新QPST的軟件版本號,最新版本號支持一個新的使用firehose協(xié)議的下載工具:QFIL,
取代QPST emmc software download 。QFIL更穩(wěn)定,更好用。例如以下圖:
參考:
80-N7350-1_B_GUID_Partition_Tables_Programming.pdf
UEFI_2_4_Errata_B.pdf
版權(quán)聲明:本文博主原創(chuàng)文章,博客,未經(jīng)同意不得轉(zhuǎn)載。
轉(zhuǎn)載于:https://www.cnblogs.com/bhlsheji/p/4875714.html
總結(jié)
以上是生活随笔為你收集整理的高通公司 MSM8K GPT异常原因分析无法开机的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET Web API随记汇总
- 下一篇: 内部存储文件(写)