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.

[参考译文] AM625:v4l2 streamon 导致电路板挂起

Guru**** 2557810 points
Other Parts Discussed in Thread: AM620-Q1

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1543571/am625-v4l2-streamon-caused-board-hangs

器件型号:AM625
Thread 中讨论的其他器件:AM620-Q1

工具/软件:

您好:

我们使用 2 个 C 文件来测试通过 2 个流 (vc0 和 VC1) 捕获帧。

第一个应用程序在终止它时会导致主板挂起,然后再次运行它。但是第二个应用程序在  终止它时总是可以运行,然后再次运行它。

这两个文件都执行以下步骤:

      打开文件

      设置 v4l2_foramt

      请求 v4l2_requestbuffers

      mmap 缓冲区

      querybuf

      qbuf

      流式传输

 另外、还可以添加信号来执行 SIGTERM 函数、这将执行这些步骤

      第五十章 50

     流式传输

     关闭 FD

     munmap

不同之处在于第一个 C 文件:

    而 1{

       video0 dqbuf

       video0 qbuf  

       video1 dqbuf

       video1 qbuf

   }

第二个 C 文件是

  pthread th0

  螺纹波 TH1

  TH0 执行 while 1{

     video0 dqbuf

     video0 qbuf

   }

  TH1 在 1{

     video1 dqbuf

     video1 qbuf

  }

如果运行 kill cmd、两者都会运行信号处理程序。

然后再次运行、第一个应用程序会导致电路板挂起。 但第二个应用可以正常运行。

关于  CSI2RX_STREAM_STATUS_REG 的寄存器:

kill 第一个应用时、所有位均为 0

当 KILL 第二个应用时、位 31 和位 8 为 1

您能帮助我们找到使用第一个应用程序导致电路板挂起的原因吗?

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

    亲爱的汤姆。

    关于该问题的另一个问题是、当您关闭器件时、您是否禁用了来自 FPGA 的传输?

    您应该按照以下步骤操作:禁用 FPGA 传输->流式传输关闭并关闭器件;打开器件并流式传输->启用 FPGA 传输。

    非常感谢!

    Yong

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

    在该器件上、没有 FPGA  传输

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

    您能帮助我们在 8/10 之前重新爱上这件事吗

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

    亲爱的汤姆。

    您能否澄清数据流? SPAD -> AM620-Q1 CSIRX?

    在该器件上、没有 FPGA 传输

    然后你停止了 SPAD 传输然后关闭设备 (CSIRX)? 同时打开设备、然后启动 SPAD 传输?

    非常感谢!

    Yong

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

    您好、Tom、

    您是否可以尝试使用“v4l2-ctl --stream-map“或 yavta 同时从 2 个视频设备中捕获并查看您是否遇到相同的挂起问题?

    谢谢、

    建中

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

    您好 Jianzhong:

     命令为“v4l2-ctl --verbose -d /dev/video0 --set-fmt-video=width=2688、height=193、pixelformat='BG12'--stream-map=6 --stream-skip=1 2 --stream-count=10 --stream-poll /dev/video1  

     如果我使用此命令获取 frame、当我终止这两个进程时、它不会导致板挂起。

    但在开始运行 video1 时、我丢失了“&",“,如、如“v4l2-ctl --verbose -d /dev/video0 --set-fmt-video=width=2688、height=193、pixelformat='bg12'--stream-map=6 --stream-skipse=1 /dev/video1

    如果我终止这两个进程、它将导致主板挂起

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

    spad->cdns_csi2rx->ticsi2rx->dma_context

    streamon:运行 csirx start、然后执行 SPAD 启动流

    Streamoff:运行 SPAD 停止流。 然后执行 stop crsirx stop

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

    spad->cdns_csi2rx->ticsi2rx->dma_context

    streamon:运行 csirx start、然后执行 SPAD 启动流

    Streamoff:运行 SPAD 停止流。 然后执行 stop crsirx stop

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

    亲爱的汤姆。

    我是否可以询问它在运行 SPAD 停止流时是否检查了 SPAD 状态、以确保 SPAD 已停止数据传输?

    非常感谢!

    Yong

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

    我们将检查 SPAD 状态、只有当 SPAD 处于空闲状态时、我们才会停止它

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

    您好、Tom、

    电路板挂起看起来如何? 系统不响应任何命令? 还是只是应用挂起?

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

    我不能输入任何命令到板上、ping 命令失败。 调试 UART 无法发送任何日志、无法获取我发送的命令。

    必须断电和上电

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

    似乎是系统崩溃。 那么、您 在崩溃后如何读取 CSI2RX_STREAM_STATUS_REG?

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

    我读它时第一次杀死进度。然后,如果我再次运行的进度,它崩溃

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

    如果运行“v4l2-ctl --verbose -d /dev/video0 --set-fmt-video=width=2688、height=193、pixelformat='BG12'--stream-mmap=6 --stream-skip=1 /dev/video1

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

    如果 video 0 &和 video1 &、将其终止并再次运行应用程序、则它可以正常运行

    如果视频 0 &和视频 1 ,杀死它,并再次运行应用程序,它也 carsh

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

    我的意思是运行你的应用程序,这可能会导致问题,然后杀死它。 然后运行 v4l2 命令  “v4l2-ctl --verbose -d /dev/video0 --set-fmt-video=width=2688、height=193、pixelformat='BG12'--stream-map=6 --stream-skip=1 /dev/video1  请检查它是否仍然崩溃。  

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

    经测试:

    “v4l2-ctl --verbose -d /dev/video0 --set-fmt-video=width=2688、height=193、pixelformat='BG12'--stream-map=6 --stream-skip=1 2 --stream-count=10 --stream-poll & v4l2-verbose -d /dev/video1 --set-fmmap=mmap=6      

    “v4l2-ctl --verbose -d /dev/video0 --set-fmt-video=width=2688、height=193、pixelformat='BG12'--stream-map=6 --stream-skip=1 2 --stream-count=10 --stream-poll & v4l2-verbose -d /dev/video1 --stream-fmmap=6    

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

    您好、Tom、

    当您使用“&"时“时、实际上是将命令放入后台。 因此、第一个命令将两个捕获都放入后台、第二个命令只将第一个捕获结果放入后台。

    我尝试在两个单独的终端运行两个捕获,一个通过终端控制台,另一个通过 telnet。 我可以停止并重新运行、而不会出现任何问题。

    回到您的原始问题、

    [引述 userid=“658153" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1543571/am625-v4l2-streamon-caused-board-hangs

    如果运行 kill cmd、两者都会运行信号处理程序。

    然后再次运行、第一个应用程序会导致电路板挂起。 但第二个应用可以正常运行。

    [/报价]

    您的第一个应用程序已从同一线程中的两个视频设备节点捕获。 每个设备节点都与一个 DMA 上下文关联。  当您终止应用程序时,两个节点的 DMA 操作可能不会完全终止。 当您重新运行应用时、这可能会导致问题。

    您使用的是哪个 SDK 版本? CSI2 Rx 驱动器改进了 SDK 11.0 中的漏极处理、这可能有助于解决第一个应用的问题。 如果您不使用 11.0、我建议您试用或 11.1 最新版本。

    此致、

    建中

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

    在第一个应用程序中、我为视频 0 和视频 1 请求 2 个不同的缓冲结构。

    vidoe0 使用 DMA 上下文 0、视频 1 使用 DMA 上下文 1。它们没有 关联。

     

    SDK 版本为 11.1 或 11.0 或最新版本

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    并且 vidoe0 使用 DMA 上下文 0、视频 1 使用 DMA 上下文 1。它们没有 关联。

    两个 DMA 上下文未关联、但它们从同一 CSI 流传输数据(使用不同的虚拟通道)。 如果你终止应用程序,我不确定是否两个 DMA 传输都被正确终止。

    请尝试最新的 CSI2 Rx 驱动器: git.ti.com/.../j721e-csi2rx.c

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

    亲爱的汤姆

    您是否会分享最新 CSIRX 驱动程序的更新?

    非常感谢!

    Yong

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

    很抱歉。现在回复时间很晚了。

    我合并了我的 j721e-csi2rx.c 中的所有差异。它生成失败。然后我修复一些错误并尝试新驱动程序来获取帧、它无法获得帧。

    然后我只合并这些函数的差异:

    TI_csi2rx_dume_callback

    TI_csi2rx_DRAY_DMA

    TI_csi2rx_dma_callback

    TI_csi2rx_stop_dma

    然后我使用我的应用程序进行测试,如果我杀死我的应用程序并再次运行它,电路板不会挂起。

    帧的原始数据是正确的。

    它似乎是有效的。

    但 dmesg、我可以看到以下日志:

    无法停止 pad0 上的流式传输

    无法停止 pad1 上的流式传输

    无法停止挂接 2 上的流式传输

    无法停止挂接 3 上的流式传输

    DMA 传输在漏极缓冲区超时

    DMA 传输在漏极缓冲区超时

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

    亲爱的汤姆。

    今天下午,我们讨论了,很高兴看到挂起问题消失了。  

    我想请您的帮助提供以下材料以供审核。

    1.提供应用于驱动程序的代码更改。

    2.在应用代码更改之前和之后提供两个日志。

    非常感谢!

    Yong

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

    无法停止上的串流             此日志为 DEV_WARN

    漏极缓冲区的 DMA 传输超时   。该日志为 dev_dbg

    我们可以得到帧和帧的数据是正确的。 电路板不会再崩溃。

    因此我们可以忽略这些日志。 对吗? 它们不是 DEV_err。

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

    亲爱的汤姆。

    好的、

    1.请提供完整的日志以及这些照片吗? 我们将请专家帮助您进行检查并回答您的问题。

    “无法停止串流“

    “DMA 传输针对漏极缓冲器超时“

    2.还建议提供适用于驱动程序的代码更改,供我们的专家查看。

    非常感谢!

    Yong  

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

    亲爱的汤姆。

    您是否仍需要 TI 的支持? 或者我们将在本周关闭该 TT。

    非常感谢!

    Yong

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

    尊敬的 Yong:

    我们仍然发现电路板将崩溃、我们已添加此补丁。

    当我的应用获取帧数据时,如果我关闭了 SPAD 电源,然后我关闭了我的应用并再次运行它,板将崩溃。

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

    亲爱的汤姆

    为什么需要执行此测试? 这是一个例外、此时应重置系统。 对吗?

    非常感谢!

    Yong

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

    尊敬的 Yong:

    我们在测试过程中偶然发现了它、然后追踪到这种现象。

    如果我们等待几分钟、我不确定系统会重置。

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

    亲爱的汤姆。

    好的、这是正常情况吗? 为什么 SPAD 关闭? 您是否会在内部与团队核实如何从系统级别处理此问题?

    此外、您是否在测试过程中重新初始化了 SPAD?

    非常感谢!

    Yong

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

    尊敬的 Yong:

    是的,一个应用程序控制 SPAD。如果它被终止并再次运行,它将关闭并打开 SPAD。

    如果我们从系统级别处理此问题、只要 SPAD 与 soc 断开连接、就可能会导致此问题。

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

    亲爱的汤姆。

    很抱歉、 我可以请您帮助澄清测试案例吗?  您会帮助分享控制流吗?  

    顺便说一句,你是否打开并重新初始化 SPAD 后它设置了 2012,CSIRX 准备好接收数据? CSIRX 必须在数据发送到 CSIRX 之前准备就绪。

    如果我们从系统级处理此问题、那么在 SPAD 与 soc 断开连接的情况下、可能会导致此问题。

    非常感谢!

    Yong

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

    尊敬的 Yong:

    1.打开 SPAD 的电源

    2.run 应用来执行 v4l2 获取帧数据

    3.关闭 SPAD 电源

    4.打开 SPAD 的电源

    5.关闭应用程序并再次运行

    6.主板崩溃

    正常流应该是打开 SPAD、 运行应用以执行 v4l2 获取帧数据、终止应用。关闭并打开 SPAD、然后运行应用

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

    亲爱的汤姆。

    打开 SPAD 电源时、是否意味着 SPAD 已初始化并开始发送数据?

    尊敬的建中。

    您会帮助回顾控制流程吗?  

    非常感谢!

    Yong

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

    尊敬的 Yong:

    打开 SPAD 电源时、它将进行  初始化、但不会开始发送数据。

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

    亲爱的汤姆

    非常感谢。

    让我再澄清一下问题。 请纠正我。

    适用情况:
    打开 SPAD 的电源
    在 2.run 应用中初始化 AM620-Q1 CSIRX
    3.run 应用程序要在 SPAD 上进行流式传输、它将执行 v4l2 获取帧数据。
    4.关闭应用程序
    5.关闭 SPAD 电源
    6.打开 SPAD 电源
    在 7.run 应用中初始化 AM620-Q1 CSIRX
    8.run 应用程序要在 SPAD 上进行流式传输、它将再次执行 v4l2 获取帧数据。

    错误情况:
    打开 SPAD 的电源
    在 2.run 应用中初始化 AM620-Q1 CSIRX
    3.run 应用程序要在 SPAD 上进行流式传输、它将执行 v4l2 获取帧数据。
    4.关闭 SPAD
    5.打开 SPAD 的电源
    6.关闭应用程序
    在 7.run 应用中初始化 AM620-Q1 CSIRX
    8.run 应用程序在 SPAD 上流式传输、系统挂起?

    如果没有误解、请帮助澄清以下问题?

    答:当 kill app 时,它有什么作用?

    B.如何模拟关闭 SPAD 的操作? 它是应用中的一种逻辑?

    非常感谢!

    Yong

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

    尊敬的 Yong:

     可用的情况和错误情况是正确的。

    kill 应用程序时、它将流化、关闭文件、取消映射缓冲区和空闲缓冲区

    我只需运行命令即可关闭 SPAD。 这不是应用程序中的一种逻辑,这是一个错误的操作、但我们需要解决这个问题。 因为它会导致电路板挂起。

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

    亲爱的汤姆

    根据讨论的内容、我想请您提供帮助、以供进一步检查。

    1.请帮助提供完整的日志记录错误情况,特别是步骤 3~6.

    2.请帮助细化这两种情况,例如,关闭 SPAD 时它会做什么?

    3.请帮助我们了解系统何时挂起? 配置 SPAD? 队列缓冲区到驱动程序并等待? 或其他什么吗?

    4.请帮助分享您在 CSIRX 中应用的代码更改,与建中发送的最新 CSIRX 驱动程序进行比较,以供查看。

    非常感谢!

    Yong

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

    亲爱的汤姆。

    按照讨论的内容、我们将此 TT 优先级降级、因为您需要处理工作。 请提供 反馈以供稍后继续。

    [报价 userid=“355179" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1543571/am625-v4l2-streamon-caused-board-hangs/5985628

    根据讨论的内容、我想请您提供帮助、以供进一步检查。

    1.请帮助提供完整的日志记录错误情况,特别是步骤 3~6.

    2.请帮助细化这两种情况,例如,关闭 SPAD 时它会做什么?

    3.请帮助我们了解系统何时挂起? 配置 SPAD? 队列缓冲区到驱动程序并等待? 或其他什么吗?

    4.请帮助分享您在 CSIRX 中应用的代码更改,与建中发送的最新 CSIRX 驱动程序进行比较,以供查看。

    [/报价]

    非常感谢!

    Yong