如何編寫安卓底層LCD驅(qū)動(dòng)擦除程序?
掃描二維碼
隨時(shí)隨地手機(jī)看文章
android平臺(tái)下lcd調(diào)試流程:
1)調(diào)試lcd背光,背光主要分為PMIC自帶的和單獨(dú)的DCDC,如果為PMIC自帶的背光,一般平臺(tái)廠商已經(jīng)做好,直接調(diào)用接口即可,如果為單獨(dú)的DCDC驅(qū)動(dòng),則需要用GPIO控制DCDC的EN端
2)確認(rèn)lcd的模擬電,io電是否正常
3)根據(jù)lcd的分辨率,RGB/CPU/MIPI等不同的接口,配置控制寄存器接口
4)根據(jù)lcd spec配置PCLK的頻率,配置PCLK,VSYNC,HSYNC,DE等控制線的極性
5)使用示波器測(cè)試所有clk的波形,確認(rèn)頻率,極性是否符合要求
6)使用示波器測(cè)試data線,看是否有數(shù)據(jù)輸出,bpp的設(shè)置是否正確
7)如果lcd需要初始化,配置spi的接口,一般分為cpu自帶的spi控制器,和gpio模擬的spi。
8)根據(jù)lcd spec中的初始化代碼進(jìn)行l(wèi)cd的初始化
9)用示波器測(cè)量lcd的spi clk及數(shù)據(jù)線,確認(rèn)是否正常輸出
10)正常情況下,此時(shí)lcd應(yīng)該可以點(diǎn)亮。如果沒有點(diǎn)亮,按照上述步驟1到9,逐項(xiàng)進(jìn)行檢查測(cè)試,重點(diǎn)檢查第5項(xiàng),clk的極性
11)如果lcd點(diǎn)亮,但是花屏。則需要先確認(rèn)數(shù)據(jù)格式是否正確,然后確認(rèn)fb里的數(shù)據(jù)是否正常,有以下幾種方法確認(rèn)fb里的數(shù)據(jù)
i)cat /dev/graphics/fb0 》 /sdcard/fb0,然后將/sdcard/fb0 》到另一臺(tái)相同分辨率及相同格式的手機(jī)上,看圖片顯示是否正常 ii)使用irfanview軟件顯示cat /dev/graphics/fb0出來的raw數(shù)據(jù),注意要正確設(shè)置分辨率及格式,否則顯示花屏 iii)如果adb連接正常,可以使用豌豆莢等軟件,查看fb中的數(shù)據(jù)是否正常
通過以上三種途徑,如果確認(rèn)fb中的數(shù)據(jù)正常顯示,則很可能為lcd初始化代碼的問題,或者clk極性的問題,如果fb數(shù)據(jù)不正常,則可能為lcd控制寄存器配置不正常導(dǎo)致。
LCD屏的調(diào)試注意事項(xiàng)
1. Pix clock是否在規(guī)定的范圍內(nèi)。
2. Pclk是否極性正確。上升沿還是下降沿。
3. 變頻引起的閃屏問題。可以通過鎖定頻率來試驗(yàn)是否是變頻引起。
LCD擦除程序如何編寫?
下面是我去掉lcd驅(qū)動(dòng)的過程: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;
否則會(huì)出現(xiàn)如下錯(cuò)誤:
/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會(huì)出錯(cuò)
5. 拷貝drivers/video/cfbcopyarea.ko
drivers/video/cfbfillrect.ko
drivers/video/cfbimgblt.ko