如何编写安卓底层LCD驱动擦除程序?
扫描二维码
随时随地手机看文章
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屏的调试注意事项
1. Pix clock是否在规定的范围内。
2. Pclk是否极性正确。上升沿还是下降沿。
3. 变频引起的闪屏问题。可以通过锁定频率来试验是否是变频引起。
LCD擦除程序如何编写?
下面是我去掉lcd驱动的过程:linux3.0.1
1.Make menuconfig
-》 Device Drivers
---》 Graphics support
---》(M)S3C FramebufferSupport (eXtended)
2. -》 Device Drivers
---》MulTImedia support
---》Video capture adapters
---》 (去掉)Samsung TV Driver
3.vi drivers/media/video/samsung/fimc/s3c_fimc_core.c
注释掉//ctrl-》open_lcdfifo= s3cfb_enable_local;
//ctrl-》close_lcdfifo = s3cfb_enable_dma;
否则会出现如下错误:
/home/yubo/linux/zImage/3.0.1nolcd/drivers/media/video/samsung/fimc/s3c_fimc_core.c:468:undefined reference to `s3cfb_enable_local‘
/home/yubo/linux/zImage/3.0.1nolcd/drivers/media/video/samsung/fimc/s3c_fimc_core.c:468:undefined reference to `s3cfb_enable_dma’
4.vi drivers/video/samsung/Makefile
注释掉#obj-$(CONFIG_FB_S3C_EXT) += s3cfb.o否则make modules会出错
5. 拷贝drivers/video/cfbcopyarea.ko
drivers/video/cfbfillrect.ko
drivers/video/cfbimgblt.ko