当前位置:   article > 正文

RK3568 buildroot文件系统下的三屏显示_rk3568 驱动显示 硬件资源

rk3568 驱动显示 硬件资源

启扬智能IAC-RK3568-Kit开发板基于瑞芯微RK3568四核Cortex-A55处理器,支持HDMI、LVDS、MIPI、EDP四种显示接口,能够实现三屏同显,三屏异显,满足智能广告机、智能终端、游戏设备、多屏互动、多媒体设备等多样化的显示需求。

启扬RK3568

三屏显示内核

显⽰⼦系统是 Rockchip 平台显⽰输出相关软硬件系统的统称,它包括 VOP 和 RGB、BT1120、BT656、I8080(MCU 显⽰接口),LVDS、MIPI DSI、EDP、DP、HDMI 等显⽰信号输出模块以及与之对应的软件驱动。

整个显⽰系统的硬件框架如下图所⽰:

RK3568 拥有三个VOP的输出通道,所以支持三屏显示。

下图描述了VOP的硬件资源。它描述了RK3568的显示通路连接关系。

 本次笔者准备的三个屏幕分别为LVDS、EDP和HDMI,通过上面的VOP硬件资源描述,给三个屏幕分别分配一个VOP通道。其中EDP屏幕分配为 vp0 通道,HDMI屏幕分配为 vp1 通道,LVDS屏幕分配为 vp2 通道。

设备树部分配置如下所示:

  1. &vop {
  2.         status = "okay";
  3. };
  4. &edp_phy {
  5.         status = "okay";
  6. };
  7. &edp_in_vp0 {
  8.         status = "okay";
  9. };
  10. &route_edp{
  11.    status = "okay";
  12.     connect = <&vp0_out_edp>;
  13. };
  14. &hdmi {
  15.         status = "okay";
  16. };
  17. &hdmi_in_vp0 {
  18.         status = "disabled";
  19. };
  20. &hdmi_in_vp1 {
  21.         status = "okay";
  22. };
  23. &lvds {
  24.         status = "okay";
  25.         ports {
  26.                 port@1 {
  27.                         reg = <1>;
  28.                         lvds_out_panel: endpoint {
  29.                                 remote-endpoint = <&panel_in_lvds>;
  30.                         };
  31.                 };
  32.         };
  33. };
  34. &lvds_in_vp2 {
  35.         status = "okay";
  36. };

在这里我们给三个屏幕分配了VOP通道,这样就能够在三个屏幕上同时显示。

weston配置

Weston是Wayland开源显⽰协议的官⽅参考实现,Rockchip Buildroot SDK的显⽰服务默认使⽤Weston 10.0.0 drm后端。

Buildroot SDK的Weston⽀持多屏镜像同显、多屏异显、屏幕位置配置及热拔插等功能。

镜像模式缩放时,如果硬件VOP显⽰模块不⽀持缩放,则需要依赖RGA处理。

相关配置通过环境变量设置,如:

  1. # /etc/profile.d/weston.sh
  2. export WESTON_DRM_PRIMARY=HDMI-A-1 # 指定主显为HDMI-A-1
  3. export WESTON_DRM_SINGLE_HEAD=1 # 强制单显
  4. export WESTON_DRM_MIRROR=1 # 使⽤镜像模式(多屏同显),不设置此环境变量即为异显
  5. export WESTON_DRM_KEEP_RATIO=1 # 镜像模式下缩放保持纵横⽐,不设置此变量即为强制全屏
  6. export WESTON_DRM_HEAD_MODE=primary # 只使能主显
  7. export WESTON_DRM_HEAD_MODE=internal # 只使能内置显⽰器
  8. export WESTON_DRM_HEAD_MODE=external # 只使能外置显⽰器
  9. export WESTON_DRM_HEAD_MODE=external-dual # 使能所有显⽰器,优先外置显⽰器
  10. export WESTON_DRM_HEAD_FALLBACK=1 # 未匹配到显⽰器时,使能任意⼀个有效显⽰器
  11. export WESTON_OUTPUT_FLOW=horizontal # 默认⽔平排列
  12. export WESTON_OUTPUT_FLOW=vertical # 默认垂直排列
  13. export WESTON_OUTPUT_FLOW=same-as # 所有显⽰器默认位置(0,0)

也⽀持在weston.ini的output段单独禁⽤指定屏幕:

  1.  # /etc/xdg/weston/weston.ini
  2. [output]
  3. name=LVDS-1
  4. mode=off
  5. # off|current|preferred|<WIDTHxHEIGHT@RATE>

多屏同显

在weston的默认配置中,即为多屏同显。此时的weston.sh的WESTON_DRM_MIRROR属性等于1。多屏同显的效果如下图所示:

多屏异显

修改/etc/profile.d/weston.sh,注释 export WESTON_DRM_MIRROR=1 字段,如下图所示:

 

此时重启后就是多屏异显,屏幕以扩展的方式显示。多屏异显的效果入下图所示:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/309199
推荐阅读
相关标签
  

闽ICP备14008679号