Android开机黑屏问题分类

Android开机黑屏问题分类

首先要看一下是否是快速开关机导致,即在setting-->辅助功能-->不勾选“fast boot“,关闭快速开关机选项,如果不黑屏,说明是因为ipo这个过程中的问题,那么问题需要看看这个动画,可以找一下ipo动画的owner。

黑屏的三个阶段

分析开机过程黑屏,首先需要定位黑屏问题发生的时间段,开机过程中涉及到显示logo 或者是播放动画的主要有如下三个阶段:

显示 lk logo ;

显示kernel logo;

开机动画 Bootanimation

如下这张ENG 版本开机过程显示图,说明了主要的三个过程:


Android开机黑屏问题分类_第1张图片

定位问题时建议采用ENG版本,同时将每个阶段的图片都换成不一样,因为ENG版本会显示 Normal boot 字样加上每个阶段图片的差异,这样就能够很容易区分到底是哪个阶段出现了黑屏。

如下解释:

(阶段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、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确认进一步的原因。否则继续查找其他原因。

3.在开机动画前出现一帧闪黑屏可能与Google default 默认的clear screen操作有关,需要在BootAnimation.cpp文件中去掉相关清屏的code。

你可能感兴趣的:(Android开机黑屏问题分类)