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.

[参考译文] J722SXH01EVM:Vision Apps:如何使用 app_grpx 实用程序在多个显示器上叠加不同的图形

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1626027/j722sxh01evm-vision-apps-how-to-overlay-different-graphics-on-multiple-displays-with-the-app_grpx-utility

器件型号: J722SXH01EVM

我们正在使用 Vision Apps SDK 在 J722S (TDA4VEN) 平台上开发一个多显示应用。

目标:
我们希望将不同的图形内容(例如文本,形状)叠加到两个单独的显示器(例如 Display0 和 Display1)上。

当前状态和挑战:
我们一直在尝试使用 Vision Apps SDK 中包含的图形实用程序 (vision_apps/utils/grpx/) 来实现此目的、但我们遇到了以下挑战:

在分析的源代码时 app_grpx.c、图形资源似乎由单个全局对象管理 g_app_grpx_obj

如果我们调用 appGrpxInit() 两次(每个显示器一次)、第二次调用将通过清除全局对象 memset()、并且第一次初始化的资源将丢失。

此设计表明该 app_grpx 实用程序仅支持整个应用程序的单个图形实例(即,它是单个图形实例)。

问题:
这种 app_grpx 公用事业的单个设计是否符合规格?

如果是、您能否提供建议的实现方法或 Vision Apps SDK 框架中的替代方法、将不同图形叠加在两个单独的显示器上? 例如、我们应该修改该 app_grpx 实用程序、还是您推荐的方法完全不同?

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

    尊敬的 Masao:

    这种 app_grpx 实用程序的单个设计是否符合规范?

    通常、它旨在与默认的 SDK 演示配合使用、其中仅使用一个实例(一个显示屏)来显示性能统计信息图形。 所以保持这种方式。

    您正在尝试从单个应用程序使用 2 个显示器、每个显示器输出使用 2 条管道?

    必须修改 app_grpx 实用程序才能创建 2 g_app_grpx_obj 来控制不同的显示流水线。

    此致、
    Gokul

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

    尊敬的 Gokul:

    感谢您的答复。

    >我尝试从单个应用程序使用两个显示器、但每个显示器输出是否使用两个单独的管道?
    是的、我创建了两条管道。

    >有必要修改 app_grpx 实用程序以创建两个 g_app_grpx_obj 实例来控制不同的显示管道。
    我已确认在 app_grpx.c 中的每个函数内引用了 g_app_grpx_obj
    我知道、这可以通过保护与 g_app_grpx_obj 类似的另一个资源来实现。
    我会试一试。

     此致、
    Takayama 正夫。

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

    尊敬的 Masao:

    我来试试。

    好的、我将等待您的更新。

    此致、
    Gokul

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

    尊敬的 Gokul:

    根据我收到的信息、我能够通过创建 g_app_grpx_obj 中的两个实例来创建两个 GRPX 管道 app_grpx.c。 感谢您的支持。

    中的输出 appPerfStatsPrint.txt 现在按预期显示以下内容:

    • 摄像头流水线:1.

    • 摄像机管道:2.

    • GRPX 管道:1.

    • GRPX 管道:2.

    但是、我现在面临一个新问题、希望你们给予指导。

    问题是我无法从 eDP 端口获得任何视频输出。  我之前询问了如何在单独的线程中输出到 eDP 端口、并认为问题已解决、但在重新测试后、我观察到意外行为。

    以下是上下文的前一个线程:
    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1610756/j722sxh01evm-could-you-please-tell-me-how-to-switch-the-video-output-from-hdmi-to-edp-on-the-j722s

    下面是我的测试环境和结果的摘要:

    ■之前的测试设置(我认为可以使用)

    • 连接: HDMI 和 eDP 电缆均连接在 J722S 和显示屏之间。

    • 观察结果: 我只检查了显示器上的 eDP 输入、看到视频输出、并认为它“正常“。

    ■新测试场景(显示问题)

    场景 1:

    • 连接: 仅 eDP 电缆连接在 J722S 和显示屏之间。

    • 观察结果: 我检查了显示器上的 eDP 输入、但 没有视频输出。 我认为这是一个失败(“NG")。“。

    场景 2:

    • 连接: 仅 J722S 和显示器之间连接了 HDMI 电缆。

    • 观察结果: 我检查了显示屏上的 HDMI 和 eDP 输入、发现 两者都显示了视频输出。 (显示屏上的 eDP 端口似乎显示了 HDMI 信号的镜像?)

    我的主要问题是:您是否知道为什么即使只有 HDMI 电缆物理连接到 J722S、显示屏的 eDP 输入也会显示图像? 请提供任何建议。

    此致、
    Takayama 正夫。


    e2e.ti.com/.../appPerfStatsPrint.txt

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

    尊敬的 Masao:

    观察: 我检查了显示屏上的 HDMI 和 eDP 输入、发现 两者都显示了视频输出。 (显示屏上的 eDP 端口似乎显示了 HDMI 信号的镜像?)

    您是否在同一显示器中同时连接 HDMI 和 eDP 端口?  
    您是否可以对 HDMI 和 eDP 使用 2 种不同的显示?

    您是否知道为什么即使只有 HDMI 电缆物理连接到 J722S、显示屏的 eDP 输入也会显示图像?

    我们可能不会给出任何想法、您必须与显示器供应商联系或更改显示器和检查。

    我建议首先检查 2 个显示输出是否正常工作 (eDP 和 HDMI)。进行默认的单摄像头/多摄像头演示并将 grpx 流水线的 pipeId 更改为 (2 或 3)、以便摄像头流水线处于 0 或 1、grpx 流水线处于 2 或 3、然后将 2 个不同的显示器一个与 eDP 连接、另一个与 HDMI 连接并运行演示。  
    您应该能够在一个显示屏上看到摄像头流水线、在其他显示屏上看到高性能图形。
    如果此操作正常、我们可以在实际应用程序中查看管道 Id 是否配置正确。

    此致、
    Gokul

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

    尊敬的 Gokul:

    感谢您的答复。

    当我尝试使用单独的显示输出时、eDP 输出被显示。 但是、视频输出并不总是成功的、显示屏有时会显示视频、有时也不会显示。 我已经用相同的软件确认了这一点,它似乎是相对较低的成功率。

    如果它无法正常工作、则在执行时将输出以下日志 ./vision_apps_init.sh。 是否可以从此日志中确定问题区域? 根据行为、它似乎与时序有关。

    此致、
    Takayama 正夫。

    e2e.ti.com/.../vision_5F00_apps_5F00_init.sh-.log

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

    尊敬的 Masao:

    根据您的日志、我认为 DSI 转 DP 桥配置中存在问题、

    您是否在使用任何 EDP 桥接至 HDMI 转换器?

    如果是这样、您可以手动应用以下更改、并检查日志以确定配置是否成功

    diff --git a/mcu_plus_sdk_j722s_11_01_00_15/source/board/control/board_control.c b/mcu_plus_sdk_j722s_11_01_00_15/source/board/control/board_control.c
    index 560c8f96..3292a9dc 100644
    --- a/mcu_plus_sdk_j722s_11_01_00_15/source/board/control/board_control.c
    +++ b/mcu_plus_sdk_j722s_11_01_00_15/source/board/control/board_control.c
    @@ -53,6 +53,7 @@
     #define BOARD_CSI01_MUX_SEL_2               (0x6U)
     #define BOARD_DSI2DP_IOEXP_ADDR             (0x20U)
     #define BOARD_DSI2DP_IOEXP_PIN_NUM          (0x1U)
    +#define BOARD_DSI2DP_PWR_SW_EN_IOEXP_PIN_NUM          (0x2U)
     
     /* ========================================================================== */
     /*                         Structure Declarations                             */
    @@ -203,11 +204,19 @@ static int32_t Board_enableDSI2EDPBridge(uint32_t i2cInstance)
                             &gTCA6416BrdCtrlConfig,
                             BOARD_DSI2DP_IOEXP_PIN_NUM,
                             TCA6416_MODE_OUTPUT);
    +        status += TCA6416_config(
    +                        &gTCA6416BrdCtrlConfig,
    +                        BOARD_DSI2DP_PWR_SW_EN_IOEXP_PIN_NUM,
    +                        TCA6416_MODE_OUTPUT);
     
             status += TCA6416_setOutput(
                             &gTCA6416BrdCtrlConfig,
                             BOARD_DSI2DP_IOEXP_PIN_NUM,
                             TCA6416_OUT_STATE_HIGH);
    +        status += TCA6416_setOutput(
    +                        &gTCA6416BrdCtrlConfig,
    +                        BOARD_DSI2DP_PWR_SW_EN_IOEXP_PIN_NUM,
    +                        TCA6416_OUT_STATE_HIGH);
     
             TCA6416_close(&gTCA6416BrdCtrlConfig);
         }

    此致、
    Gokul

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

    尊敬的 Gokul:

    感谢您分享信息。
    我们已根据所提供的详细信息确认渲染是通过 eDP 完成的。

    我们对上次沟通中缺少信息深表歉意。 我们现在将关闭该主题。

    此致、
    Takayama 正夫。