嵌入式老鸟经验:安卓MTK平台LCD驱动调试常见问题分析及解决办法

大家日常使用的安卓手机,最看重的一个性能指标之一就是屏幕。而性能又包含诸多因素,如屏幕刷新率能达到多少?色彩饱和度?屏幕功耗等等。而调试这些性能便是作为一个驱动工程师的日常。下面便是之前皮皮哥调试安卓手机遇到的一些问题的个人经验之谈,具体问题具体分析,不具有通用性,希望能给大家开阔一些思维,不管有木有用,希望来个三连,哈哈。

 

嵌入式老鸟经验:安卓MTK平台LCD驱动调试常见问题分析及解决办法

废话不多说,直接上干货:

下面是MTK显示流程框图:

 

嵌入式老鸟经验:安卓MTK平台LCD驱动调试常见问题分析及解决办法

MTK显示流程

一般的LCD显示接口类型:

1. 并行接口:

MCU接口,LCD模组须有自己的GRAM。

RGB接口,通过时钟同步来实现同步传输,此模式不需要LCD有GRAM来缓存数据。

2. 串行接口:

SPI接口。

MDDI接口,高通公司的一种接口方式,传输率高,功耗低。

DSI MIPI接口,MIPI联盟推出的一种高速低耗接口。

嵌入式老鸟经验:安卓MTK平台LCD驱动调试常见问题分析及解决办法

 

LCD调试要注意以下问题:

1. gamma是否超标。

2. 刷新率是否合适。

3. flicker现象是否严重或能否轻易察觉。

4. ESD是否合格。

5. 背光调节是否存在问题,特别是自动调节是否有不平滑现象,或者亮度调定某个范围屏幕出现闪烁等。

6. 图片显示是否有失真的现象。

7. 是否有噪点等问题。

 

下面是在项目上遇到的实际问题,灰常干货:

遇到的问题:

1. ESD问题。

问题描述:正反打静电,屏幕出现花屏或黑屏。

问题分析:LCD有可能被打死了,或者与LCD连接的时钟或数据线被打乱,造成数据乱,显示花屏。

解决方案:mtk平台有一个时刻检测LCD是否受到静电干扰的线程,一旦发现问题会重新初始化LCD,具体的实现可参考MTK提供的文档<DSI Video Mode Support v1.0.pdf>.

2. TP失效。

问题描述:manggo项目上出现TP偶尔失效的现象。有时开机就无法操作tp,有时开关屏幕就出现无法操作屏幕,有时长时间的使用也会偶尔出现tp失效。

问题分析:通过与TP FAE沟通了解,能够影响TP的主要因素是LCD的Vcom信号。通过同LCD FAE沟通也了解到,LCD的刷新率可能也会对TP造成影响。

解决方案:LCD的vcom信号通过修改调节LCD相关寄存器得到一定的优化,同时TP那边也通过调节固件参数,TP失效的出现几率有所降低,最后再将LCD的刷新率降低一些但不影响绝对实用,问题得到基本解决,测试也再没发现此问题。

备注:此问题出现在video模式的LCD屏幕上,暂时在command模式的屏幕上没有发现,同时与之搭配的TP也是很低廉的,做工也不是很精细,或许也是其原因。

3. 噪点。

问题描述:在bear项目上遇到的噪点问题,就是看上去麻点,看上去“很脏”,这个在用户体验上很不好。

问题分析:通过与MTK沟通了解,最终锁定在MTK自己的为实现去除contour现象,就我们肉眼观察最直接的就是像梯田一样,一圈圈的,这种现象在一张渐变色彩的图片上观察最为明显,但用户体验要好很多。对于contour现象,只是在LCD的分辨率低于24bits时才会出现,因为本身的操作系统都是以24bits—RGB888真彩存储的,最终处理后到LCD显示,如果LCD低于24bits就会砍掉多余的位,这样显示起来就会失真。

解决方案:①换屏幕,提高到24bits真彩的。②取消MTK自有的去噪功能,同时接受contour现象。最终选定为第二种,因为成本。

4. 屏幕闪烁。

问题描述:bear项目上遇到的问题。在将背光调到最低时,仔细观察屏幕会看到在闪烁。

问题分析:因LCD背光控制通过PWM,PWM通过占空比来实现对亮度的调节。PWM可通过调节频率来降低这种闪烁的几率。

解决方案:提高PWM频率的对背光调节的亮度范围重新设定,使其避开了会出现问题的值范围。

 

嵌入式老鸟经验:安卓MTK平台LCD驱动调试常见问题分析及解决办法

 

5. Yoko项目出现的开机logo显示不正常问题。

问题描述:LCD在uboot中显示不了bootlogo,但是在kernel中重新初始化LCD寄存器的话是可以显示正常,以后都正常。

问题分析:首先怀疑是uboot中初始化代码的问题,但是kernel和uboot都是用的同一份代码,所以应该不是这个问题。但是可以比较确定是LCD初始化有问题,我们就会考虑上电是否正确,上电时序是否正确等等。

解决方案:通过排查,发现在uboot中有一个电压并没有在IC初始化前上好,这个问题解决了,但是uboot显示的问题还没解决,通过上电时序排查,在LCD的3个电压全部上好后100ms,IC寄存器开始初始化,上好电后,IC的正常工作至少应该要几百毫秒,所以怀疑是上电后IC没正常工作就开始寄存器设置了。将IC初始化时间延后,问题解决。

要做好LCD的性能调试,需要对LCD驱动架构以及LCD的芯片参数有很好的了解,才能对症下药。

 

嵌入式老鸟经验:安卓MTK平台LCD驱动调试常见问题分析及解决办法

 

本文只是自己在调试过程中遇到的一些问题以及解决思路,不具有通用性,针对有缘人,请佛系阅读,喜欢的话,请三连,后面有时间会多写写Linux内核驱动开发、inux调试及性能优化、嵌入式开发中经常用到的软件开发技能栈,比如netlink、mmap、dma、大数据传输、中断、多线程调度优化等常用必备技能。

版权声明:本文内容由互联网用户投稿发布,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2211788188@qq.com 举报,一经查实,本站将立刻删除。如需转载请注明出处:https://www.wptmall.com/a/article/18187

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注