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