MT6735平台,可以开机,但是黑屏很长时间才看到开机图片。
查看串口LOG发现手机是正常运行的,也就是说LCM驱动没有异常,黑屏阶段也没有什么错误报出。
在MTK的FAQ上找到如下:
[DESCRIPTION]
本FAQ
只讨论开机过程中黑屏,不讨论花屏(可以参考刷)。只讨论L/M版本(之前的KK/JB版本可以作为参考)。
首先要看一下是否IPO开机,即在setting-->辅助功能-->不勾选“fast boot“,如果不黑屏,说明是因为ipo这个过程中的问题,那么问题需要看看这个动画,可以找一下ipo动画的owner。
如果不勾选“fast boot“出现黑屏,那么就是我们现在要讨论的问题。
定位问题前一定要搞清楚黑屏发生的时间段,因为开机过程中,会有lk logo,kernel logo,bootanimation,这三个画面里面发生黑屏,解决办法不一样。
如下这张图,是ENG版本的开机logo,说明了开机过程中的logo显示。
查看问题,
一定要使用ENG版本,因为ENG版本开机的时候,左下角有一行”normal boot“字样,据此我们可以知道黑屏发生在哪个地方。最好使用不同的logo资源,有些客户把lk logo和kernel logo做成一样,bootanimation的前几张图片也是做成一样,不便于区分,这样容易判断出错。
如下解释:
(阶段1)、带有”normal boot“的lk logo,会在lk阶段显示。显示时间一般1s左右。
(阶段2)、启动到kernel的前7s左右,显示的是带”normal boot“字样的lk logo。(这里L/M版本和KK/JB版本很不同,不在此处细说)
(阶段3)、之后显示kernel logo的时间段很短,一般只有2s左右.
(阶段4)、显示bootanimation动画。
(1)如果怀疑kernel log黑屏,可以单独运行一下kernel log应用,正常情况下会显示kernel logo,如果有黑屏,那么就是他造成的。
adb shell
cd system/bin
boot_logo_updater
(2)单独删除kernel logo,可以看看是否不黑屏。如果不黑屏,那么可能是因为加载kernel logo的时候,底层向OVL刷进去了异常的黑屏数据或者异常格式的数据等。
adb remount
adb shell
cd system/bin
rm -rf boot_logo_updater
(3)如果怀疑bootanimation黑屏,可以单独运行一下bootanimation应用,正常情况下会显示bootanimation动画,如果有黑屏,那么就是他造成的。
adb shell
cd system/bin
bootanimation
(4)单独删除bootanimation,看看还黑屏吗?不黑屏,那么问题在于bootanimation,下面会有
adb remount
adb shell
cd system/bin
rm -rf bootanimation
出现黑屏问题,请先使用mtk原生的版本和原生的logo资源,看看是否有问题,如果原声的没有问题,那么可能是客户替换的logo资源和客制化问题,需要注意如下几个资源检查:
1、logo.bin的
大小限制在4M内
2、lk logo和kernel logo图片是
RGB888格式
3、bootanimation图片是
png格式
如果以上都check OK,可以参看如下的方式定位
一、如果是(阶段1)黑屏,即lk logo没有显示出来,那么可能是logo资源异常,或者底层没有刷出来,需要抓uart log查看,可以
打log跟踪platform.c文件里面的platform_init()函数。
二、如果是(阶段1)和(阶段2)之间黑屏,可能是刷屏的问题,如果有异常,从uart log里面,应该可以看到display error,比如vdo mode屏,这时候等VM Done timeout等。
三、如果是(阶段2)中间黑屏,
看uart log是否有display error/fault/timeout/fail.
四、如果是(阶段2)和(阶段3)之间黑屏,可能是因为加载的kernel logo异常,或者mtkfb pan display implementation的时候异常数据进入,通常此时log里面很难看到error,需要加log进去debug。
五、如果是(阶段3)黑屏,可以使用上面的adb命令来区分到底是kernel logo的问题还是bootanimation开始的问题。
注释:以上5个可能出现黑屏的阶段,都与driver层相关,在找对应owner前,请先排除logo资源格式客制化等影响。根据我们这么些年定位问题来总结,很大一部分客户是因为客制化,logo资源等造成的问题。如果log里面有error,属于数据流在engine处理的时候异常,较容易修正。如果log没有异常,那么可能是异常的数据格式或者异常的flow导致的,比较难定位。
六、如果是(阶段4)黑屏,运行bootanimation应用看看,如果黑屏,那么问题在于bootanimation。关于bootanimation黑屏的定位,如下有一个完整的总结,请先自行check一下:
1.关于黑屏问题首先需要确认
是否开机动画包本身的问题:
(1)将出现黑屏手机内部的system/media/bootanimation.zip pull到没有黑屏问题的手机,check是否还有黑屏,
如果出现黑屏说明是开机动画包本身的问题,可以转给AF2分析,否则继续查找其他原因;
(2)将正常手机的 system/media/bootanimation.zip pull到目前有黑屏问题的手机,check是否依然黑屏。
如果没有黑屏说明是开机动画包本身的问题,可以转给AF2分析,否则继续查找其他原因。
2.测试
去掉开机铃声后是否还会出现黑屏:
如果没有出现黑屏说明与mediaplayer初始化较慢有关,需要与audio 的owner确认进一步的原因。否则继续查找其他原因。
具体可参考[
FAQ09563]开机过程kernel logo到开机动画黑屏时间过长。
3.在开机动画前出现一帧闪黑屏可能与Google default 默认的clear screen操作有关,需要在BootAnimation.cpp文件中去掉相关清屏的code。
具体可参考[
FAQ14488]kernel logo到开机动画之间闪现黑屏。
[
FAQ17969]开机过程kernel logo到开机动画之间黑屏(总)
七、另外,对于
6580/6735 M0.MP1版本,出现kernel logo后,bootanimation前的黑屏问题,请申请patch
ALPS02561201。
还有这个:
[DESCRIPTION]
开机过程kernel logo到开机动画之间黑屏
在开机过程,如果将bootanimation.zip的图片换成非黑色背景,发现从kernel logo到bootanimation之间会黑屏一下或者黑屏时间过长,这类问题的原因有可能是和Display相关,也有可能和Bootup流程相关。遇到这种问题,请按照如下步骤进行初步分析:
1. 确认哪个过程黑屏:
uartlog和mobilelog确认是lk logo, kernel logo, bootAnimation哪个过程黑屏。如果lk logo, kernel logo, bootAnimation第一张图片相同,先将lk logo, kernel logo, bootAnimation第一张图片分别替换成不同的图片。
2. 确认是否是动画包问题:
交叉测试,排除动画包bootanimation.zip的问题
3. 查看bootanimation进程:
3.1去掉开机铃声system/media/bootaudio.mp3,如果黑屏依然存在
请先在PMS申请patch:
ALPS02561201, 针对M版本6580/6735
请先参考以下FAQ:
[FAQ14247][Denali系列]开机动画前黑屏相关的issues
[FAQ14488] kernel logo到开机动画之间闪现黑屏(L)
如果问题依然无法解决,请提交eService进一步分析解决。提交eService时,请参照以下FAQ抓取黑屏layer信息。
[FAQ05755]如何定位花屏和界面错乱等绘制异常的问题?
3.2 去掉开机铃声system/media/bootaudio.mp3后,从Kernel Logo到动画是没有黑屏:
基本可以肯定,黑屏是由于mediaplayer初始化耗时导致。
可以进行如下测试:
(1)如果手机支持IPO(快速开关机),可以查看下IPO开机时是否还有黑屏。如果没有黑屏,进一步可以推论出:黑屏与mediaplayer初始化耗时有关。
(2)如果手机不支持IPO,可以用adb命令当地运行bootanimation bin档测试:adb shell system/bin/bootanimation。结论同(1)。
请先参照相关FAQ:
[FAQ09563] 开机过程kernel logo到开机动画黑屏时间过长。
[FAQ17968] new Mediaplayer耗时导致开机过程中kernel logo到开机动画之间黑屏
如果问题依然无法解决,请提交eService进一步分析解决。
所以,我做了以下尝试:
1、用ENG版本开机,没有看到”normal boot“字样;
2、删除bootaudio.mp3,依然黑屏;
3、删除bootanimation.zip,开机图画变成了android,依然黑屏;
4、确认图片格式、分辨率等都没有问题;
推测和LCM是没有关系的,怀疑是LK和Kernel阶段LCM背光没有亮。所以配置lk目录下cust_leds.c文件,配置backlight。
问题解决。