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.

[参考译文] TDA4AL-Q1:TIOVX (跨流程)

Guru**** 2482105 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1452527/tda4al-q1-tiovx-across-proceses

器件型号:TDA4AL-Q1

工具与软件:

你好、

我们要求在一个过程中保持摄像机输入(CSIRX->VISS ),直到 NV12输出。 并且在另一个过程中消耗 Nv12输出(MSC -> TIDL)。 在 TIPSDK 中是否有办法,  这两个进程之间的缓冲区 可以有效共享而不会损坏。

此问题的根本原因: 我们知道缓冲区的 dmaFd 可用于跨进程共享它们? 请澄清。

对于上述情况、我们知道可以在一个过程中使用 tiovx graph (CSIRX->VISS->MSC->TIDL)。 只是想了解、tiovx 在共享缓冲区方面带来了哪些优势? 请澄清

此致

Sriincara.

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

    尊敬的 Sriinclha:

    是的、如果您使用的是 Linux 操作系统、则可以跨流程共享 FD。  

    我们在 vision_apps Vision Apps 用户指南:跨流程的文件描述符交换中有一个演示

    该演示可在 vision_apps/apps/basic_demos/app_fd_exchange 中找到

    此致、

    Nikhil

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

    大家好、

    感谢您的答复。

    我们希望了解哪种方法(w.r.t 至我的上述信息)更好。 以及各自的 Pro 和 Con

    方法1:

     在一个进程中设置 openvx 图(CSIRX->VISS->MSC->TIDL)或

    方法2:

    创建2个进程, 1个进程直至(CSIRX->VISS)并将 viss 输出的 dmafd 共享到另一个运行另一个 openvx 图形(MSC->TIDL)的进程。  

    BTW、您的回复中没有收到以下陈述。

    是的、如果您使用的是 Linux 操作系统、则可以跨进程共享 FD。   如果我们使用 QNX、我们就不能共享文件文件?

    此致

    Sriincara.

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

    您好!

    [报价 userid="563563" url="~/support/processors-group/processors/f/processors-forum/1452527/tda4al-q1-tiovx-across-proceses/5573438 #5573438"]

    方法1:

     在一个进程中设置 openvx 图(CSIRX->VISS->MSC->TIDL)或

    方法2:

    创建2个进程, 1个进程直至(CSIRX->VISS)并将 viss 输出的 dmafd 共享到另一个运行另一个 openvx 图形(MSC->TIDL)的进程。  

    [报价]

    以上决定将完全取决于您的用例。  

    在一个 process OpenVX 中、不会有任何涉及在整个过程中传输 FD 的开销、所有缓冲区传输均由 TIOVX 框架处理。

    方法2将完全取决于根据您的用例在这里需要2个过程。

    是的、如果您使用的是 Linux 操作系统、您可以跨进程共享 FD。   假设我们使用 QNX、我们不能共享文件文件?

    对于 QNX、将传递的是物理地址、而不是 FD

    此致、

    Nikhil

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

    感谢 Nikhil 的解释、

    我问的原因是我们是否保留生产图 ( CSIRX->VISS->MSC->TIDL)

                                                            从 VISS->MISAA->DISPLAY,显示不同)在一个应用  程序,然后如果任何崩溃发生在 Viss,整个应用程序将突然关闭。 因此、我们希望维持3个应用。

    应用程序:1包含图形直至

    CSIRX->VISS

    应用程序:2包含图形直至

    MSC->TIDL

    应用程序:3包含图形  

    马赛克->显示  

    以便使用 DMA FD、我们可以将 NV12缓冲区从 VISS (应用1)发送到应用2和应用3。  

    请推荐您对上述方法的支持。 请告诉我们、如果我们采用 3种申请方法、可能会遇到哪些问题。

    此致

    Sriincara.

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

    您好!

      在 viss 中发生、整个应用程序将突然关闭。 因此、我们希望维护3个应用[/报价]

    在本例中、3个过程就可以了。 但是、当 VISS 停止时、无论如何也没有其他应用的输入、对吧? 在这种情况下、它无论如何都会被停止或挂起。

    同样的操作也可以用同一应用中不同线程上的3个图形来完成。 这可以避免跨进程的 DMA-FD 传输。

    此致、

    Nikhil

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

    好的、明白了。

    不过、如果我们在同一应用中的不同线程上维持3个图。 如果任何图形挂起,我们将如何知道其他2个图形?.

    另一件事 , 如果3个图保持,如果 SEG 故障发生在一个图其他2个图也突然关闭, RT?

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

    因此、三个图表将在 A72上的3个任务中运行。 在每个位置、您将在2个图形之间对图参数数据对象进行排队和取消排队。  

    如果第一个图形崩溃、那么这显然会停止其他图形、因为后续图形的源不可用。  

    如果图形不相互依赖(即不在图形中排队)、那么一个图形中的挂起不应影响其他图形。

    关于一个任务中的 seg-fault 导致整个应用程序崩溃、这与任何多任务应用程序的情形以及 Linux 应用程序的线程安全情况相同。

    此致、

    Nikhil