LCD显示异常分析——开机闪现花屏【转】
最近在工作中,有同事遇到LCD开机瞬间会闪现雪花屏的问题,而这类问题都有个共同点,那就是都发生在带GRAM的屏上,同样的问题,在休眠唤醒时也会出现。
其实这类问题的原理分析并不难,只是在给别人解释的时候不太好描述,因此,我特地写了这篇文章,好让大家能够更容易、更直观的理解这类花屏问题的原因,也希望能够帮助那些遇到同样问题的朋友。
环境
- 软件:Android
- 硬件:带GRAM的LCD(如SPI屏,DSI CMD屏)
现象
分析
从上面的动态图可以看出,出现瞬间花屏的问题,主要有两个原因:
- 背光开启的时间过早
- 对GRAM的写速度(W) < 对GRAM的读速度(R)
其实,只要任意解决其中一个问题,都不会出现开机闪现花屏的现象。开发人员第一次碰到这类问题时,往往第一反应会认为花屏就是在第一帧产生的,但实际从上面的图中我们可以看到,人眼看到的花屏其实已经是在第二帧了。
对于第一点,其实一开始我也很疑惑,如果说开机闪现花屏是因为uboot中背光开的太早导致,这个结论我能接受。但在进入Android系统后,休眠唤醒时还会有花屏问题,这就有点说不通啊?因为Android的PowerManager框架本身能够确保在休眠的时候先关背光,后关显示;在唤醒的时候先开显示,后开背光,而且我显示驱动里面也做了刷背景色的动作,只要GRAM中的数据没有被填充完,显示驱动的流程就不会接着往下走,进而也不可能开启背光。所以一旦背光点亮,说明GRAM已经被初始化了,可为什么还能看见GRAM中的垃圾数据呢?
这就引出了第二点:因为对GRAM 写的速度小于读的速度,哪怕W只比R小那么一丁点儿,只要它们同时从第一颗像素开始扫描,屏上显示的第一帧永远都是垃圾数据。
解决方法
前面已经提到过了,只要任意解决其中一个问题,闪花屏的问题就能解决。
1. 推迟背光开启的时间
这里的推迟动作其实是相对的,即你可以:
- 在初始化完GRAM后,等待1个TE信号,再开启背光
- 或者在给屏幕发送Sleep Out (0x11)、Display On (0x29)指令前,先通过Write Memory Start (0x2C)指令将GRAM初始化好
亲测第一种方法简单粗暴;
2. 提高GRAM的写速度
即提高主控端总线上的送图速度,比如提高SPI总线的时钟频率(SPI屏),提高RS/WR的切换速率或扩充DATA总线(MCU屏),提高PHY Clock Frequency (MIPI DSI屏)。
LCD显示异常分析——开机闪现花屏【转】的更多相关文章
- LCD显示异常分析——撕裂(tear effect)【转】
转自:LCD显示异常分析--撕裂(tear effect) 概述 在上一篇<LCD显示异常分析--开机闪现花屏>中,我们一起分析了开机花屏的问题,在这一篇中,我将对LCD撕裂(tear e ...
- LCD 显示异常定位分析方法
第一种情况: 进入kernel或android 后,如果LCM图像示异常,可以通过如下步骤来判断问题出现在哪个层面. step1:通过DMMS截图,来判断上面刷到LCM的数据是否有问题. 若DMMS获 ...
- 网络摄像机IPCamera RTSP直播播放网络/权限/音视频数据/花屏问题检测与分析助手EasyRTSPClient
前言 最近在项目中遇到一个奇怪的问题,同样的SDK调用,访问海康摄像机的RTSP流,发保活OPTIONS命令保活,一个正常,而另一个一发就会被IPC断开,先看现场截图: 图1:发OPTIONS,摄像机 ...
- android 控件花屏问题
发现自己的手机上某个界面出现了花屏,某些控件背景被拉伸过多遮住了其他控件,很难看.这种现象高概率出现,分析了下发现:一旦发生这种现象,必然 会打印下面这种log,google了下,这种log应该是硬件 ...
- 痞子衡嵌入式:降低刷新率是定位LCD花屏显示问题的第一大法(i.MXRT1170, 1280x480 LVDS)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1170上LCD花屏显示问题的分析解决经验. 痞子衡最近这段时间在参与一个基于i.MXRT1170的大项目(先保个密),需要 ...
- 各种RTMP直播流播放权限_音视频_数据花屏_问题检测与分析工具EasyRTMPClient
之前的一篇博客<网络摄像机IPCamera RTSP直播播放网络/权限/音视频数据/花屏问题检测与分析助手EasyRTSPClient>,我们介绍了RTSP流的检测和分析工具EasyRTS ...
- MSM8909中LK阶段LCM屏适配与显示流程分析(二)
1.前言 在前面的文章MSM8909中LK阶段LCM屏适配与显示流程分析(一),链接如下: https://www.cnblogs.com/Cqlismy/p/12019317.html 介绍了如何使 ...
- Motor XT615 开机无限卡屏重启的取证与分析
hello,大家好! 今天我给大家你们带来摩托罗拉 XT615 开机无限卡屏重启的取证与分析, 手机开机后卡屏,一直停留下面这画面,无限重启! 接下来,经过我们工程师的分析,图上报错必定由于机身程序太 ...
- recovery 升级界面顶部花屏问题分析
说明: 实际解决问题的过程有点曲折,后面找到原因,分析清楚问题后,总结下正确的分析方法,大致分析流程如下. 问题描述: 在进入recovery的时候,第一次上电进入recovery时,顶部会有一长条花 ...
随机推荐
- ckeditor 在dwz里面使用
在ckeditor的配置的过程中,所有的配置的地方都配置了,但是就是不显示编辑器(编辑器代码如下),很郁闷哦 1 <textarea id="editor1" name=&q ...
- Java并发编程笔记之 CountDownLatch闭锁的源码分析
JUC 中倒数计数器 CountDownLatch 的使用与原理分析,当需要等待多个线程执行完毕后在做一件事情时候 CountDownLatch 是比调用线程的 join 方法更好的选择,CountD ...
- C语言第三讲,基本数据类型
C语言第三讲,基本数据类型 一丶基本数据类型讲解 在C语言当中,有四种基本数据类型 分别是: 整形 浮点型 指针 聚合类型(数组和结构) 整型家族包括: 字符 短整型 整形 长整型 ** 都分为有符号 ...
- HttpClient Timeout waiting for connection from pool 问题解决方案
错误:org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool 前言 ...
- [Noip2015PJ] 求和
Description 一条狭长的纸带被均匀划分出了 \(n\) 个格子,格子编号从 \(1\) 到 \(n\) .每个格子上都染了一种颜色 \(color_i\) 用 \([1,m]\) 当中的一个 ...
- 如何参与linux内核开发
如何参与linux 内核开发 如果想评论或更新本文的内容,请直接联系原文档的维护者.如果你使用英文 交流有困难的话,也可以向中文版维护者求助.如果本翻译更新不及时或者翻 译存在问题,请联系中文版维 ...
- asp.net mvc 模型验证组件——FluentValidation
asp.net mvc 模型验证组件——FluentValidation 示例 using FluentValidation; public class CustomerValidator: Abst ...
- jQuery基础教程
1.使用$()函数 $()函数其实是创建了一个jQuery对象. 这个函数接受CSS选择符作为参数,充当一个工厂, 返回包含页面中对应元素的jQuery对象. 所有能在样式表中使用的选择符都可以传给这 ...
- [PHP] 算法-邻接矩阵图的广度和深度优先遍历的PHP实现
1.图的深度优先遍历类似前序遍历,图的广度优先类似树的层序遍历 2.将图进行变形,根据顶点和边的关系进行层次划分,使用队列来进行遍历 3.广度优先遍历的关键点是使用一个队列来把当前结点的所有下一级关联 ...
- php编程规范整理
该规范对其他语言,部分是通用的标准....好吧,废话不多说啦,直入正题: 1.PHP 编程规范与编码习惯最主要的有以下几点: 1 文件说明 2 function 函数体说明 3 代码缩进 4 if省略 ...