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/DRA744:VIP:视频捕获并不总是启动

Guru**** 2557630 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/607608/linux-dra744-vip-video-capture-does-not-always-start

器件型号:DRA744

工具/软件:Linux

您好!

我正在使用 VIP 块、通过使用基于 TI dmabuftest 的定制应用程序从多个摄像机采集图像。

有时,其中一个选择不会开始(而另一个选择则正常)。 调试该问题后、我发现应用程序在 VIDIOC_DQBUF ioctl 处挂起、无限期等待缓冲区到达。 K4.4上的 VIP 驱动程序的最新版本(PROCESSOR-SDK-LINUXT-Automotive 3.02.00.03)和旧版本的驱动程序(例如 PROCESSOR-SDK-LINUXE-Automotive 3.00.03)都出现了这种情况。

在内核3.14中、它运行正常。

请注意、这种情况发生在多种型号的摄像机上、包括离散和嵌入式同步信号。

我们将感谢您的任何帮助。

此致、

弗朗西斯科

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

    我已将您的问题转交给 VIP 专家。

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

    从应用的角度来看、DQBUF 是一种阻塞 ioctl、它会阻止直到驱动程序返回一个帧。
    如果您看到有挂起的情况。
    请附加整个 VIP 和 VPDMA 模块的寄存器转储。

    另请回答以下问题:
    -这是否与 dmabuftest 一起发生?
    -仅在第一个帧上发生挂起、或者有时在捕获开始后发生挂起(运行时)
    -是否会终止并重新启动应用程序


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

    工作: pastebin.com/.../K8zLWp8W
    不工作: pastebin.com/.../Cn8bYbiL

    至于您的问题:

    -这是否与 dmabuftest 一起发生?
    是(转储与最新版本的 dmabuftest 一起使用)

    -挂起仅发生在第一个帧上、还是有时发生在捕获开始后(运行时)?
    挂起仅在第一个帧上。 如果流开始、则采集可以无限期运行、而不会出现任何问题。

    -中止和重新启动应用程序是否起作用?
    是、但有时需要多次重新启动。

    此外、如果同时启动多个捕获(但也使用单个捕获)、则会更频繁地发生这种情况。

    谢谢!

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

    TI 不允许访问 pastebin.com
    您能否在 http://pastebin.ubuntu.com/中发布日志 或将其附加到此主题中?

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

    工作: pastebin.ubuntu.com/.../
    不工作: pastebin.ubuntu.com/.../

    BR、
    弗朗西斯科
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好

    根据寄存器转储、我看到解析器能够在两种情况下检测视频大小(48995530)
    但差异在于 VPDMA 列表状态寄存器(4899d00c)

    在非工作状态下,VPDMA 列表不占线。 (执行 DMA 时应该总是很忙)

    此外、VPDMA IRQ 寄存器(4899d088)表示捕获至少从4个通道(List0、1、2、3)发生一次。
    但在不工作的情况下、奇怪的是、在 VPDMA IRQ 寄存器(4899d088)中设置了 List0 Complete 的 IRQ 位、并且它也被启用(4899d08c)

    但是、它不会反映在平级 IRQ 寄存器(48990020)中


    请回答几个问题:-
    当您看到此故障时、您是否正在运行多个捕获?
    如果是、您能否确认故障仅在多个捕获并行运行时发生、还是在单个捕获发生时发生。


    我怀疑这可能是 CPU 端缺少 IRQ 的情况。
    只需尝试仅使用一个捕获运行、然后查看是否可以重现。
    我将根据您的信息进一步总结


    Nikhil D
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Nikhil、
    我在执行单次和多次捕获时都看到了这个问题;但是、在多捕获情况下(在这种情况下、通常在四次运行中进行两次或三次捕获、而不会出现任何问题)、这种情况更常见。

    谢谢你

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

    您是否可以附加寄存器转储、在该转储中、您只能从启动开始运行单次捕获
    每当您看到挂起、转储寄存器和连接时。

    请勿更改不同运行中使用的器件。

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

    pastebin.ubuntu.com/.../

    (使用 Vin4a)

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

    如怀疑的那样、这实际上是缺少 IRQ 的情况。
    我可以看到 VPDMA IRQ 位被置位、但是 Toplevel 位没有被正确置位。

    当 IRQ 被触发时、即使在驱动程序启用 IRQ 之前、也会发生这种情况。

    我认为这在其中一个补丁中是固定的。
    请提供您正在使用的内核的最后 TI 提交 ID、我可以指出修复此等用途的补丁。

    Nikhil D
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    TI 最新提交的是91222fb (标签:PROCESSOR-SDK-LINUXE-Automotive - 3.01.00.03)。

    谢谢你

    弗朗西斯科