RK3568支持多種接口,本文主要介紹通過edp顯示接口驅(qū)動(dòng)edp顯示屏的具體操作方法以及調(diào)試記錄。
硬件準(zhǔn)備
首先介紹一下硬件。主板為風(fēng)火輪科技的YY3568開發(fā)板,主控RK3568。此開發(fā)板的相關(guān)介紹可以參考
https://wiki.youyeetoo.cn/zh/YY3568
板上帶有一個(gè)edp接口,這種接口定義是通用的。

edp屏使用的是風(fēng)火輪科技的11.6寸edp屏。此屏幕的相關(guān)介紹可以參考
http://wiki.youyeetoo.cn/zh/YYT_116EDP
硬件連接如下

如果只用到顯示功能,接上edp線即可,另外還有觸摸相關(guān)的IO,下一篇文章會(huì)介紹
原理圖如下

核心板把EDP的四組差分線都拉出來了,但底板只使用了兩組。因?yàn)檫@種30pin的座子標(biāo)準(zhǔn)就是只有兩組。
另外EDP還有熱插拔引腳,也就是這里的EDP_HPD,接到了GPIO_C2,不過R192默認(rèn)不貼,因此在底板上默認(rèn)是用不了熱插拔功能的。如果需要這功能需要貼上R192。

另外還有GPIO1_A4是它背光使能,這里直接默認(rèn)上拉了。如果要控制背光使能,則需要貼上R199
背光調(diào)節(jié)使用的是PWM14_M0。
軟件準(zhǔn)備
本文所使用的YY3568開發(fā)板已經(jīng)有配備SDK,以及編譯,燒錄的教程,可以參考YY3568的wiki,鏈接如下
https://wiki.youyeetoo.cn/zh/YY3568

linux系列的sdk和android系列的sdk編譯方法以及燒錄方法是不一樣的,編譯的時(shí)候注意一下。
要調(diào)試edp屏,主要涉及kernel部分修改,建議讀者首先了解kernel的編譯以及燒錄方法,這部分本文不做贅述。
Kernel部分修改
RK3568的VOP2帶有三個(gè)VIDEO PORT(VP0 VP1 VP2),支持最多6個(gè)圖層。下面以HDMI+EDP為例介紹kernel部分的修改。
目前Android全部采用的都是Linux DRM框架進(jìn)行顯示,在DRM框架中,其顯示通路如下圖所示

圖中的幾個(gè)組成部分
Framebuffer:顯存,嵌入式系統(tǒng)使用的是內(nèi)存的一部分
CRTC:顯示控制器,在RK3568平臺(tái)是VOP2,VOP2支持三個(gè)VIDEO PORT。這三個(gè)VP共享6個(gè)圖層,而每個(gè)圖層只能被一個(gè)VP使用。VP0最大支持4K輸出,VP1最大支持2K輸出。VP2只能支持RGB和LVDS,最大1080P,用的比較少。
Encoder:輸出轉(zhuǎn)換器,指RGB、LVDS、DSI、eDP、HDMI、CVBS、VGA等顯示接口,它本質(zhì)就是一個(gè)編碼器,將CRTC提供過來的信號(hào)編碼為對(duì)應(yīng)顯示接口需要的信號(hào)。RK3568支持DSI0 DSI1 EDP LVDS HDMI RGB六個(gè)顯示接口。
Connector:連接器,指encoder和panel之間交互的接口部分;
Panel:各種具體的屏幕
因此,要驅(qū)動(dòng)EDP屏幕,有三個(gè)部分需要配置,包括VOP,EDP控制器,屏幕的參數(shù)。
一般選擇VOP和具體顯示接口的對(duì)應(yīng)關(guān)系時(shí),會(huì)考慮性能問題,市面上EDP屏最大的分辨率一般不會(huì)超過2K,而HDMI很多4K的,因此這里選擇VP0接到HDMI,VP1接到EDP。
首先配置VOP。VOP需要配置的東西不多,只需指定各個(gè)vp使用的圖層,如果只用兩個(gè)vp,那一般就是每個(gè)vp各分配三個(gè)圖層。這里的參考如下,也可以調(diào)換vp0和vp1的配置。
在芯片級(jí)設(shè)備樹rk3568.dtsi中edp的配置如下圖,這個(gè)edp控制器有一個(gè)ports,指定了它連接到vp0或者是vp1

如果選擇連接到vp1,則要把edp_in_vp0設(shè)為disabled,同時(shí)把edp_in_vp1設(shè)為okay。另外還要使能它的phy,也就是這個(gè)&edp_phy,因此,在板級(jí)設(shè)備樹中,配置如下圖

在rk3568的設(shè)備樹配置中,vop默認(rèn)enable了所有的endpoint,因此,只需要使能了edp那里的endpoint,即可設(shè)置連接關(guān)系。

如果需要開機(jī)logo (kernel加載階段那個(gè)logo,不是android logo),則需要使能route_edp節(jié)點(diǎn)。默認(rèn)是disabled的。

如果不使用開機(jī)logo的時(shí)候,uboot是不會(huì)加載DRM驅(qū)動(dòng)的,這樣可以略微降低uboot階段消耗的時(shí)間。
然后需要配置edp控制器的一些屬性。

其中force-hpd就是強(qiáng)制使能edp輸出,無熱插拔功能時(shí)需要配置這個(gè)屬性。由于底板默認(rèn)沒有熱插拔腳,因此需要配置。不配置此屬性時(shí)則需要配置hpd-gpios,也就是指定熱插拔所使用的引腳。
edp控制器也是有兩個(gè)port的,前面已經(jīng)介紹了其中一個(gè)port是指定vop的,這里另外一個(gè)port是指定屏的。
panel的參數(shù)配置如下

其中power-supply是給屏使能的,這里用的是GPIO1_A4。雖然底板上面沒有這個(gè)功能(默認(rèn)常使能),但還是可以配置上這個(gè)腳,后續(xù)有需要可以貼上電阻開啟這個(gè)功能。

backlight指定的是背光調(diào)節(jié)的節(jié)點(diǎn),這里用的就是pwm14。

另外這個(gè)pwm14的使能要打開。

display-timings指定的是屏參。如果屏支持動(dòng)態(tài)讀取edid,則可以不指定顯示屏的具體參數(shù)。否則需要指定。
這個(gè)屏參可以從風(fēng)火輪科技那里獲取。
完成這些修改之后,在kernel目錄下面執(zhí)行編譯,得到boot.img。然后燒錄到板上
然后注意一下串口的kernel log,這個(gè)log說明drm驅(qū)動(dòng)已經(jīng)能夠正常運(yùn)作,實(shí)現(xiàn)vop和edp的綁定

這個(gè)log會(huì)在第一幀圖像輸出時(shí)打印,說明當(dāng)前vop的輸出分辨率,也就是Encoder的輸出分辨率
如果確認(rèn)上述的log都有,到這里,應(yīng)該開機(jī),能顯示出圖像

到這里,kernel部分的修改完成。
RK3568平臺(tái)Android11或者debian 10以上的sdk對(duì)顯示的支持已經(jīng)很完善,不需要過多的修改,用默認(rèn)配置即可
常見問題分析
1、背光不亮
首先確認(rèn)背光節(jié)點(diǎn)是否存在
ls /sys/class/backlight/backlight_edp
這個(gè)背光節(jié)點(diǎn)名跟設(shè)備樹配置的一致,筆者這里是backlight_edp

如果沒有存在,檢查pwm是否工作正常,執(zhí)行
dmesg | grep pwm
查看有無報(bào)錯(cuò)信息。
如果提示pwm加載失敗,存在pinctrl出錯(cuò),則說明pwm14使用的引腳被其它功能復(fù)用了,關(guān)閉其它功能即可
然后查看當(dāng)前亮度
cat /sys/class/backlight/backlight_edp/brightness
如果亮度為0,說明沒有配置默認(rèn)亮度,需要在backlight節(jié)點(diǎn)增加如下屬性

2、背光亮,沒有畫面顯示
需要一個(gè)名為modetest的工具,這個(gè)工具專門用于drm框架下顯示功能的調(diào)試
Android SDK下面已有此工具,默認(rèn)不安裝到系統(tǒng),使用如下命令編譯
mmm external/libdrm/tests/modetest/ -j8
輸出目錄為out/target/product/(product name)/data/nativetest64/modetest/modetest
將此工具通過U盤/adb等方式放到板上,執(zhí)行
modetest -c
可以看到如下信息

如果這個(gè)status顯示為disconnected,說明此時(shí)那個(gè)edp的節(jié)點(diǎn)打開了hpd-gpios,且此時(shí)沒有檢測到熱插拔事件,先確認(rèn)硬件上是否支持,如果不支持,則需要打開force-hpd并關(guān)閉hpd-gpios,如果支持,則需要檢查硬件連接
然后檢查下方的分辨率是否跟屏實(shí)際的一致,如果不一致,那么cpu端edp輸出的信號(hào)無法被屏的邏輯板識(shí)別,也是黑屏
部分edp屏不具備edid的功能,也就是必須要在設(shè)備樹配置分辨率。
如果此時(shí)還是不能顯示,那就要考慮是不是上層未將正確的顯存?zhèn)鬟f到驅(qū)動(dòng),這時(shí)可以用modetest產(chǎn)生colorbar來測試
注意到Connectors的id為359,分辨率為1920x1080。那么可以使用命令
modetest -s 359:1920x1080
此時(shí)屏上會(huì)顯示出colorbar

3、花屏
首先排查edp的輸出參數(shù)和屏參是否一致,像素時(shí)鐘是否正確。edp的像素時(shí)鐘有上限。
另外有些屏上下電有時(shí)序要求,注意規(guī)格書上面會(huì)說明在屏使能之前還是之后才提供edp數(shù)據(jù)。如果這個(gè)時(shí)序不對(duì),會(huì)導(dǎo)致屏上面有殘影,看起來就是花屏。
4、部分顯示不全、閃屏
通常是某個(gè)圖層工作不正常。這時(shí)候會(huì)看到類似如下的內(nèi)核日志

這說明edp綁定的vp的圖層帶寬不足。像分辨率較高的顯示接口,需要分配至少一個(gè)ROCKCHIP_VOP2_SMART,同時(shí)將它的primary-plane設(shè)置為這個(gè)SMART圖層。可以參考上一章節(jié)的VOP配置。
總結(jié)
本文以YY3568開發(fā)板外接11.6寸edp屏為例介紹了如何在RK3568平臺(tái)上面調(diào)試edp屏幕。同時(shí)提供了一些調(diào)試過程中遇到的問題的解決方法。目前edp的應(yīng)用場景越來越廣泛,在商顯,車載等領(lǐng)域,已有取代LVDS之勢。風(fēng)火輪科技的開發(fā)板上面已經(jīng)具備了這個(gè)標(biāo)準(zhǔn)的edp接口,如果有需要在rk3568平臺(tái)適配各種edp屏的,可以考慮用YY3568開發(fā)板來調(diào)試。
審核編輯 黃宇
-
嵌入式
+關(guān)注
關(guān)注
5103文章
19268瀏覽量
310026 -
接口
+關(guān)注
關(guān)注
33文章
8775瀏覽量
152397 -
調(diào)試
+關(guān)注
關(guān)注
7文章
593瀏覽量
34210 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5210瀏覽量
99126 -
RK3568
+關(guān)注
關(guān)注
4文章
539瀏覽量
5491
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
RK3568J edp屏幕點(diǎn)亮?xí)r序調(diào)試過程是怎樣的?
請(qǐng)教一下RK3568是如何將EDP轉(zhuǎn)成VGA-out的
RK3568J 配置EDP沒有設(shè)備接點(diǎn)屏幕也無輸出是何原因
ROC RK3568 PC源代碼RK3568/RK3588 RKNN SDK

RK3568核心板數(shù)據(jù)手冊(cè)
技術(shù)分享 | RK3568 buildroot文件系統(tǒng)下的三屏顯示調(diào)試

RK3568與3568J的區(qū)別
rk3568是什么架構(gòu)的?
瑞芯微RK3568開發(fā)板多屏同顯方案

評(píng)論