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/TDA2EVM5777:如何同时配置3个 LCD

Guru**** 2609955 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/653026/linux-tda2evm5777-how-to-configer-3-lcd-simultaneously

器件型号:TDA2EVM5777

工具/软件:Linux

请帮我了解 tda2xx 支持的最大 LCD 数量吗?

我已经看到 lcd.h、哪个 max 受支持的 stat 是2、因此如果我更改并尝试连接3个 LCD 、它是否仍然支持?

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

    TDA2xx 可同时支持三个 LCD 以及一个 HDMI 显示。 您可以将此宏更改为3并进行必要的显示控制器更改(覆盖等)、并具有三个 LCD 显示屏。 您要运行的用例是什么?

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

    感谢您的快速响应

    我的用例流程是

    UseCase:chains_lvdsVipDualCam_DualDisplay
     
    Capture -> Select_Capture
    Select_Capture -> Display_LCD1
    Select_Capture -> Display_LCD2
     
    GrpxSrc -> Display_GRPX

    我参考了双凸轮双显示器、我想在 LCD 显示屏上显示 HDMI、我已经看到了 chains_comman.c 文件、我已经为 LCD 显示屏配置了参数、我可以如何进行此工作

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

    您需要在显示控制器树中添加对第二个 LCD 的支持、并具有两个 LCD 输出。 这不是一个您只能更改的参数、它将起作用。 您需要查看以下文件以了解如何设置 venc 信息并对其进行相应修改:vision_sdk\apps\src\rtos\usecases\common\chains_common.c 和 vision_sdk\links_fw\src\rtos\links_IPU\display_Ctrl\displayCtrl_drv.c

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

    是否有任何参考用例可同时使2个 LCD 工作?

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

    遗憾的是、没有两个 LCD 同时工作的参考用例。 您可以使用现有代码作为为第二个 LCD 编写 API 的参考。 您应该修改参数以使用第二个 VENC、并相应地在覆盖中设置 DSS 路径。

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

    感谢您的快速回复。

    我们进行了以下更改、以使第二个 LCD (以及 HDMI 和其他 LCD)同时工作:

    文件:chains_common.c

    /*配置 LCD - 2 */
    pVInfo =&pPrm->vencInfo[2];
    pVInfo->vencId = SYSTEM_DCTRL_DSS_VENC_LCD2;
    pVInfo->outputPort = SYSTEM_DCTRL_DSS_DPI2_OUTPUT;

    if ((bsp_platform_SOC_ID_TDA2EX == bsp_platformGetSockId())&&
    (bsp_platform_package_type_17x17 = bsp_platformGetPackageType ()))

    /*如果是 TDA2EX 且封装为17 X 17、则 LCD 显示在 DPI 3上*/
    pVInfo->vencId = system_DCTRL_DSS_VENC_LCD3;
    pVInfo->outputPort = system_DCTRL_DSS_DPI3_output;


    pVInfo->vencOutputInfo.vsPolarity = SYSTEM_DCTRL_POLICE_ACT_LOW;
    pVInfo->vencOutputInfo.hsPolarity = SYSTEM_DCTRL_POLICE_ACT_LOW;

    对于 EVM LCD、下面的/*无关*/
    pVInfo->vencOutputInfo.fidPolarity = SYSTEM_DCTRL_POLITY_ACT_HIGH;
    pVInfo->vencOutputInfo.actVidPolarity = system_DCTRL_POLICE_ACT_HIGH;

    pVInfo->MINFO.STANDARD = SYSTEM_STD_CUSTOM;
    pVInfo->MINFO.scanFormat = system_sf_progressive;
    pVInfo->MINFO.width = displayLCD2Width;
    pVInfo->MINFO.Height = displayLCD2高度;

    if (lcdType = chains_display_type_lcd_7_inch)

    pVInfo->MINFO.PixelClock = 29232u;
    pVInfo->MINFO.fps = 60U;
    pVInfo->MINFO.hFrontPorch = 40U;
    pVInfo->MINFO.hBackPorch = 40U;
    pVInfo->MINFO.hSyncLen = 48U;
    pVInfo->MINFO.vFrontPorch = 13U;
    pVInfo->MINFO.vBackPorch = 29u;
    pVInfo->MINFO.vSyncLen = 3U;
    pVInfo->vencDivisorInfo.divisorLCD = 1;
    pVInfo->vencDivisorInfo.divisorPCD = 4;

    否则、如果(lcdType = chains_display_type_lcd_10_inch)

    pVInfo->MINFO.PixelClock = 74500U;
    pVInfo->MINFO.fps = 60U;
    pVInfo->MINFO.hBackPorch = 80U;
    pVInfo->MINFO.hSyncLen = 62U;
    pVInfo->MINFO.hFrontPorch = 48U;
    pVInfo->MINFO.vBackPorch = 12U;
    pVInfo->MINFO.vSyncLen = 35U;
    pVInfo->MINFO.vFrontPorch = 6U;
    pVInfo->vencDivisorInfo.divisorLCD = 1;
    pVInfo->vencDivisorInfo.divisorPCD = 1;

    否则、如果(lcdType ==
    CHINS_DISPLAY_TYPE_LDC_10_INCH_LCDCTRL_TC358778_MIPI_DSI_1920_1200)

    pVInfo->MINFO.PixelClock = 147000U;
    pVInfo->MINFO.fps = 60U;
    pVInfo->MINFO.hBackPorch = 30U;
    pVInfo->MINFO.hSyncLen = 16U;
    pVInfo->MINFO.hFrontPorch = 32U;
    pVInfo->MINFO.vBackPorch = 16U;
    pVInfo->MINFO.vSyncLen = 2U;
    pVInfo->MINFO.vFrontPorch = 7U;
    pVInfo->vencDivisorInfo.divisorLCD = 1;
    pVInfo->vencDivisorInfo.divisorPCD = 1;

    其他
    utils_assert (NULL);

    /*配置 LCD - 2个覆盖参数*/
    pVInfo->mode = 0;
    pVInfo->isInputPipeConnected[0] =错误;
    pVInfo->isInputPipeConnected[1] =错误;
    pVInfo->isInputPipeConnected[2] =真;
    pVInfo->isInputPipeConnected[3] =错误;
    pVInfo->writeBackEnabableFlag =错误;

    pVInfo->vencOutputInfo.dataFormat = SYSTEM_DF_RGB16_565;
    pVInfo->vencOutputInfo.dvoFormat = SYSTEM_DCTRL_DVOFMT_GENERICE_DISCSYNC;
    pVInfo->vencOutputInfo.videoIfWidth = SYSTEM_VIFW_16BIT;

    pVInfo->vencOutputInfo.PixelClkPolarity = SYSTEM_DCTRL_POLICE_ACT_LOW;
    pVInfo->vencOutputInfo.aFmt = SYSTEM_DCTRL_A_OUTPUT MAX;

    pOvlyPrms = ovlyPrms[2];
    pOvlyPrms->vencId = pVInfo->vencId;
    pOvlyPrms->deltaLinesPerPanel = 0;
    pOvlyPrms->alpha BlenderEnable = 0;
    pOvlyPrms->BackGroundColor = 0x0;
    pOvlyPrms->ColorKeyEnable = 1;
    pOvlyPrms->ColorKeySel = SYSTEM_DSS_DISPC_TRANS_COLOR_KEY_SRC;
    pOvlyPrms->ovlyOptimization = SYSTEM_DSS_DISPC_OVLY_Fetch _ALLDATA;
    pOvlyPrms->transColorKey = DRAW2D_Transparent_color;

    -->这些更改是否正确?

    -->如果需要更改任何内容,请告诉我"displayLinkctrl_drv.c"文件。 如果是这样,请告诉我需要做的确切改变,因为我很难理解它的问题。

    我们的时间非常短,因此我们非常感谢您早日作出反应。

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

    此外,还需要更改 DisplayCtrlLink_ConfigParams 的 numVencs 成员。 此参数基本上会告知 vencInfo 数组中有效条目的数量。 由于您正在更新 vencInfo[2],因此您需要将此变量设置为3,假定其他两个条目有效。

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

    Brijesh、

    我已经完成了上述更改。 请参阅以下各行:

      Int32状态;

      DisplayCtrlLink_ConfigParams * pPrm =&gChains_commonObj.dctrlCfgPrms;

      DisplayCtrlLink_VencInfo *pVInfo;

      DisplayCtrlLink_OvlyParams * pOvlyPrms;

      DisplayCtrlLink_OvlyPipeParams * pPipeOvlyPrms;

      DisplayCtrlLink_OvlyParams ovlyPrms[3];

      /*设置链接 ID */

      gChains_commonObj.displayCtrlLinkId = system_link_ID_DISPLAYCTRL;

      /* vencInfo 数组中有效条目的数量*/

      pPrm->numVencs = 3;

      /*绑定静脉的位掩蔽。 两个 Vencs 可以连接在一起、这两个 Vencs 使用相同的像素时钟、并且 Vsync 是同步的。 *

      pPrm->tiedVencs = 0;

    -->上述更改是否正常?

    -->如果有任何更改,也请告诉我在"displayLinkctrl_drv.c"文件中要完成的更改。

    -->我将整个函数与线程连接起来(用例是这样我们在 HDMI 上以及在2个 LCD 上获得一个输出)

    以下是包含函数的文件:

    e2e.ti.com/.../function.c

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

    如调用中所述、请检查 DPI1、DPI2和 DPI3输出的引脚多路复用设置。 驱动程序似乎不支持为 DPI2和 DPI3配置引脚多路复用器。 在这种情况下、您需要添加代码来配置引脚多路复用。 您可以直接更改用例文件中的 pinmux。 让我们在更改所有三个 LCD 的 pinmux 后进行检查。 此外、在更改之后、如果您在 LCD 上看到黑色背景色、则 DSS 正确输出。 现在、您需要将视频管线连接到叠加管理器。

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

    e2e.ti.com/.../pinmux_5F00_details.zipHiBrijesh、

    根据我们对调用的讨论、我们已为 DPI2和 DPI3配置了引脚多路复用器。 下面是一些说明供您参考。

    我们运行了"lvdsVipDualCam_DualDisplay"用例、以检查 DPI1、DPI2和 DPI3的引脚多路复用器。

    首先、我们通过先在 DPI1、然后在 DPI2和最后一个 DPI3上连接来检查各个 LCD。

    在本用例中、我们在 LCD 上获得正确的输出。

    此外、我们还根据您的触发情况打印寄存器值。

    (为您的参考文件 DPI1_pinmux.txt、 DPI2_pinmux.txt、DPI3_pinmux.txt)

    然后、我们运行 "lvdsVipDualCam_DualDisplay"用例、将所有 LCD 连接到 DP1、DPI2和 DPI3。

    这次、我们为所有引脚多路复用器进行了配置、并打印寄存器值以进行检查。

    但我们不会在所有 LCD 显示屏上获得输出。 输出仅出现在一个 LCD 显示屏上。

    在本例中、我们还打印寄存器值、以将其与之前的情况进行比较。

    (为参考 DPI1_DPI2_DPI3_pinmux_multiple.txt 附加的文件)

    我们发现 Indivudal 和 MULTIPAL LCD 的寄存器值相同。

    任何寄存器值都没有变化、但当我们连接所有 LCD 时、LCD 输出不出现。

    请提供您的意见以解决此问题。

    此致、

    耶什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此问题正在通过电子邮件进行讨论。

    此致、
    Brijesh