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/TDA2:在 VSDK 3.02中工作但在 VSDK 3.03中工作的用例

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/716101/linux-tda2-usecase-working-in-vsdk-3-02-but-not-in-vsdk-3-03

器件型号:TDA2

工具/软件:Linux

大家好、我使用的是内核版本4.16.7的 Ubuntu 16.04。

我有一个用例可以与 VSDK 3.02配合使用,但当它使用 VSDK 3.03构建时,其中一个链接的 processData()永远不会被调用,因此不会发生任何情况。 未报告错误。

我想问、可能是什么原因导致了这种情况、以及 VSDK 3.02和3.03之间是否存在明显差异。

提前感谢。

此致、

Nick

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

    有关任何主要更改、请参阅版本说明。
    您能不能说出您的用例。
    您需要首先调试哪个链接未获得 system_new_data cmd。
    检查上一个链接是否将该命令发送到下一个链接。
    缓冲区可用于所有链路、或者由于缓冲区不可用而进入挂起状态。

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

    用例从捕获链路(IPU2)获取视频、然后复制视频、一个分支转到显示链路(IPU2)、另一个分支转到自定义链路(A15)、该自定义链路应通过 PCIe 将帧发送到在另一个 SoC 上运行的用例。

    奇怪的是、用例在 VSDK 3.02上正确运行、但在 VSDK 3.03中构建相同的代码时、就像在原始文章中解释的那样。

    processData()不会被调用一次,因此我不会说它是由于缓冲区不可用。 捕获链接不会向链中的下一个链接发送 system_new_data cmd 有什么原因吗?

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

    哪个链接未获取 system_new_data cmd?
    您在 A15上的自定义链接或在其他 SoC 上运行的链接。

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

    A15上的自定义链接未获取 system_new_data cmd。 另一个 SoC 不是问题、至少现在是这样。

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

    您好!

    您是否已在 A15链接的 tskMain 函数内验证其未收到任何命令。

    您能不能在 A15上的 IPC 链接上验证是否接收到 cmd。

    还请确认捕获链接是否正在发送任何命令?

    此致、

    Anuj

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

    尊敬的 Anuj:

    我添加了一些调试 printf、捕获链接似乎未发送 system_new_data 命令。

    我还尝试了另一个用例、即仅捕获->显示、它工作正常、捕获链接打印系统_new_data cmd 正在发送。 因此、它具有与原始帖子中的用例相关的内容。 Capture 不会在此处发送 system_new_data 是否有任何原因?

    此致、
    Nick

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

    因此、根据您的捕获链接本身不是发送 cmd、而是在更简单的用例中发送 cmd。
    您能否检查捕获链路的处理函数内部、了解它到底位于何处。

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

    尊敬的 Anuj:

    我设法跟踪执行停顿的位置,它位于 CaptureLink_tskRun()内的 captureLink_tsk.c 中。

    状态= Utils_tskRecvMsg (pTsk、&pRunMsg、BSP_OSAL_WAIT_FOREVY);

    这是执行卡在中的调用。

    后续步骤是什么?

    此致、
    Nick

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

    能否检查是否正在注册回调函数 CaptureLink_drvCallback

    if (!pInst->isSubframeEnabled)

    pInst->cbPrm.cbFxn =&CaptureLink_drvCallback;

    请在 IF 条件内添加日志、并检查其是否达到 IF 条件
    如果点击、则在 CaptureLink_drvCallback 函数中添加日志、并检查驱动程序是否提供任何回调?

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

    日志显示回调已注册(因此它进入'if'分支),但驱动程序不提供任何回调。 您是否知道为什么会发生这种情况?

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

    您好!

    请确认以下问题。

    1.回调函数中是否没有得到1个日志?

    2.您之前说过您能够运行 capture -> display usecase,是在 VSK3.3上运行的吗?

    如果这是在3.3上、您能否从两个用例中验证捕获链路参数并确保两者相同。

    4.是否可以添加 DUP 链接并放置与 DUP 的第二个输出队列的显示链接,并检查您是否在回调函数内?

    如果您可以访问 CCS 和 JTAG、那么您可以在代码中添加全局变量、并且在回调函数中将该变量更改为特定值、并在 CCS 中检查该值之后进行更改。(有时日志不可靠、因此您可以使用此技术)

    此致、

    Anuj

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

    尊敬的 Anuj:

    1.我没有在回调函数中获得任何日志、甚至没有1。

    2.是的、所述用例位于 VSDK 3.03上。

    3.我可以确认两个用例的参数是相同的。

    4.我用了如下的一个用例:

    Capture -> DUP

    DUP ->空(A15)

    DUP ->显示

    GrpxSrc -> Display_GRPX

    它非常接近问题的用例、仅在 A15上具有 Null、而不是我的自定义链接。 它工作正常。
    不确定是什么会使 Capture 卡在我的用例中。 正如我提到过的、它适用于 VSDK 3.02。

    5.很遗憾我没有 JTAG。

    此致、
    Nick

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

    请不要使用 null 链接、而不要使用您的自定义链接。 使用 Belo 用例
    Capture -> DUP

    DUP ->自定义链接(A15)

    DUP ->显示

    GrpxSrc -> Display_GRPX

    从创建阶段共享此用例的完整日志、然后按 p 并共享该日志。

    请尝试用上述用例中的 NullSrc 链接替换捕获链接并共享日志。

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

    尊敬的 Anuj:

    您在上一帖子中编写的用例与我遇到问题的用例完全相同。 找到附加为1.log 的日志。

    至于从 Capture 到 NullSrc 的更改,该用例抛出大量错误,其日志可以作为2.log 附加。

    此致、

    Nick

    e2e.ti.com/.../1.log

    e2e.ti.com/.../2.log

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

    您好!

    我已要求您在故障用例中将捕获链接替换为空链接、以确认问题与捕获链接或您的定制链接有关。
    目前、我可以从日志中说、问题似乎出在您的自定义链接中、但我只是想了解一下。
    您能否从 BIOS null_src_display 用例中获取折射并尝试空链接。

    您能告诉我您的自定义 链接的基本功能是什么、它是否与任何驱动程序有任何依赖关系?
     
    此致、
    Anuj

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

    我在使用 NullSource 的用例中添加了一些从 null_src_display 到的内容、它可以正常工作、这意味着 system_CMD_new_data 正在从 NullSource 发送、并由 IPC_IN 和我在 A15上的自定义链接接收。

    我的自定义链接会接收一个帧、副本会复制到缓冲区、该缓冲区在内核空间中分配并堆栈到 VSDK、 然后、驱动程序通过 PCIe 将内核空间缓冲区发送到另一个 SoC 上的驱动程序、在该驱动程序中将其从驱动程序复制到自定义链接、然后显示。

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

    您好!

    您能否共享捕获链路参数?

    此致、

    Anuj

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

    您是否能够解决此问题。

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

    我没有解决我的问题,现在我已经停止尝试了,因为其他东西都在出现。

    感谢您迄今提供的帮助、如果有更多时间、我可能会再回来。

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

    那么、您可以解决这个问题吗?

    此致、
    Anuj