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.

[参考译文] TDA4VEN-Q1:捕获节点帧丢失问题

Guru**** 2477065 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1456493/tda4ven-q1-capture-node-frame-loss-issue

器件型号:TDA4VEN-Q1

工具与软件:

您好、TI、主页

我们在捕获节点中遇到帧丢失问题、请帮助分析该问题。

1、μ s 捕获节点的正常执行时间如下:

2 μ s 在、TIDL 相关应用时、捕获节点的执行时间变得不稳定、如下所示:

此致、

JC

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

    尊敬的 JC:

    您使用的是哪个 SDK 版本? 您可以在 SDK10.1版本中检查这一点吗?  

    此致、

    Brijesh

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

    嗨、Brijesh;

    [报价 userid="80721" url="~/support/processors-group/processors/f/processors-forum/1456493/tda4ven-q1-capture-node-frame-loss-issue/5586787 #5586787"]

    您使用的是哪个 SDK 版本? 您可以在 SDK10.1版本中检查这一点吗?  

    [报价]

    我们使用 sdk10.0。

    这似乎与 SDK 版本无关,它似乎是一个资源争用问题,我们想增加 csirx 或 MCU2_0的优先级,是可能吗?

    此致、

    JC

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

    尊敬的 JC:

    您是否可以尝试更改 CSIRX 驱动程序中的一个参数?   您可以不使用文件 ti-processor-sdk-rtos-j722s-evm-10_00_00_05\mcu_plus_sdk_j722s_10_00_00_25\source\drivers\csirx\v1\csirx.h 中 csirx_chCfgInit 中 csirit 的总线顺序 id 8、而是将此值更改为15、看看它是否有帮助?  

    此致、

    Brijesh

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

    嗨、Brijesh、

    您能否在 CSIRX 驱动程序中更改一个参数?   您可以不使用文件 ti-processor-sdk-rtos-j722s-evm-10_00_00_05\mcu_plus_sdk_j722s_10_00_00_25\source\drivers\csirx\v1\csirx.h 中 csirx_chCfgInit 中 csirit 的总线顺序 id 8、而是将此值更改为15、看看它是否有帮助?  [报价]

    在我们将总线顺序 id 的值更改为15之后、帧丢失问题似乎没有改善。

    是否还有其他可以尝试的操作、例如提高 MCU2_0或 csirx 的 QoS 优先级?

    此致、

    JC

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

    尊敬的 JC:

    我们已经提高了 CSIRX 的优先级。  

    一个问题、请确认您没有看到任何帧接收错误、如"Capture:Error:Incomplete Frame for Ch0/1/2/3"、并且在捕获统计信息中看不到任何溢出。  

    如果不是这样、那么我们可以尝试增加 r5f 的优先级、看看这是否有帮助。

    此致、

    Brijesh

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

    嗨、Brijesh、

    [报价 userid="80721" url="~/support/processors-group/processors/f/processors-forum/1456493/tda4ven-q1-capture-node-frame-loss-issue/5591770 #5591770"]

    一个问题、请确认您没有看到任何帧接收错误、如"Capture:Error:Incomplete Frame for Ch0/1/2/3"、并且在捕获统计信息中看不到任何溢出。  

    [报价]

    否、我没有看到此错误。

    [报价 userid="80721" url="~/support/processors-group/processors/f/processors-forum/1456493/tda4ven-q1-capture-node-frame-loss-issue/5591770 #5591770"]

    如果不是这样、那么我们可以尝试增加 r5f 的优先级、看看这是否有帮助。

    [报价]

    好的、那么如何提高 r5f 内核的优先级呢?

    此致、

    JC

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

    尊敬的 JC:

    您使用哪种引导流程? 是 SPL 引导流程还是 SBL?  

    在 SDK10.1中、我们增加了对在 SPL 引导流程中设置 QoS 设置的支持。 我们只需要在此处添加 R5F QoS。  

    此致、

    Brijesh  

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

    嗨、Brijesh、

    [报价 userid="80721" url="~/support/processors-group/processors/f/processors-forum/1456493/tda4ven-q1-capture-node-frame-loss-issue/5591893 #5591893"]

    您使用哪种引导流程? 是 SPL 引导流程还是 SBL?  

    在 SDK10.1中、我们增加了对在 SPL 引导流程中设置 QoS 设置的支持。 我们只需要在此处添加 R5F QoS。  

    [报价]

    我们使用了 sdk10.0和 SBL 引导。

    此致、

    JC

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

    尊敬的 JC:

    好的、感谢您分享这些详细信息、我将致力于在 SBL 中启用 QoS 并 在 SDK10.0上向您分享更改。  

    此致、

    Brijesh

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

    您好 jc、

    您是否可以在 MCU+ SDK 上应用附加的补丁、尤其是在 ti-processor-sdk-rtos-j722s-evm-10_00_00_05\mcu_plus_sdk_j722s_10_00_00_25上、重新编译 SBL、并查看它是否有助于在主 R5F 上获得更好的性能?  

    此致、

    Brijesh

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

    嗨、Brijesh、

    [报价 userid="80721" url="~/support/processors-group/processors/f/processors-forum/1456493/tda4ven-q1-capture-node-frame-loss-issue/5602153 #5602153"]

    您是否可以在 MCU+ SDK 上应用附加的补丁、尤其是在 ti-processor-sdk-rtos-j722s-evm-10_00_00_05\mcu_plus_sdk_j722s_10_00_00_25上、重新编译 SBL、并查看它是否有助于在主 R5F 上获得更好的性能?  

    [报价]

    确定、我可以从哪里获得此修补程序文件?

    此致、

    JC

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

    尊敬的 JC:

    很抱歉、我漏掉了。 请在此帖子上找到它。

    /cfs-file/__key/communityserver-discussions-components-files/791/0001_2D00_J722S_2D00_Added_2D00_support_2D00_for_2D00_configuring_2D00_QoS_2D00_in_2D00_SBL.patch

    此致、

    Brijesh

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

    嗨、Brijesh、

    我尝试了你的补丁,但它似乎没有改善。

    此致、

    JC

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

    尊敬的 JC:

    当您说在印刷中捕获成本时间时、这意味着什么? 您如何获得这个时间并从 OpenVX 打印它? 您能否打印 OpenVX 统计信息并查看 捕获是否运行正常?  

    此致、

    Brijesh

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

    嗨、Brijesh、

    [报价 userid="80721" url="~/support/processors-group/processors/f/processors-forum/1456493/tda4ven-q1-capture-node-frame-loss-issue/5604152 #5604152"]

    当您说在印刷中捕获成本时间时、这意味着什么? 您如何获得这个时间并从 OpenVX 打印它? 您能否打印 OpenVX 统计信息并查看 捕获是否运行正常?  

    [报价]

    在 TIvxCaptureProcess 函数的开始和结束处记录一个时间戳。

    例如:

    tivxCaptureProcess ()

      time_start =  tivxPlatformGetTimeInUsecs ();//开头

      ....

      time_end =  tivxPlatformGetTimeInUsecs();//背面

      printf (%s 成本时间:%llu \n"、__func__、(time_end-time_start/1000);

    }

    此致、

    JC

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

    尊敬的 JC:

    但是、 您能否不测量 TIvxCaptureProcess API 的时间、而是测量两个脱队呼叫之间的时间段? 通常、应用程序使用捕获输出作为图形参数、并执行 参数排队和出队等操作。 您能否检查两个出队之间的时间是否保持一致?  

    此致、

    Brijesh

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

    嗨、Brijesh、

    [报价 userid="80721" url="~/support/processors-group/processors/f/processors-forum/1456493/tda4ven-q1-capture-node-frame-loss-issue/5604501 #5604501"]

    但是、 您能否不测量 TIvxCaptureProcess API 的时间、而是测量两个脱队呼叫之间的时间段? 通常、应用程序使用捕获输出作为图形参数、并执行 参数排队和出队等操作。 您能否检查两个出队之间的时间是否保持一致?  

    [报价]

    在出队函数调用之前和之后记录时间戳、这也不稳定并具有较大抖动。

    例如:

    time_start =  tivxPlatformGetTimeInUsecs();  

    vxGraphParameterDequeueDoneRef ();//捕获缓冲区

    time_end =  tivxPlatformGetTimeInUsecs();  

    printf (%s 成本时间:%llu \n"、__func__、(time_end-time_start/1000);

    此致

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

    尊敬的 JC:

    我真的怀疑这仍然是正确的。 您是否在此应用中集成了 perf_stats?  那么、您能否打印并 分享 TIOVX 性能统计数据? 我想查看捕获节点的性能统计数据。

    此致、

    Brijesh

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

    嗨、Brijesh、

    统计数字如下:

    此致、

    JC

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

    尊敬的 JC:

    但这似乎是图形性能、您能得到完整的统计数据吗? 这应包括捕获节点的统计信息。 然后、我们将了解 CSIRX 是否报告了任何错误或是否存在任何帧丢失。  

    从本质上讲、 Capture 节点中的 control 命令 TIVX_CAPTURE_PRINT_STATISTS 在 控制台上打印统计信息。 看到帧丢失时、您可以调用此控制命令吗?  

    此致、

    Brijesh

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

    嗨、Brijesh、

    详细的统计数据如下所示:

    此致、

    JC

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

    尊敬的 JC:

    我们 从统计信息中可以看到、CSIRX 不会报告任何错误、没有溢出、没有 ECC 或 CRC 错误、也没有虚假中断。

    但有掉帧、 由驱动程序报告。 这通常在管道中其他组件运行得较慢时出现、因此它无法将缓冲区提供回 CSIRX。 这时、CSIRX 将丢弃该帧。  

    在上面的图中、我 只看到 LDC、它在大部分时间实时运行、平均花费了26米。  

    您能否检查其他组件? 查看其中是否有任何一个持续花费超过33ms、且其平均性能时间超过33。  

    此致、

    Brijesh

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

    嗨、Brijesh、

    [报价 userid="80721" url="~/support/processors-group/processors/f/processors-forum/1456493/tda4ven-q1-capture-node-frame-loss-issue/5609467 #5609467"]

    您能否检查其他组件? 查看其中是否有任何一个持续花费超过33ms、且其平均性能时间超过33。  

    [报价]

    该图只有两个节点、即 CAPTURE+LDC、并且应无法仅查看平均时间、问题在于每帧的时间抖动较大。

    在发生帧丢失之前、DDR 带宽必须超过6.5Gb/s。 如何解决该问题。

    此致、

    JC

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

    尊敬的 JC:

    LDC 的输出连接在哪里? 它是否未连接到任何地方? 此外、在捕获节点和 LDC 节点之间分配了多少个缓冲器? 我确实看到 LDC 节点花费了超过33ms 的时间、在 这种情况下、在采集和 LDC 之间进行轻微的模式缓冲可能会有所帮助。  

    此致、

    Brijesh

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

    嗨、Brijesh、

    [报价 userid="80721" url="~/support/processors-group/processors/f/processors-forum/1456493/tda4ven-q1-capture-node-frame-loss-issue/5611108 #5611108"]

    LDC 的输出连接在哪里? 它是否未连接到任何地方? 此外、在捕获节点和 LDC 节点之间分配了多少个缓冲器? 我确实看到 LDC 节点花费了超过33ms 的时间、在 这种情况下、在采集和 LDC 之间进行轻微的模式缓冲可能会有所帮助。  

    [报价]

    是的、LDC 节点输出不连接任何节点; 它只共享 LDC 缓冲器以供其他进程使用。

    图形链接如下所示:

    捕获节点(3个缓冲器)—-> LDC 节点(6个缓冲器)

    我尝试增加缓冲区的数量、但没有改善帧丢失问题。

    摄像机的帧速率为25帧、DDR 带宽超过6.5Gb/s 后、会发生帧丢失、且平均帧速率在22-23帧范围内。

    此致、

    JC

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

    尊敬的 JC:

    您是否尝试过增大捕捉和 LDC 之间的缓冲器深度? 我看到您在它们之间使用了3个缓冲器、您能将缓冲器增加 一个吗、看看它是否有用?  

    此致、

    Brijesh

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

    嗨、Brijesh、

    在我尝试添加缓冲区后,丢弃帧的问题得到了改善,没有丢弃帧。

    此致、

    JC

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

    谢谢 JC、让我们知道它是否已完全解决该问题、然后我们可以关闭该主题。