设为首页 加入收藏

TOP

Android LCD调试实例流程
2014-11-24 02:56:09 来源: 作者: 【 】 浏览:1
Tags:Android LCD 调试 实例 流程

调试前的参考文档:


1)调试lcd背光,背光主要分为PMIC自带的和单独的DCDC,如果为PMIC自带的背光,一般平台厂商已经做好,直接调用接口即可,如果为单独的DCDC驱动,则需要用GPIO控制DCDC的EN端


2)确认lcd的模拟电,io电是否正常


3)根据lcd的分辨率,RGB/CPU/MIPI等不同的接口,配置控制寄存器接口


4)根据lcd spec配置PCLK的频率,配置PCLK,VSYNC,HSYNC,DE等控制线的极性


5)使用示波器测试所有clk的波形,确认频率,极性是否符合要求


6)使用示波器测试data线,看是否有数据输出,bpp的设置是否正确


7)如果lcd需要初始化,配置spi的接口,一般分为cpu自带的spi控制器,和gpio模拟的spi。


8)根据lcd spec中的初始化代码进行lcd的初始化


9)用示波器测量lcd的spi clk及数据线,确认是否正常输出


10)正常情况下,此时lcd应该可以点亮。如果没有点亮,按照上述步骤1到9,逐项进行检查测试,重点检查第5项,clk的极性


11)如果lcd点亮,但是花屏。则需要先确认数据格式是否正确,然后确认fb里的数据是否正常,有以下几种方法确认fb里的数据


i)cat /dev/graphics/fb0 > /sdcard/fb0,然后将/sdcard/fb0 >到另一台相同分辨率及相同格式的手机上,看图片显示是否正常 ii)使用irfanview软件显示cat /dev/graphics/fb0出来的raw数据,注意要正确设置分辨率及格式,否则显示花屏 iii)如果adb连接正常,可以使用豌豆莢等软件,查看fb中的数据是否正常


通过以上三种途径,如果确认fb中的数据正常显示,则很可能为lcd初始化代码的问题,或者clk极性的问题,如果fb数据不正常,则可能为lcd控制寄存器配置不正常导致。


LCD调试注意事项 tips:


1 lcd接口的数据位数一定要匹对,否则会出现花屏。


2 TE_ON根据平台需要打开,否则会出现开机界面卡掉,一直停在logo区。


3 lcd配置一定要正确,在u-boot(开机logo需要)和kernel配置都要注意,整个工程配置更加需要注意。


4.各种主要的lcd寄存器需要主要设置正确,主要包括各种电压配置,data format,interfacepixel format,te_on,madctl。。。否则会出现各种问题。


5. Pix clock是否在规定的范围内。


6. Pclk是否极性正确。上升沿还是下降沿。


7. 变频引起的闪屏问题。可以通过锁定频率来试验是否是变频引起。


上周调试**-**的lcd,将厂商提供的初始化代码加入到工程中,简单修改后,然后修改z7_wvga_hs_af.mak中lcd模组配置,编译生成烧写文件,烧如到主板,出现花屏,且停留在开机logo处…第一次调屏就这么的纠结…


经老大初步检查,lcd屏幕接口数据位数不对,而且TE_ON必须打开,应该改为十六位。。。


修改源码,编译生成烧写文件,烧机….


问题依旧….


仔细检查源码,TE_ON是否打开,VCOM设置,MADCTL设置是否正常,仔细阅读其提供的官方LCD DataSheet,开始怀疑各种设置电压是否正确…


重复修改源码,编译,烧机,验证的步骤,情况还是依旧…


[ 18.162000] registered taskstats version 1


[ 18.166000] rtc-sprd rtc-sprd.0: settingsystem clock to 2013-01-01 00:08:00 UTC (1356998880)


[ 18.177000] serial_open tty addr =0xcf36f800, filp = 0xcf0b7440, port = 0xc4ac2d08


[ 18.182000] Freeing init memory: 144K


[ 18.209000] Failed to execute /init


[ 18.209000] Failed to execute /init. Attempting defaults...


[ 18.219000] Kernel panic - not syncing: Noinit found. Try passing init= option tokernel. See Linux Documentation/init.txt for guidance.


[ 18.231000] [](unwind_backtrace+0x0/0xfc) from [] (panic+0x60/0xe4)


[ 18.231000] [](panic+0x60/0xe4) from [] (init_post+0x88/0xdc)


[ 18.246000] [](init_post+0x88/0xdc) from [] (kernel_init+0x124/0x168)


[ 18.246000] unwind: Unknown symbol addressc4508414


[ 18.250000] unwind: Index not found c4508414


经老大分析发现是RAM各种地址偏移不正常,仔细发现z7_wvga_hs_af.mak中配置平台为4+4,而这台机器是4+2平台,各种偏移不正常导致kernel死掉,修改编译,烧机,发现开机log正常了,系统启动正常。


….


曲折而又突然,lcd调试就基本成功了!


经测试发现帧率偏大,修改Frame Rate寄存器,这个让我在DataSheet中找了很久,居然就是我之前早看到过的那个寄存器,纠结,修改正常后,经老大发现有细微横纹出现,修改VCOM即可,也顺利搞定!


推荐阅读:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Python脚本获取Linux系统信息 下一篇TQ2440使用RTL8192cu无线网卡(wif..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: