Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android LCD調試實例流程

Android LCD調試實例流程

編輯:關於Android編程

調試前的參考文檔:

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,開始懷疑各種設置電壓是否正確…

重復修改源碼,編譯,燒機,驗證的步驟,情況還是依舊…

 

到晚上還是沒搞定,思考如何獲取u-boot驅動log,分析一下,或許可以找到答案,於是焊接RX(綠色),TX(白色),GND(黑色),在ubuntu下正確設置minicom獲取u-boot啟動log…

[   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] [<c45330e0>](unwind_backtrace+0x0/0xfc) from [<c48e7714>] (panic+0x60/0xe4)

[   18.231000] [<c48e7714>](panic+0x60/0xe4) from [<c452c514>] (init_post+0x88/0xdc)

[   18.246000] [<c452c514>](init_post+0x88/0xdc) from [<c4508414>] (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即可,也順利搞定!

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved