0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RK3568 EDP接口调试

chen 来源:chen000000009 作者:chen000000009 2023-09-20 09:57 次阅读

RK3568支持多种接口,本文主要介绍通过edp显示接口驱动edp显示屏的具体操作方法以及调试记录。

硬件准备

首先介绍一下硬件。主板为风火轮科技的YY3568开发板,主控RK3568。此开发板的相关介绍可以参考

https://wiki.youyeetoo.cn/zh/YY3568

板上带有一个edp接口,这种接口定义是通用的。

wKgaomUJw56ACFg-AACLwFv18go508.png

edp屏使用的是风火轮科技的11.6寸edp屏。此屏幕的相关介绍可以参考

http://wiki.youyeetoo.cn/zh/YYT_116EDP

硬件连接如下

wKgZomUJw6CAdvB0AAF7EgbGzLM913.png

如果只用到显示功能,接上edp线即可,另外还有触摸相关的IO,下一篇文章会介绍

原理图如下

wKgZomUJw7GAHGiOAAD2hy2Guv0156.png

核心板把EDP的四组差分线都拉出来了,但底板只使用了两组。因为这种30pin的座子标准就是只有两组。

另外EDP还有热插拔引脚,也就是这里的EDP_HPD,接到了GPIO_C2,不过R192默认不贴,因此在底板上默认是用不了热插拔功能的。如果需要这功能需要贴上R192。

wKgaomUJw56APQGZAAAaOQ1By_c410.png

另外还有GPIO1_A4是它背光使能,这里直接默认上拉了。如果要控制背光使能,则需要贴上R199

背光调节使用的是PWM14_M0。

软件准备

本文所使用的YY3568开发板已经有配备SDK,以及编译,烧录的教程,可以参考YY3568的wiki,链接如下

https://wiki.youyeetoo.cn/zh/YY3568

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

图中的几个组成部分

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

如果选择连接到vp1,则要把edp_in_vp0设为disabled,同时把edp_in_vp1设为okay。另外还要使能它的phy,也就是这个&edp_phy,因此,在板级设备树中,配置如下图

wKgaomUJw56AHqHEAAAokPZlYrY083.png

在rk3568的设备树配置中,vop默认enable了所有的endpoint,因此,只需要使能了edp那里的endpoint,即可设置连接关系。

wKgZomUJw56AChjCAABKMDx19fQ478.png

如果需要开机logo (kernel加载阶段那个logo,不是android logo),则需要使能route_edp节点。默认是disabled的。

wKgaomUJw56APoORAAAPlVMzf0o663.png

如果不使用开机logo的时候,uboot是不会加载DRM驱动的,这样可以略微降低uboot阶段消耗的时间。

然后需要配置edp控制器的一些属性。

wKgaomUJw56AOr6-AAA23FG9RIY848.png

其中force-hpd就是强制使能edp输出,无热插拔功能时需要配置这个属性。由于底板默认没有热插拔脚,因此需要配置。不配置此属性时则需要配置hpd-gpios,也就是指定热插拔所使用的引脚。

edp控制器也是有两个port的,前面已经介绍了其中一个port是指定vop的,这里另外一个port是指定屏的。

panel的参数配置如下

wKgZomUJw5-ANtyxAACuxATPVM0203.png

其中power-supply是给屏使能的,这里用的是GPIO1_A4。虽然底板上面没有这个功能(默认常使能),但还是可以配置上这个脚,后续有需要可以贴上电阻开启这个功能。

wKgZomUJw5-Adr6oAABFSDHRu9w820.png

backlight指定的是背光调节的节点,这里用的就是pwm14。

wKgaomUJw5-APepUAAAXx1Lg79s573.png

另外这个pwm14的使能要打开。

wKgaomUJw5-AdYLcAAAJtNHt9kA962.png

display-timings指定的是屏参。如果屏支持动态读取edid,则可以不指定显示屏的具体参数。否则需要指定。

这个屏参可以从风火轮科技那里获取。

完成这些修改之后,在kernel目录下面执行编译,得到boot.img。然后烧录到板上

然后注意一下串口的kernel log,这个log说明drm驱动已经能够正常运作,实现vop和edp的绑定

wKgZomUJw5-AaA5dAAAO2vRHh2Q497.png

这个log会在第一帧图像输出时打印,说明当前vop的输出分辨率,也就是Encoder的输出分辨率

如果确认上述的log都有,到这里,应该开机,能显示出图像

wKgaomUJw6OAPXR8AANWCWd5Wj4161.png

到这里,kernel部分的修改完成。

RK3568平台Android11或者debian 10以上的sdk对显示的支持已经很完善,不需要过多的修改,用默认配置即可

常见问题分析

1、背光不亮

首先确认背光节点是否存在

ls /sys/class/backlight/backlight_edp

这个背光节点名跟设备树配置的一致,笔者这里是backlight_edp

wKgZomUJw5-AMBB-AAAtMsCKlBg713.png

如果没有存在,检查pwm是否工作正常,执行

dmesg | grep pwm

查看有无报错信息

如果提示pwm加载失败,存在pinctrl出错,则说明pwm14使用的引脚被其它功能复用了,关闭其它功能即可

然后查看当前亮度

cat /sys/class/backlight/backlight_edp/brightness

如果亮度为0,说明没有配置默认亮度,需要在backlight节点增加如下属性

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

如果这个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

3、花屏

首先排查edp的输出参数和屏参是否一致,像素时钟是否正确。edp的像素时钟有上限。

另外有些屏上下电有时序要求,注意规格书上面会说明在屏使能之前还是之后才提供edp数据。如果这个时序不对,会导致屏上面有残影,看起来就是花屏。

4、部分显示不全、闪屏

通常是某个图层工作不正常。这时候会看到类似如下的内核日志

wKgZomUJw5-AE8aWAAARJpJZG00551.png

这说明edp绑定的vp的图层带宽不足。像分辨率较高的显示接口,需要分配至少一个ROCKCHIP_VOP2_SMART,同时将它的primary-plane设置为这个SMART图层。可以参考上一章节的VOP配置。

总结

本文以YY3568开发板外接11.6寸edp屏为例介绍了如何在RK3568平台上面调试edp屏幕。同时提供了一些调试过程中遇到的问题的解决方法。目前edp的应用场景越来越广泛,在商显,车载等领域,已有取代LVDS之势。风火轮科技的开发板上面已经具备了这个标准的edp接口,如果有需要在rk3568平台适配各种edp屏的,可以考虑用YY3568开发板来调试。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5083

    文章

    19129

    浏览量

    305400
  • 接口
    +关注

    关注

    33

    文章

    8610

    浏览量

    151213
  • 调试
    +关注

    关注

    7

    文章

    578

    浏览量

    33951
  • 开发板
    +关注

    关注

    25

    文章

    5057

    浏览量

    97519
  • RK3568
    +关注

    关注

    4

    文章

    514

    浏览量

    5058
收藏 人收藏

    评论

    相关推荐

    RK3568-GDB程序调试方法说明

    RK3568-GDB程序调试方法说明
    的头像 发表于 01-19 16:16 1865次阅读
    <b class='flag-5'>RK3568</b>-GDB程序<b class='flag-5'>调试</b>方法说明

    RK3568J edp屏幕点亮时序调试过程是怎样的?

    RK3568J edp屏幕点亮时序调试过程是怎样的?
    发表于 03-02 07:01

    请教一下RK3568是如何将EDP转成VGA-out的

    请教一下RK3568是如何将EDP转成VGA-out的?
    发表于 03-02 06:29

    RK3568J 配置EDP没有设备接点屏幕也无输出是何原因

    RK_KERNEL_DTS=rk3568-firefly-aiojexport RK_KERNEL_DTS=rk3568-firefly-aioj-edp-M156X40PRODUC
    发表于 11-09 16:37

    ROC RK3568 PC源代码RK3568/RK3588 RKNN SDK

    电子发烧友网站提供《ROC RK3568 PC源代码RK3568/RK3588 RKNN SDK.txt》资料免费下载
    发表于 09-20 09:55 41次下载
    ROC <b class='flag-5'>RK3568</b> PC源代码<b class='flag-5'>RK3568</b>/<b class='flag-5'>RK</b>3588 RKNN SDK

    RK3568 SDK 的编译

    RK3568 SDK 的编译
    的头像 发表于 12-13 11:46 1638次阅读
    <b class='flag-5'>RK3568</b> SDK 的编译

    技术分享 | RK3568 buildroot文件系统下的三屏显示调试

    IAC-RK3568-KitIAC-RK3568-Kit开发板基于瑞芯微RK3568四核Cortex-A55处理器,支持HDMI、LVDS、MIPI、EDP四种显示接口,能够实现三屏同
    的头像 发表于 04-10 11:14 5277次阅读
    技术分享 | <b class='flag-5'>RK3568</b> buildroot文件系统下的三屏显示<b class='flag-5'>调试</b>

    瑞芯微RK3568主板开发板PET_RK3568_P01简述

    瑞芯微RK3568主板开发板PET_RK3568_P01简述
    的头像 发表于 08-08 11:41 3098次阅读
    瑞芯微<b class='flag-5'>RK3568</b>主板开发板PET_<b class='flag-5'>RK3568</b>_P01简述

    瑞芯微RK3568核心板PET_RK3568_CORE简述

    瑞芯微RK3568核心板PET_RK3568_CORE简述
    的头像 发表于 08-08 11:44 3911次阅读
    瑞芯微<b class='flag-5'>RK3568</b>核心板PET_<b class='flag-5'>RK3568</b>_CORE简述

    RK35683568J的区别

    RK35683568J的区别 在当前处理器市场中,以小而美形象闻名的瑞克微电子旗下产品RK3568/J也引起了广泛关注,其中RK35683568
    的头像 发表于 08-15 17:25 9689次阅读

    rk3568是什么架构的?

    RK3568是什么架构的? 中国领先的无晶圆厂半导体公司Rockchip Electronics推出了一款专门为人工智能应用设计的新型片上系统(SoC)。这种新型SoC被称为RK3568,构建
    的头像 发表于 08-15 17:25 2918次阅读

    瑞芯微RK3568开发板多屏同显方案

    HD-RK3568核心板基于瑞芯微RK3568设计,支持HDMI、MIPI、eDP、LVDS四种显示接口,适配多种显示方案,满足医疗电子、电力电子、工业自动化、车载中控等多种行业应用。
    的头像 发表于 09-14 14:03 1139次阅读
    瑞芯微<b class='flag-5'>RK3568</b>开发板多屏同显方案

    RK3568核心板桥梁监测设备接口应用

    RK3568核心板桥梁监测设备接口应用-迅为电子
    的头像 发表于 07-24 15:18 359次阅读
    <b class='flag-5'>RK3568</b>核心板桥梁监测设备<b class='flag-5'>接口</b>应用

    RK3568烧录工具

    RK3568 烧录工具
    发表于 11-11 14:16 5次下载

    RK3568内置MCU开发介绍之一

    ://wiki.youyeetoo.cn/zh/YY3568 RK3568的MCU核心需要使用串口调试,笔者这里使用的是UART4,这里也可以选择其他的,不要跟AP核心的调试串口UAR
    的头像 发表于 12-01 16:09 444次阅读
    <b class='flag-5'>RK3568</b>内置MCU开发介绍之一