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