某项目小部分机器开机1分钟重启的问题分析

问题:某项目客户反馈有5%左右的机器在开机1分钟左右重启的现象。

分析:抓取kernel log,发现是射频的PA器件没有找到,导致modem子系统errror重启。
log如下:
<6>[ 35.234560] zram0: detected capacity change from 0 to 536870912
<6>[ 35.436347] Adding 524284k swap on /dev/block/zram0. Priority:32758 extents:1 across:524284k SS
<3>[ 35.567045] Fatal error on the modem.
<3>[ 35.567090] modem subsystem failure reason: rflte_dm_tx.c:3226:Assertion TRUE == rflte_dm_tx_pa_device_not_detected failed.
<6>[ 35.567120] subsys-restart: subsystem_restart_dev(): Restart sequence requested for modem, restart_level = SYSTEM.
<3>[ 35.567360] M-Notify: General: 8
为了进一步确认,在重启之前用QFDT工具连接diag口,点击“RFFE Scan”,扫描rffe mipi线上的器件,发现rffe5上的transceiver能正常识别,rffe1上的器件都是失败的。如下图所示:
在这里插入图片描述

正常的信息如下:
Dev Inst, BUS, MID, PID, P_REV, USID, Status =============================================================
0 ,4 ,QUALCOMM(0x217), WTR4905(0xC8) , 0x0,0x1,PRESENT
1 ,0 ,SKYWORKS(0x1A5), (0x2D) , 0x0,0xF,PRESENT
2 ,0 ,SKYWORKS(0x1A5), (0x2D) , 0x0,0xF,PRESENT
3 ,0 ,SKYWORKS(0x1A5), (0x96) , 0x0,0xE,PRESENT
4 ,0 ,SKYWORKS(0x1A5), (0x2D) , 0x0,0xF,PRESENT
5 ,0 ,SKYWORKS(0x1A5), (0x96) , 0x0,0xE,PRESENT
6 ,0 ,QUALCOMM(0x217), QFE2101(0x31) , 0x0,0x4,PRESENT

进一步分析rffe找不到器件的原因,做了如下验证:
(1)下载标准的qcn后正常,反复擦除替换备份的qcn后又不正常了,概率性出现;
(2)使用电池供电也没有改善,测试vbat、core电,纹波偏大,但是没有跳变的问题,对比的机器并没有发现异常;
(3)刷原始的最小系统版本是正常能识别的;
客户版本单刷最小版本的boot,能识别PA和ASM,APT不识别;
再刷aboot,全部器件都可以识别;
更换到客户的版本,还是都识别不到。
(4)更换基带芯片8909后,刷客户的版本也正常,不再出现重启。
通过以上验证,发现这个问题看起来像是硬件问题,但是更换版本又正常,又貌似是软件导致的,一度陷入困惑。怀疑虚焊,把换好的两个板子拿去做高温高湿环境实验,有一块更换基带的板子又出现了问题。测量RFFE的波形,没有测量到正常的信号;测量模块的电池电压供电脚(2-3脚)发现是5V,检测发现是管脚3和4之间有锡粒导致vbat和vbus短路,这是焊接过程中的失误。
RFFE信号没有,有理由怀疑是基带芯片的虚焊了,重新加焊后正常识别。但是虚焊的问题下载最小系统的版本也是不正常的,这和客户的现象不一致。
由于第一批的两块板子更换了基带芯片问题不再复现,后面虚焊导致的问题和之前客户的现象不太一致,需要客户重新寄故障机分析。

(5) 客户重新寄过来的3号故障机复现了故障,和客户描述的重启问题一致,并且下载最小系统是正常的。测量rffe1_data对比阻抗不正常,偏小。去掉3个mipi器件后还是偏小,怀疑是BB芯片的问题。如果与地短路,阻抗应该是0,当时没有考虑到和别的管脚短路的情况(之前更换基带的两个板子复现重启是虚焊导致的,都是RFFE1_CLK对地阻抗无穷大,手按就正常了)

(6)修改modem侧RFFE1的驱动电流能力为10mA:
modem_proc\rfc_jolokia\rf_card\rfc_wtr4905_china_v2\common\src\rfc_wtr4905_china_v2_cmn_ag.cpp (不要修改错了对应的射频卡)
没有改善
(7)rpm中提高核电电压100mV,也是没有改善
(8)测试RFFE的clk和data波形,是满足规格书中的要求的:《80-P2723-1_MSM8909W DEVICE SPECIFICATION》,由于没有高档的逻辑分析仪,无法解析rffe上的mipi信号。
在这里插入图片描述

打算跟一下modem的代码,确认出错的函数。但是和高通确认,rffe的clk速度固定为19.2Mhz,不能修改的,modem侧代码为库文件,无法查看到rffe信号出错的原因和函数,这条路走不通。
(9)更新新的modem基线版本,验证也是无效的。

(10) 并行从软件角度分析,让客户回退版本确认哪个版本是正常的。一步步确认到某次对MCU相连的3个GPIO处理就会导致rffe不识别。
验证发现把GPIO_3配置为OE使能就不会重启,并且能找到RFFE1上的器件:
gpio_tlmm_config(MCU_N1_GPIO_BIT1, 0, GPIO_OUTPUT, GPIO_PULL_DOWN, GPIO_2MA, GPIO_ENABLE);
原来是gpio_tlmm_config(MCU_N1_GPIO_BIT1, 0, GPIO_OUTPUT, GPIO_PULL_DOWN, GPIO_2MA, GPIO_DISABLE);就是有问题的。
#define MCU_N1_GPIO_BIT1 3
#define GPIO_ENABLE 0
#define GPIO_DISABLE 1
但是这个脚和射频有什么关系?无法解释,找高通,反馈需要从硬件角度分析问题。
这个修改发给客户,客户反馈故障还是出现,问题一度又陷入了僵局。

(11)问题出现转机是在客户第3批的多台故障机照X-ray的结果出来了,rffe1信号上有连锡:
在这里插入图片描述

这个位置对应的PCB如图:
在这里插入图片描述

即是RFFE的CLK、DATA和GPIO_68、GPIO_3存在连锡。
再测试之前的3号故障机,只是DATA和GPIO_3连锡短路到一起了,而之前这台故障机之前x-ray并没有照出来故障。这就解释了为什么3号故障机注掉GPIO_3的配置就会能正确识别到rffe上的器件了,而这样的修改对CLK、DATA、GPIO_68、GPIO_3这4个管脚连锡的故障机是无效的。

结论:芯片二次过炉时导致了焊盘的连锡,需要检查模块的平整性以及锡膏印刷质量,需要从工艺侧改善和规避。另外为了更坏的分析问题,不要轻易破坏故障机的硬件状态,这会给复现故障现场造成误导,影响问题的分析。

猜你喜欢

转载自blog.csdn.net/cornerstone1/article/details/112802429