RK3568 EDP接口调试

rk3568支持多种接口,本文主要介绍通过edp显示接口驱动edp显示屏的具体操作方法以及调试记录。
硬件准备
首先介绍一下硬件。主板为风火轮科技的yy3568开发板,主控rk3568。此开发板的相关介绍可以参考
https://wiki.youyeetoo.cn/zh/yy3568
板上带有一个edp接口,这种接口定义是通用的。
edp屏使用的是风火轮科技的11.6寸edp屏。此屏幕的相关介绍可以参考
http://wiki.youyeetoo.cn/zh/yyt_116edp
硬件连接如下
如果只用到显示功能,接上edp线即可,另外还有触摸相关的io,下一篇文章会介绍
原理图如下
核心板把edp的四组差分线都拉出来了,但底板只使用了两组。因为这种30pin的座子标准就是只有两组。
另外edp还有热插拔引脚,也就是这里的edp_hpd,接到了gpio_c2,不过r192默认不贴,因此在底板上默认是用不了热插拔功能的。如果需要这功能需要贴上r192。
另外还有gpio1_a4是它背光使能,这里直接默认上拉了。如果要控制背光使能,则需要贴上r199
背光调节使用的是pwm14_m0。
软件准备
本文所使用的yy3568开发板已经有配备sdk,以及编译,烧录的教程,可以参考yy3568的wiki,链接如下
https://wiki.youyeetoo.cn/zh/yy3568
linux系列的sdk和android系列的sdk编译方法以及烧录方法是不一样的,编译的时候注意一下。
要调试edp屏,主要涉及kernel部分修改,建议读者首先了解kernel的编译以及烧录方法,这部分本文不做赘述。
kernel部分修改
rk3568的vop2带有三个video port(vp0 vp1 vp2),支持最多6个图层。下面以hdmi+edp为例介绍kernel部分的修改。
目前android全部采用的都是linux drm框架进行显示,在drm框架中,其显示通路如下图所示
图中的几个组成部分
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 
如果选择连接到vp1,则要把edp_in_vp0设为disabled,同时把edp_in_vp1设为okay。另外还要使能它的phy,也就是这个&edp_phy,因此,在板级设备树中,配置如下图
在rk3568的设备树配置中,vop默认enable了所有的endpoint,因此,只需要使能了edp那里的endpoint,即可设置连接关系。
如果需要开机logo (kernel加载阶段那个logo,不是android logo),则需要使能route_edp节点。默认是disabled的。
如果不使用开机logo的时候,uboot是不会加载drm驱动的,这样可以略微降低uboot阶段消耗的时间。
然后需要配置edp控制器的一些属性。
其中force-hpd就是强制使能edp输出,无热插拔功能时需要配置这个属性。由于底板默认没有热插拔脚,因此需要配置。不配置此属性时则需要配置hpd-gpios,也就是指定热插拔所使用的引脚。
edp控制器也是有两个port的,前面已经介绍了其中一个port是指定vop的,这里另外一个port是指定屏的。
panel的参数配置如下
其中power-supply是给屏使能的,这里用的是gpio1_a4。虽然底板上面没有这个功能(默认常使能),但还是可以配置上这个脚,后续有需要可以贴上电阻开启这个功能。
backlight指定的是背光调节的节点,这里用的就是pwm14。
另外这个pwm14的使能要打开。
display-timings指定的是屏参。如果屏支持动态读取edid,则可以不指定显示屏的具体参数。否则需要指定。
这个屏参可以从风火轮科技那里获取。
完成这些修改之后,在kernel目录下面执行编译,得到boot.img。然后烧录到板上
然后注意一下串口的kernel log,这个log说明drm驱动已经能够正常运作,实现vop和edp的绑定
这个log会在第一帧图像输出时打印,说明当前vop的输出分辨率,也就是encoder的输出分辨率
如果确认上述的log都有,到这里,应该开机,能显示出图像
到这里,kernel部分的修改完成。
rk3568平台android11或者debian 10以上的sdk对显示的支持已经很完善,不需要过多的修改,用默认配置即可
常见问题分析
1、背光不亮
首先确认背光节点是否存在
ls /sys/class/backlight/backlight_edp
这个背光节点名跟设备树配置的一致,笔者这里是backlight_edp
如果没有存在,检查pwm是否工作正常,执行
dmesg | grep pwm
查看有无报错信息。
如果提示pwm加载失败,存在pinctrl出错,则说明pwm14使用的引脚被其它功能复用了,关闭其它功能即可
然后查看当前亮度
cat /sys/class/backlight/backlight_edp/brightness
如果亮度为0,说明没有配置默认亮度,需要在backlight节点增加如下属性
2、背光亮,没有画面显示
需要一个名为modetest的工具,这个工具专门用于drm框架下显示功能的调试
android sdk下面已有此工具,默认不安装到系统,使用如下命令编译
mmm external/libdrm/tests/modetest/ -j8
输出目录为out/target/product/(product name)/data/nativetest64/modetest/modetest
将此工具通过u盘/adb等方式放到板上,执行
modetest -c
可以看到如下信息
如果这个status显示为disconnected,说明此时那个edp的节点打开了hpd-gpios,且此时没有检测到热插拔事件,先确认硬件上是否支持,如果不支持,则需要打开force-hpd并关闭hpd-gpios,如果支持,则需要检查硬件连接
然后检查下方的分辨率是否跟屏实际的一致,如果不一致,那么cpu端edp输出的信号无法被屏的逻辑板识别,也是黑屏
部分edp屏不具备edid的功能,也就是必须要在设备树配置分辨率。
如果此时还是不能显示,那就要考虑是不是上层未将正确的显存传递到驱动,这时可以用modetest产生colorbar来测试
注意到connectors的id为359,分辨率为1920x1080。那么可以使用命令
modetest -s 359:1920x1080
此时屏上会显示出colorbar
3、花屏
首先排查edp的输出参数和屏参是否一致,像素时钟是否正确。edp的像素时钟有上限。
另外有些屏上下电有时序要求,注意规格书上面会说明在屏使能之前还是之后才提供edp数据。如果这个时序不对,会导致屏上面有残影,看起来就是花屏。
4、部分显示不全、闪屏
通常是某个图层工作不正常。这时候会看到类似如下的内核日志
这说明edp绑定的vp的图层带宽不足。像分辨率较高的显示接口,需要分配至少一个rockchip_vop2_smart,同时将它的primary-plane设置为这个smart图层。可以参考上一章节的vop配置。
总结
本文以yy3568开发板外接11.6寸edp屏为例介绍了如何在rk3568平台上面调试edp屏幕。同时提供了一些调试过程中遇到的问题的解决方法。目前edp的应用场景越来越广泛,在商显,车载等领域,已有取代lvds之势。风火轮科技的开发板上面已经具备了这个标准的edp接口,如果有需要在rk3568平台适配各种edp屏的,可以考虑用yy3568开发板来调试。


汽车集成电路调节器电路
全球MVNO和足迹密集的运营商表现强劲
电源连接器的三种连接方式
研究团队提出量子点带尾调控方法
Akoustis首批5G移动BAW滤波器送样
RK3568 EDP接口调试
和赢智能浅析不锈钢抛光常用的方法
明治传感与全球科技创新成果同台竞技
智能家居常用的传感器都有哪几种?
SP706SEN-L/TR SP706SE 看门狗微处理器监控电路芯片
2018全球石墨烯九大趋势:在传感器,RFID,EMI/ESD等电子领域获得突破
智能网联汽车技术七大功能介绍及应用盘点
小米在印度发布了Redmi 8手机该机搭载骁龙439平台和5000mAh大电池
未来中国有望在汽车电动和智能化实现“换道超车”
在微控制器市场危机中收获成功
基于数字信号处理器和GPS技术实现PMU测量系统的设计
diy空调制作图解
关于压面电阻和压敏电容,区别它们的方法是什么
简化日益定制的RISC-V处理器的设计验证
力合微:光伏协议转换器通信模组产品已批量供货