Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1291943
  • 博文数量: 478
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4833
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-28 11:12
文章分类

全部博文(478)

文章存档

2019年(1)

2018年(27)

2017年(21)

2016年(171)

2015年(258)

我的朋友

分类: Android平台

2016-08-09 17:02:46

[FAQ18016]L/M版本开机黑屏问题区分
2016-07-25
平台
软件分支
FAQs 2 of 238

内容

[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,可以参看如下的方式定位
 
 
[SOLUTION]
一、如果是(阶段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
阅读(1133) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~