This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux:VSDK 中的 vDRM 03_04_00_00:dispDistSrc 用例

Guru**** 2553260 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/717362/linux-vdrm-in-vsdk-03_04_00_00-dispdistsrc-usecases

工具/软件:Linux

尊敬的先生:

VSDK 版本03_04_00_00中有一个新功能 Virtual DRM。

使用此功能、我希望在 Jacinto J6板上使用两个显示屏、其中一个是 J6板提供的默认 LCD、另一个是外部 HDMI 显示屏。

一个屏幕用于 Weston 应用、另一个屏幕用于 EGL 应用等任何其他情况。

为了测试双显示器用例,我遵循了以下链接中的步骤:

和建议的解决方案、

但无法在两个屏幕上看到任何内容、HDMI 显示屏只显示绿色屏幕、J6板的默认 LCD 上没有显示任何内容。

请建议解决方案以实现我的用例。

与 vDRM dispDistSrc 用例有关的疑问不多:

1.在当前用例中'

"示例用例 :一个显示面板上的导航+ RVC,另一个显示面板上的多媒体"

VID1、VID2、VID3和 GFX1与物理显示器 VOUT1或 VOUT2的绑定情况如何?

2.如何将 VID1、VID2、VID3和 GFX1配置为特定的物理显示?

例如:  

VOUT1上的 VID1和 VID2 =>(物理显示1)

VOUT2上的 VID2和 GFX1 =>(物理显示2)

3.如何将物理显示屏与 VOUT1和 VOUT2映射?

如何将默认 LCD 配置为 VOUT1、将外部 HDMI 配置为 VOUT2?

请共享链接或文档以了解 dispDistSrc。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    >>但无法在两个屏幕上看到任何内容、HDMI 显示仅显示绿色屏幕、J6板的默认 LCD 上没有显示任何内容。
    您能否使用摄像机-> DUP;DUP -> LCD;DUP -> HDMI 创建用例、并验证显示器上是否显示了摄像机数据。 这样、您就可以验证您是否正确地对 displayCtrl 和显示链接进行了编程。 然后,您可以通过相应地将 DUP 链接替换为 dispDistSrc 链接来修改链。

    >> VID1、VID2、VID3和 GFX1与物理显示器 VOUT1或 VOUT2的绑定情况。
    >>如何将物理显示屏与 VOUT1和 VOUT2映射?
    >>如何将 VID1、VID2、VID3和 GFX1配置为特定的物理显示?
    所有这些都可以通过 displayCtrlLink 参数的详细配置来控制。 请查看 SDK 中提供的示例用例和其他双显示用例作为参考。

    此致、
    Subhajit
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在详细检查用例后。

    我尝试使用以下设置使用双显示器:

    ##############################################################
    (三
    chains_dispDistSrc_Display.txt
    (三
    UseCase:chains_dispDistSrc_Display

    DispDistSrc_Weston -> Display_M4
    DispDistSrc_mm -> Display_mm
    ##############################################################
    (二
    chains_dispDistSrc_Display.c:
    (二
    sprintf ((char *) pUcObj->DispDistSrc_westonPrm.vDrmControllerName、"/dev/vdrm-controller-0);
    pUcObj->DispDistSrc_WestonPrm.vDrmControllerObjectId = 26;
    pUcObj->DispDistSrc_WestonPrm.vDrmControllerObjectType = DISP_DIST_SRC_LINK_DRM_OBJECT_TY_TYPE_CRTC;
    pUcObj->DispDistSrc_WestonPrm.width = 1920;
    pUcObj->DispDistSrc_WestonPrm.height = 1080;
    pUcObj->DispDistSrc_WestonPrm.format = system_DF_BGRX24_8888;

    pUcObj->Display_m4Prm.rtParams.tarWidth = 1920;
    pUcObj->Display_m4Prm.rtParams.tarHeight = 1080;
    pUcObj->Display_m4Prm.rtParams.posX = 0;
    pUcObj->Display_m4Prm.rtParams.posy = 0;
    pUcObj->Display_m4Prm.displayId = DISPLAY_LINK_INST_DSS_VID1;

    sprintf ((char *) pUcObj->DispDistSrc_mmPrm.vDrmControllerName、"/dev/vdrm-controller-1);
    pUcObj->DispDistSrc_mmPrm.vDrmControllerObjectId = 26;
    pUcObj->DispDistSrc_mmPrm.vDrmControllerObjectType = DISP_DIST_SRC_LINK_DRM_OBJECT_TYPE_CRTC;
    pUcObj->DispDistSrc_mmPrm.width = 1920;
    pUcObj->DispDistSrc_mmPrm.height = 720;
    pUcObj->DispDistSrc_mmPrm.format = system_DF_BGRX24_8888;

    pUcObj->Display_mmPrm.rtParams.tarWidth = 1920;
    pUcObj->Display_mmPrm.rtParams.tarHeight = 720;
    pUcObj->Display_mmPrm.rtParams.posX = 0;
    pUcObj->Display_mmPrm.rtParams.posy = 0;
    pUcObj->Display_mmPrm.displayId = DISPLAY_LINK_INST_DSS_VID2;

    ############################################################################################################################

    (三
    arch/arm/boot/dts/dra7.dtsi
    (三
    vdrm0:vDRM@0{
    兼容="ti、dra7-vdrm";
    vdrm0_crtc0:CRTC@0{
    兼容="ti、dra7-vdrm-crtC";
    X-res =<1920>;
    Y-res =<108>;
    Refresh =<60>;
    支持的格式= ;
    };
    };
    vdrm1:vDRM@1{
    兼容="ti、dra7-vdrm";
    vdrm1_crtc0:CRTC@0{
    兼容="ti、dra7-vdrm-crtC";
    X-res =<1920>;
    Y-res =<720>;
    Refresh =<60>;
    支持的格式= ;
    };
    };

    ############################################################################################################################


    完成此配置后,我可以访问 Weston 客户端应用程序的 HDMI 屏幕。 下面是我遵循的步骤:

    应用上述更改后刷新了最新映像。

    2.运行

    $ CD /opt/vision_sdk

    $来源./vision_sdk_load.sh

    $./apps.out

    选择:案例1,然后案例8。

    3.运行

    $ Weston-flower

    结果:能够在 HDMI 屏幕上看到花。 我没有对显示选择做出任何决定。 它会自动显示 HDMI。

    秘书长的报告
    问题:
    秘书长的报告
    1.默认 LCD 不显示任何内容。 如何组成?

    2.如何测试 Weston 客户端应用程序和 EGL 应用程序的两个显示?

    3.模式仅列出一个虚拟 DRM,虚拟1. 另一个缺少(Reser dra7.dtsi 更改)。 为什么会发生这种情况?

    显示以下结果:
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    root@dra7xx-EVM:~# modetest -M vDRM
    编码器:
    ID CRTC 类型可能的 crtcs 可能的克隆
    23 0 虚拟0x00000001 0x00000000

    连接器:
    ID 编码器状态 名称 尺寸(mm) 编码器
    24 0 互联 虚拟1 0x0 1 23
    模式:
    名称刷新(Hz) hdisp HSS HSE htot vdisp VSS VSE vtot)
    1920x1080 60 1920 1939 1943 1952 1080 1090 1092 1097标志:phsync、pvsync;type:preferred、driver
    道具:
    2 DPMS:
    flags:枚举
    枚举:ON = 0待机= 1挂起= 2关闭= 3
    值:3.

    CRC:
    ID FB 位置 尺寸
    26 0 (0、0)(0x0)
    0 0 0 0 0 0 0 0 0 0 0标志:;类型:
    道具:

    平面:
    ID CRTC fb CRTC x、y X、Y 伽马大小 可能的 crtcs
    25 26 0 0、0 0、0 0 0x00000001
    格式:XR24 AR24
    道具:
    5类型:
    flags:不可 mutable 枚举
    枚举:overlay=0 Primary =1 Cursor =2
    值:1.

    帧缓冲器:
    ID 尺寸间距

    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    请建议设置默认 LCD 并测试两个显示屏的方法。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您想在两个显示屏上运行 Weston、则不应创建两个 DRM 卡。 您应该创建一个具有两个连接器的 DRM 卡。 请仔细阅读用户指南中的所有示例用例、了解每个设置/设置与其他设置的区别、以及其独特性为何符合要求。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复。。

    是的、在完成更多用例后、我了解您的建议。 因此、为了确保两个显示屏都在单显示屏配置下工作、我不直接转到双显示屏配置、而是按照 TI 建议的步骤进行操作。

    1.检查外部 HDMI 显示:  

    在未对 visionSDK 和 chains_dispDistSrc_Display 用例进行任何更改的情况下、我遵循以下过程:

    1.刷写 Jacinto J6板

    2. 在目标板上运行以下命令:

    $ CD /opt/vision_sdk
    $来源./vision_sdk_load.sh
    $./apps.out

     选择的选项:1 => 8
     
     然后执行 Weston 示例应用:
     
     $ Weston-flower

    HDMI 配置工作正常、没有任何问题。

    2.检查 Jacinto J6 LCD 显示屏:

    LCD 信息:

    分辨率:1920x1200

    FPS:60

    在经历了 visionSDk 用例和"visionSDK/apps/src/HLS/ADAS/src/common/chains_main.c"和"vision_sdk/apps/src/HLS/ADAS/include/chains.h"之后。

    **更改1:

    我知道、在 VISION_SDK/apps/src/HLS/ADAS/include/chains.h 中、显示类型为 HDMI:

     pPrm->displayType = chains_display_type_HDMI_1080p;

    因此、我对其进行了如下修改、以使用默认的 J6 LCD

    pPrm->displayType = chains_display_type_lcd_10_inch;

    **更改2:

    因此、我修改了"apps/src/HLS/ADAS/src/usecases/disp_dist_src_display/chains_dispDistSrc_Display.c"以满足我的 Jacinto J6 LCD 要求、

    根据显示分辨率1920x1200更改了显示宽度和高度


       ChainCommon_GetDisplayWidthHeight (
           pObj->chainsCfg->displayType、
           显示宽度(&D)、
           显示高度(&D)
       );

       DisplayWidth = 1920;
       显示高度= 1200;

       sprintf ((char *) pUcObj->DispDistSrc_westonPrm.vDrmControllerName、V_controller_name);
       pUcObj->DispDistSrc_westonPrm.vDrmControllerObjectId = vDRM_CRTC;
       pUcObj->DispDistSrc_WestonPrm.vDrmControllerObjectType = DISP_DIST_SRC_LINK_DRM_OBJECT_TY_TYPE_CRTC;
       pUcObj->DispDistSrc_westonPrm.width =显示宽度;
       pUcObj->DispDistSrc_WestonPrm.height =显示高度;
       pUcObj->DispDistSrc_WestonPrm.format = system_DF_BGRX24_8888;

       pUcObj->Display_m4Prm.rtParams.tarWidth        =显示宽度;
       pUcObj->Display_m4Prm.rtParams.tarHeight       =显示高度;
       pUcObj->Display_m4Prm.rtParams.posX            = 0;
       pUcObj->Display_m4Prm.rtParams.posy            = 0;
       pUcObj->Display_m4Prm.displayId                = display_link_INST_DSS_GFX1;


       ChainCommon_StartDisplayCtrl (
           pObj->chainsCfg->displayType、
           显示宽度、
           显示高度
           );


     

    Change** 3:修改"ti_component-os_tools/linux/kernel/omap/arch/arm/boot/dts/dra7.dtsi" 以匹配 Jacinto J6显示的分辨率,


    vdrm0:vDRM@0{
                           兼容="ti、dra7-vdrm";
                           vdrm0_crtc0:CRTC@0{
                                   兼容="ti、dra7-vdrm-crtC";
                                   X-res =<1920>;
                                   Y-res =<1200>;
                                   Refresh =<60>;
                                   支持的格式= ;
                           };
                   };


    在应用上述**更改1、**更改2和**更改3之后,我使用以下步骤对其进行了测试。

    1.生成所有更改

    2.刷写 Jacinto J6板

    3. 在目标板上运行以下命令:

    $ CD /opt/vision_sdk
    $来源./vision_sdk_load.sh
    $./apps.out

     选择的选项:1 => 8
     
     然后执行 Weston 示例应用:
     
     $ Weston-flower

    注意: 运行 app.out 后、未报告错误。 日志非常好。 在运行 Weston 应用程序时、未报告错误。

    默认 Jacinto J6 LCD 显示屏上没有任何显示。

    我有什么问题吗?

    请为此建议解决方案。

    将此显示屏调出后、通过遵循其他用例、可以更轻松地移动到双显示屏用例中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    遗憾的是、在 VISION SDK Linux 中、由于设计问题、我们不支持1920x1200 LCD。
    您的更改是正确的、但 SDK 中不存在用于实际启用/打开 LCD 硬件的代码。

    您是否有任何其他 TI EVM LCD、如1280x800 LCD?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的快速回复。。

    目前、我们提供以下显示:
    HDMI:1920x1080
    2.液晶屏:1920x1200
    3. FPD:1200x800

    HDMI:
    分辨率:1920x1080
    ***** 工作正常*****

    2. LCD:
    分辨率:1920x1200
    ***** 根据您的回复,Vision SDK*****不支持

    队列1:当前 Vision SDK 上是否有任何支持方法?
    如果是、
    问题1.1:需要进行哪些更改?
    问题1.2:我们必须在 uenv.txt 文件中使用哪种 DTB?

    FPD
    分辨率:1200x800

    队列2:适用于 FPD 显示的 Vision SDK 是否支持此分辨率?
    如果是、
    问题2.1:需要进行哪些更改?
    问题2.2:我们必须在 uenv.txt 文件中使用哪种 DTB?

    请提供所有类型(LDC、HDMI、FPD 等)支持的所有分辨率的列表或参考链接。 不同显示屏。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    同样、VISION SDK Linux 仅支持 HDMI 和1280x800 LG LCD。 使用 VISION SDK Linux 启用1920x1200 LCD 并不简单。 但是、如果您在 Linux 中使用某些 Hack 启用面板、则用例将开始工作。 您可以在/drivers/gpu/drm/omapdrm/dss (panel-dpi.c、coder-tc358768.c)中找到启用1920x1200的代码、并将其用作参考

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复。。

    我尝试使用 LCD 1280x800、在单显示器配置下工作正常。
    因此、借助目前发布的 Vision SDK (V3.04.00)、HDMI 和 LCD (1280x800)在单显示器配置下工作正常。

    但对于我们的应用、我们需要三台显示器、一台 HDMI、一台 LCD (1280x800)和一台 FPD (1200x800)。
    根据您提供的信息、在当前版本的 VISION SDK (V3.04.00) FPD 支持中不存在。

    因此,TI 是否计划在下一个版本中支持 FPD?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    否、TI 不打算在 VISION SDK Linux 上支持 FPD