RK3568支持多種接口,本文主要介紹通過(guò)edp顯示接口驅(qū)動(dòng)edp顯示屏的具體操作方法以及調(diào)試記錄。
硬件準(zhǔn)備
首先介紹一下硬件。主板為風(fēng)火輪科技的YY3568開(kāi)發(fā)板,主控RK3568。此開(kāi)發(fā)板的相關(guān)介紹可以參考
https://wiki.youyeetoo.cn/zh/YY3568
板上帶有一個(gè)edp接口,這種接口定義是通用的。
![wKgaomUJw56ACFg-AACLwFv18go508.png](https://file1.elecfans.com/web2/M00/A5/40/wKgaomUJw56ACFg-AACLwFv18go508.png)
edp屏使用的是風(fēng)火輪科技的11.6寸edp屏。此屏幕的相關(guān)介紹可以參考
http://wiki.youyeetoo.cn/zh/YYT_116EDP
硬件連接如下
![wKgZomUJw6CAdvB0AAF7EgbGzLM913.png](https://file1.elecfans.com/web2/M00/A3/D4/wKgZomUJw6CAdvB0AAF7EgbGzLM913.png)
如果只用到顯示功能,接上edp線即可,另外還有觸摸相關(guān)的IO,下一篇文章會(huì)介紹
原理圖如下
![wKgZomUJw7GAHGiOAAD2hy2Guv0156.png](https://file1.elecfans.com/web2/M00/A3/D4/wKgZomUJw7GAHGiOAAD2hy2Guv0156.png)
核心板把EDP的四組差分線都拉出來(lái)了,但底板只使用了兩組。因?yàn)檫@種30pin的座子標(biāo)準(zhǔn)就是只有兩組。
另外EDP還有熱插拔引腳,也就是這里的EDP_HPD,接到了GPIO_C2,不過(guò)R192默認(rèn)不貼,因此在底板上默認(rèn)是用不了熱插拔功能的。如果需要這功能需要貼上R192。
![wKgaomUJw56APQGZAAAaOQ1By_c410.png](https://file1.elecfans.com/web2/M00/A5/41/wKgaomUJw56APQGZAAAaOQ1By_c410.png)
另外還有GPIO1_A4是它背光使能,這里直接默認(rèn)上拉了。如果要控制背光使能,則需要貼上R199
背光調(diào)節(jié)使用的是PWM14_M0。
軟件準(zhǔn)備
本文所使用的YY3568開(kāi)發(fā)板已經(jīng)有配備SDK,以及編譯,燒錄的教程,可以參考YY3568的wiki,鏈接如下
https://wiki.youyeetoo.cn/zh/YY3568
![wKgZomUJw56AfTVHAABksWHIOy8560.png](https://file1.elecfans.com/web2/M00/A3/D4/wKgZomUJw56AfTVHAABksWHIOy8560.png)
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框架中,其顯示通路如下圖所示
![wKgZomUJw6CAfSqhAAEI5CE1L2w245.png](https://file1.elecfans.com/web2/M00/A3/D4/wKgZomUJw6CAfSqhAAEI5CE1L2w245.png)
圖中的幾個(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提供過(guò)來(lái)的信號(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ì)考慮性能問(wèn)題,市面上EDP屏最大的分辨率一般不會(huì)超過(guò)2K,而HDMI很多4K的,因此這里選擇VP0接到HDMI,VP1接到EDP。
首先配置VOP。VOP需要配置的東西不多,只需指定各個(gè)vp使用的圖層,如果只用兩個(gè)vp,那一般就是每個(gè)vp各分配三個(gè)圖層。這里的參考如下,也可以調(diào)換vp0和vp1的配置。
在芯片級(jí)設(shè)備樹(shù)rk3568.dtsi中edp的配置如下圖,這個(gè)edp控制器有一個(gè)ports,指定了它連接到vp0或者是vp1
![wKgZomUJw56Af8uIAAC9xw51bnc663.png](https://file1.elecfans.com/web2/M00/A3/D4/wKgZomUJw56Af8uIAAC9xw51bnc663.png)
如果選擇連接到vp1,則要把edp_in_vp0設(shè)為disabled,同時(shí)把edp_in_vp1設(shè)為okay。另外還要使能它的phy,也就是這個(gè)&edp_phy,因此,在板級(jí)設(shè)備樹(shù)中,配置如下圖
![wKgaomUJw56AHqHEAAAokPZlYrY083.png](https://file1.elecfans.com/web2/M00/A5/41/wKgaomUJw56AHqHEAAAokPZlYrY083.png)
在rk3568的設(shè)備樹(shù)配置中,vop默認(rèn)enable了所有的endpoint,因此,只需要使能了edp那里的endpoint,即可設(shè)置連接關(guān)系。
![wKgZomUJw56AChjCAABKMDx19fQ478.png](https://file1.elecfans.com/web2/M00/A3/D4/wKgZomUJw56AChjCAABKMDx19fQ478.png)
如果需要開(kāi)機(jī)logo (kernel加載階段那個(gè)logo,不是android logo),則需要使能route_edp節(jié)點(diǎn)。默認(rèn)是disabled的。
![wKgaomUJw56APoORAAAPlVMzf0o663.png](https://file1.elecfans.com/web2/M00/A5/41/wKgaomUJw56APoORAAAPlVMzf0o663.png)
如果不使用開(kāi)機(jī)logo的時(shí)候,uboot是不會(huì)加載DRM驅(qū)動(dòng)的,這樣可以略微降低uboot階段消耗的時(shí)間。
然后需要配置edp控制器的一些屬性。
![wKgaomUJw56AOr6-AAA23FG9RIY848.png](https://file1.elecfans.com/web2/M00/A5/41/wKgaomUJw56AOr6-AAA23FG9RIY848.png)
其中force-hpd就是強(qiáng)制使能edp輸出,無(wú)熱插拔功能時(shí)需要配置這個(gè)屬性。由于底板默認(rèn)沒(méi)有熱插拔腳,因此需要配置。不配置此屬性時(shí)則需要配置hpd-gpios,也就是指定熱插拔所使用的引腳。
edp控制器也是有兩個(gè)port的,前面已經(jīng)介紹了其中一個(gè)port是指定vop的,這里另外一個(gè)port是指定屏的。
panel的參數(shù)配置如下
![wKgZomUJw5-ANtyxAACuxATPVM0203.png](https://file1.elecfans.com/web2/M00/A3/D4/wKgZomUJw5-ANtyxAACuxATPVM0203.png)
其中power-supply是給屏使能的,這里用的是GPIO1_A4。雖然底板上面沒(méi)有這個(gè)功能(默認(rèn)常使能),但還是可以配置上這個(gè)腳,后續(xù)有需要可以貼上電阻開(kāi)啟這個(gè)功能。
![wKgZomUJw5-Adr6oAABFSDHRu9w820.png](https://file1.elecfans.com/web2/M00/A3/D4/wKgZomUJw5-Adr6oAABFSDHRu9w820.png)
backlight指定的是背光調(diào)節(jié)的節(jié)點(diǎn),這里用的就是pwm14。
![wKgaomUJw5-APepUAAAXx1Lg79s573.png](https://file1.elecfans.com/web2/M00/A5/41/wKgaomUJw5-APepUAAAXx1Lg79s573.png)
另外這個(gè)pwm14的使能要打開(kāi)。
![wKgaomUJw5-AdYLcAAAJtNHt9kA962.png](https://file1.elecfans.com/web2/M00/A5/41/wKgaomUJw5-AdYLcAAAJtNHt9kA962.png)
display-timings指定的是屏參。如果屏支持動(dòng)態(tài)讀取edid,則可以不指定顯示屏的具體參數(shù)。否則需要指定。
這個(gè)屏參可以從風(fēng)火輪科技那里獲取。
完成這些修改之后,在kernel目錄下面執(zhí)行編譯,得到boot.img。然后燒錄到板上
然后注意一下串口的kernel log,這個(gè)log說(shuō)明drm驅(qū)動(dòng)已經(jīng)能夠正常運(yùn)作,實(shí)現(xiàn)vop和edp的綁定
![wKgZomUJw5-AaA5dAAAO2vRHh2Q497.png](https://file1.elecfans.com/web2/M00/A3/D4/wKgZomUJw5-AaA5dAAAO2vRHh2Q497.png)
這個(gè)log會(huì)在第一幀圖像輸出時(shí)打印,說(shuō)明當(dāng)前vop的輸出分辨率,也就是Encoder的輸出分辨率
如果確認(rèn)上述的log都有,到這里,應(yīng)該開(kāi)機(jī),能顯示出圖像
![wKgaomUJw6OAPXR8AANWCWd5Wj4161.png](https://file1.elecfans.com/web2/M00/A5/41/wKgaomUJw6OAPXR8AANWCWd5Wj4161.png)
到這里,kernel部分的修改完成。
RK3568平臺(tái)Android11或者debian 10以上的sdk對(duì)顯示的支持已經(jīng)很完善,不需要過(guò)多的修改,用默認(rèn)配置即可
常見(jiàn)問(wèn)題分析
1、背光不亮
首先確認(rèn)背光節(jié)點(diǎn)是否存在
ls /sys/class/backlight/backlight_edp
這個(gè)背光節(jié)點(diǎn)名跟設(shè)備樹(shù)配置的一致,筆者這里是backlight_edp
![wKgZomUJw5-AMBB-AAAtMsCKlBg713.png](https://file1.elecfans.com/web2/M00/A3/D4/wKgZomUJw5-AMBB-AAAtMsCKlBg713.png)
如果沒(méi)有存在,檢查pwm是否工作正常,執(zhí)行
dmesg | grep pwm
查看有無(wú)報(bào)錯(cuò)信息。
如果提示pwm加載失敗,存在pinctrl出錯(cuò),則說(shuō)明pwm14使用的引腳被其它功能復(fù)用了,關(guān)閉其它功能即可
然后查看當(dāng)前亮度
cat /sys/class/backlight/backlight_edp/brightness
如果亮度為0,說(shuō)明沒(méi)有配置默認(rèn)亮度,需要在backlight節(jié)點(diǎn)增加如下屬性
![wKgaomUJw5-AF4LIAAAI6yT3GXE446.png](https://file1.elecfans.com/web2/M00/A5/41/wKgaomUJw5-AF4LIAAAI6yT3GXE446.png)
2、背光亮,沒(méi)有畫(huà)面顯示
需要一個(gè)名為modetest的工具,這個(gè)工具專門(mén)用于drm框架下顯示功能的調(diào)試
Android SDK下面已有此工具,默認(rèn)不安裝到系統(tǒng),使用如下命令編譯
mmm external/libdrm/tests/modetest/ -j8
輸出目錄為out/target/product/(product name)/data/nativetest64/modetest/modetest
將此工具通過(guò)U盤(pán)/adb等方式放到板上,執(zhí)行
modetest -c
可以看到如下信息
![wKgaomUJw5-AdxjOAABrAToXj_c956.png](https://file1.elecfans.com/web2/M00/A5/41/wKgaomUJw5-AdxjOAABrAToXj_c956.png)
如果這個(gè)status顯示為disconnected,說(shuō)明此時(shí)那個(gè)edp的節(jié)點(diǎn)打開(kāi)了hpd-gpios,且此時(shí)沒(méi)有檢測(cè)到熱插拔事件,先確認(rèn)硬件上是否支持,如果不支持,則需要打開(kāi)force-hpd并關(guān)閉hpd-gpios,如果支持,則需要檢查硬件連接
然后檢查下方的分辨率是否跟屏實(shí)際的一致,如果不一致,那么cpu端edp輸出的信號(hào)無(wú)法被屏的邏輯板識(shí)別,也是黑屏
部分edp屏不具備edid的功能,也就是必須要在設(shè)備樹(shù)配置分辨率。
如果此時(shí)還是不能顯示,那就要考慮是不是上層未將正確的顯存?zhèn)鬟f到驅(qū)動(dòng),這時(shí)可以用modetest產(chǎn)生colorbar來(lái)測(cè)試
注意到Connectors的id為359,分辨率為1920x1080。那么可以使用命令
modetest -s 359:1920x1080
此時(shí)屏上會(huì)顯示出colorbar
![wKgaomUJw6CANJgsAAEqpOyHWp8002.png](https://file1.elecfans.com/web2/M00/A5/41/wKgaomUJw6CANJgsAAEqpOyHWp8002.png)
3、花屏
首先排查edp的輸出參數(shù)和屏參是否一致,像素時(shí)鐘是否正確。edp的像素時(shí)鐘有上限。
另外有些屏上下電有時(shí)序要求,注意規(guī)格書(shū)上面會(huì)說(shuō)明在屏使能之前還是之后才提供edp數(shù)據(jù)。如果這個(gè)時(shí)序不對(duì),會(huì)導(dǎo)致屏上面有殘影,看起來(lái)就是花屏。
4、部分顯示不全、閃屏
通常是某個(gè)圖層工作不正常。這時(shí)候會(huì)看到類似如下的內(nèi)核日志
![wKgZomUJw5-AE8aWAAARJpJZG00551.png](https://file1.elecfans.com/web2/M00/A3/D4/wKgZomUJw5-AE8aWAAARJpJZG00551.png)
這說(shuō)明edp綁定的vp的圖層帶寬不足。像分辨率較高的顯示接口,需要分配至少一個(gè)ROCKCHIP_VOP2_SMART,同時(shí)將它的primary-plane設(shè)置為這個(gè)SMART圖層??梢詤⒖忌弦徽鹿?jié)的VOP配置。
總結(jié)
本文以YY3568開(kāi)發(fā)板外接11.6寸edp屏為例介紹了如何在RK3568平臺(tái)上面調(diào)試edp屏幕。同時(shí)提供了一些調(diào)試過(guò)程中遇到的問(wèn)題的解決方法。目前edp的應(yīng)用場(chǎng)景越來(lái)越廣泛,在商顯,車載等領(lǐng)域,已有取代LVDS之勢(shì)。風(fēng)火輪科技的開(kāi)發(fā)板上面已經(jīng)具備了這個(gè)標(biāo)準(zhǔn)的edp接口,如果有需要在rk3568平臺(tái)適配各種edp屏的,可以考慮用YY3568開(kāi)發(fā)板來(lái)調(diào)試。
審核編輯 黃宇
-
嵌入式
+關(guān)注
關(guān)注
5094文章
19184瀏覽量
307857 -
接口
+關(guān)注
關(guān)注
33文章
8706瀏覽量
151973 -
調(diào)試
+關(guān)注
關(guān)注
7文章
589瀏覽量
34075 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5125瀏覽量
98280 -
RK3568
+關(guān)注
關(guān)注
4文章
526瀏覽量
5241
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
RK3568J edp屏幕點(diǎn)亮?xí)r序調(diào)試過(guò)程是怎樣的?
請(qǐng)教一下RK3568是如何將EDP轉(zhuǎn)成VGA-out的
RK3568J 配置EDP沒(méi)有設(shè)備接點(diǎn)屏幕也無(wú)輸出是何原因
ROC RK3568 PC源代碼RK3568/RK3588 RKNN SDK
![ROC <b class='flag-5'>RK3568</b> PC源代碼<b class='flag-5'>RK3568</b>/<b class='flag-5'>RK</b>3588 RKNN SDK](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
RK3568核心板數(shù)據(jù)手冊(cè)
技術(shù)分享 | RK3568 buildroot文件系統(tǒng)下的三屏顯示調(diào)試
![技術(shù)分享 | <b class='flag-5'>RK3568</b> buildroot文件系統(tǒng)下的三屏顯示<b class='flag-5'>調(diào)試</b>](https://file.elecfans.com/web2/M00/43/4A/poYBAGJ9sjaAPEhHAAAvI_7i-HA907.jpg)
RK3568與3568J的區(qū)別
rk3568是什么架構(gòu)的?
瑞芯微RK3568開(kāi)發(fā)板多屏同顯方案
![瑞芯微<b class='flag-5'>RK3568</b>開(kāi)發(fā)板多屏同顯方案](https://file1.elecfans.com/web2/M00/A4/60/wKgaomUCojGAGS7CAABeUyTVygs930.png)
評(píng)論