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.

[参考译文] PROCESSOR-SDK-J722S:流 0 上的 ticsi2rx 性能较差(流 1-3 正常)

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1530388/processor-sdk-j722s-ticsi2rx-poor-performance-on-stream-0-streams-1-3-are-fine

器件型号:PROCESSOR-SDK-J722S

工具/软件:

1.将 4 个数据流配置为 PAD 0、并将每个摄像机设置为相同的分辨率:
media-ctl -d /dev/media1 -R '“30122000.ticsi2rx"[0/0->1/0“[0/0->1/0 [1]、0/1 ->2/0 [1]、0/2 ->3/0 [1]、0/3 ->4/0 [1]]'
media-ctl -d /dev/media1 -R '“cdns_csi2rx.30121000.csi-bridge"[0/0“[0/0 -> 1/0 [1]、0/1 -> 1/1 [1]、0/2->1/2 [1]、0/3 -> 1/3 [1]'
media-ctl -d /dev/media1 -V '“30122000.ticsi2rx":“:0/0 [fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]“
media-ctl -d /dev/media1 -V '“30122000.ticsi2rx":“:0/1 [fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]“
media-ctl -d /dev/media1 -V '“30122000.ticsi2rx":“:0/2 [fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]“
media-ctl -d /dev/media1 -V '“30122000.ticsi2rx":“:0/3 [fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]“
media-ctl -d /dev/media1 -V '“cdns_csi2rx.30121000.csi-bridge":“:0/0 [fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]“
media-ctl -d /dev/media1 -V '“cdns_csi2rx.30121000.csi-bridge":“:0/1 [fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]“
media-ctl -d /dev/media1 -V '“cdns_csi2rx.30121000.csi-bridge":“:0/2 [fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]“
media-ctl -d /dev/media1 -V '“cdns_csi2rx.30121000.csi-bridge":“:0/3 [fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]“
v4l2-ctl -d /dev/video2 --set-fmt-video width=720
v4l2-ctl -d /dev/video3 --set-fmt-video width=720
v4l2-ctl -d /dev/video4 --set-fmt-video width=720
v4l2-ctl -d /dev/video5 --set-fmt-video width=720

8.仅在第一个视频设备上开始流式传输:
gst-launch-1.0 --no-position v4l2src device=/dev/video2! video/x-raw、width=720、height=480、format=UYVY、帧速率=60/1! 自动视频接收器

帧速率会很差。

9.关闭流并打开任何一个其他流:
gst-launch-1.0 --no-position v4l2src device=/dev/video3! video/x-raw、width=720、height=480、format=UYVY、帧速率=60/1! 自动视频接收器

帧速率和数据良好。

请注意、仅当 CSI 数据中存在其他虚拟通道视频流时才会发生这种情况。 如果没有其他 CSI 流 VC 数据、则没关系。

在图中、我显示了低帧速率导致的失真:


通过打开每个发送流消耗所有 VC 流数据、可校正流 0 上的数据。
另请注意、这是动态的。 例如、如果仅连接 vc0 和 VC1、并且流正在传输、我可以看到错误的帧速率、然后断开连接到 VC1 的摄像头(从 CSI 流中删除其数据)、vc0 流将进入正确的帧速率。

我还尝试了 SDK 11 中的补丁、这些补丁删除了 TI_CSI2RX_DMA_IDLE、它们无法解决此问题。

这也是不一致的,首先,图像可能看起来正常,但最终会发生什么导致它有问题. (可能是 3 个 v4l2 缓冲区中的一个完全不有序?)

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

    尊敬的 Evan:

    这种行为是仅在 DMA 编辑时观察到的、还是即使不去交错也会显示出来?

    此致、
    Jared

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

    您好 Jared、

    我刚刚确认它也没有隔行编辑。 查看下图中的撕裂情况。


    要清楚一点、这和父级问题是两个不同的问题。
    父级问题是由隔行更改引起的、但此问题不是。

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

    您好 Jared、

    我的任务是、无论第一次触发的 DMA 是什么(通常为 VC 0)、那么 DMA 命中漏极地址、就会丢失数据。

    这就是其他流不受影响的原因。 它们不会丢失任何数据? 当连接更多摄像头时、我发现我们更频繁地进入空闲状态? 可能是因为更多的线程在服务同一个设备?

    我还发现我可以以 1/1 帧的速率打开流 1-3、它们始终会正确绘制。 在这种情况下、流 0 通常有未写入的数据、因此有一个绿色缓冲区。

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

    尊敬的 Evan:

    我们已经在多个虚拟通道上测试并验证了摄像头流、以前从未遇到过此问题。

    我将重新创建多个摄像头流式传输到同一物理端口、并查看我是否看到您的问题。

    此致、
    Jared

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

    谢谢 Jared。 作为参考、以下是拓扑:

    媒体控制器 API 版本 6.6.44

    媒体设备信息
    ----------------------------
    驱动器 j721e-csi2rx
    模型 TI-CSI2RX
    串行
    总线信息平台:30122000.ticsi2rx
    硬件修订版本 0x1
    驱动程序版本 6.6.44

    器件拓扑
    -实体 1: 30122000.ticsi2rx(5 个电极,5 个链路,4 条路由)
    键入 V4L2 subdev 子类型未知标志 0
    器件节点名称/dev/v4l-subdev0
    路线:
    0/0 ->1/0【活动】
    0/1 ->2/0【正在供货】
    0/2 -> 3/0【活动】
    0/3 -> 4/0【有效】
    pad0:水槽
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-Bt 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    [stream:1 fmt:UYVY8_1x16/720x480 字段:seq-Bt 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    [stream:2 fmt:UYVY8_1x16/720x480 字段:seq-Bt 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    [stream:3 fmt:UYVY8_1x16/720x480 字段:seq-Bt 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    <-“cdns_csi2rx.30121000.csi-bridge":“:1【已启用,不可更改】
    pad1:来源
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-Bt 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    ->“30122000.ticsi2rx 上下文 0“:0【已启用,不可更改】
    pad2:来源
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-Bt 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    ->“30122000.ticsi2rx 上下文 1“:0【已启用,不可更改】
    pad3:来源
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-Bt 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    ->“30122000.ticsi2rx 上下文 2“:0【已启用,不可更改】
    pad4:来源
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-Bt 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    ->“30122000.ticsi2rx 上下文 3“:0【已启用,不可更改】

    -实体 7:cdns_csi2rx.30121000.csi-bridge(5 个电极、2 个链路、4 条路由)
    键入 V4L2 subdev 子类型未知标志 0
    器件节点名称/dev/v4l-subdev1
    路线:
    0/0 ->1/0【活动】
    0/1 ->1/1【正在供货】
    0/2 -> 1/2【有效】
    0/3 -> 1/3【活动】
    pad0:水槽
    [stream:0 fmt:UYVY8_1x16/720x480 字段:无色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    [stream:1 fmt:UYVY8_1x16/720x480 字段:无色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    [stream:2 fmt:UYVY8_1x16/720x480 字段:无色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    [stream:3 fmt:UYVY8_1x16/720x480 字段:无色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    <-“isl7998x 3-0044“:0【已启用,不可更改】
    pad1:来源
    [stream:0 fmt:UYVY8_1x16/720x480 字段:无色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    [stream:1 fmt:UYVY8_1x16/720x480 字段:无色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    [stream:2 fmt:UYVY8_1x16/720x480 字段:无色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    [stream:3 fmt:UYVY8_1x16/720x480 字段:无色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    ->“30122000.ticsi2rx":“:0【已启用,不可更改】
    pad2:来源
    pad3:来源
    pad4:来源

    -实体 13:isl7998x 3-0044(5 个电极、1 个链路、4 条线路)
    键入 V4L2 subdev 子类型未知标志 0
    器件节点名称/dev/v4l-subdev2
    路线:
    1/0 -> 0/0【活动】
    2/0 -> 0/1【有效位】
    3/0 -> 0/2【活动】
    4/0 -> 0/3【有效】
    pad0:来源
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-Bt]
    [流:1 fmt:UYVY8_1x16/720x480 字段:seq-Bt]
    [流:2 fmt:UYVY8_1x16/720x480 字段:seq-Bt]
    [流:3 fmt:UYVY8_1x16/720x480 字段:seq-Bt]
    ->“Cdns_csi2rx.30121000.csi-bridge":“:0【已启用,不可更改】
    pad1:水槽
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-Bt]
    pad2:水槽
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-Bt]
    pad3:水槽
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-Bt]
    pad4:水槽
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-Bt]

    -实体 23: 30122000.ticsi2rx 上下文 0(1 个 pad, 1 个链接)
    键入节点子类型 V4L 标志 0
    器件节点名称/dev/video2
    pad0:水槽
    <-“30122000.ticsi2rx":“:1【已启用,不可更改】

    -实体 29: 30122000.ticsi2rx 上下文 1(1 个 pad, 1 个链接)
    键入节点子类型 V4L 标志 0
    器件节点名称/dev/video3
    pad0:水槽
    <-“30122000.ticsi2rx":“:2【已启用,不可更改】

    -实体 35: 30122000.ticsi2rx 上下文 2(1 个 pad, 1 个链接)
    键入节点子类型 V4L 标志 0
    器件节点名称/dev/video4
    pad0:水槽
    <-“30122000.ticsi2rx":“:3【已启用,不可更改】

    -实体 41: 30122000.ticsi2rx 上下文 3(1 个 pad, 1 个链接)
    键入节点子类型 V4L 标志 0
    器件节点名称/dev/video5
    pad0:水槽
    <-“30122000.ticsi2rx":“:4【已启用,不可更改】


    此外、此器件仅在重要的情况下使用 2/4 个 CSI 通道。
    在 2 个通道上映射 4 个流。
    我将很快转向一组新的 CSI 硬件、因此我将能够查看它是否也会改变使用新器件时的行为。

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

    尊敬的 Evan:

    感谢您了解拓扑。 当我对设置进行测试时、我会更新您。

    此致、
    Jared

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

    您好 Jared、

    我不再认为这是虚拟通道... 这是第一个 ctx 上的什么?

    我围绕虚拟频道和 PAD、它遵循 ctx0 上的任何内容?
    下面、我将虚拟通道 1 连接到焊盘 2 (ctx0)、焊盘 2 连接到/dev/video2. 这也会重现。

    另外、虽然我认为这是不相关的、但我注意到默认情况下、CSI0 的设备树与我正在使用的 CSI1 相比、有两个 DMA 通道。

    CSI0:
     DMA =<&MAIN_bcdma_csi 0 0x5000 0>、<&MAIN_bcdma_csi 0 0x5001 0>
    <&MAIN_bcdma_csi 0 0x5002 0>、<&MAIN_bcdma_csi 0 0x5003 0>、
    <&MAIN_bcdma_csi 0 0x5004 0>、<&MAIN_bcdma_csi 0 0x5005 0>;
    dma-names =“rx0",“,"rx1"、"rx1",“,"rx2"“"rx2",、,"rx3"“"rx3",“,"RX4"、"RX4",“,</s>“ 、““、“Rx5";“;

    CSI1:
    DMA =<&MAIN_bcdma_CSI 0 0x5100 0>、<&MAIN_bcdma_CSI 0 0x5101 0>、
    <&MAIN_bcdma_csi 0 0x5102 0>、<&MAIN_bcdma_csi 0 0x5103 0>;
    dma-names =“rx0",“,"rx1"、"rx1",“,"rx2"“"rx2",、,"rx3"“"rx3";“;</s>、 ““

    媒体控制器 API 版本 6.6.44

    媒体设备信息
    ----------------------------
    驱动器 j721e-csi2rx
    模型 TI-CSI2RX
    串行
    总线信息平台:30122000.ticsi2rx
    硬件修订版本 0x1
    驱动程序版本 6.6.44

    器件拓扑
    -实体 1: 30122000.ticsi2rx(5 个电极,5 个链路,4 条路由)
    键入 V4L2 subdev 子类型未知标志 0
    器件节点名称/dev/v4l-subdev0
    路线:
    0/0 ->1/0【活动】
    0/1 ->2/0【正在供货】
    0/2 -> 3/0【活动】
    0/3 -> 4/0【有效】
    pad0:水槽
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    [stream:1 fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    [stream:2 fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    [stream:3 fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    <-“cdns_csi2rx.30121000.csi-bridge":“:1【已启用,不可更改】
    pad1:来源
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    ->“30122000.ticsi2rx 上下文 3“:0【已启用,不可更改】
    pad2:来源
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    ->“30122000.ticsi2rx 上下文 0“:0【已启用,不可更改】
    pad3:来源
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    ->“30122000.ticsi2rx 上下文 1“:0【已启用,不可更改】
    pad4:来源
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    ->“30122000.ticsi2rx 上下文 2“:0【已启用,不可更改】

    -实体 7:cdns_csi2rx.30121000.csi-bridge(5 个电极、2 个链路、4 条路由)
    键入 V4L2 subdev 子类型未知标志 0
    器件节点名称/dev/v4l-subdev1
    路线:
    0/0 ->1/0【活动】
    0/1 ->1/1【正在供货】
    0/2 -> 1/2【有效】
    0/3 -> 1/3【活动】
    pad0:水槽
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    [stream:1 fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    [stream:2 fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    [stream:3 fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    <-“isl7998x 3-0044“:0【已启用,不可更改】
    pad1:来源
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    [stream:1 fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    [stream:2 fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    [stream:3 fmt:UYVY8_1x16/720x480 字段:seq-RGB tb 颜色空间:sRGB xfer:sRGB YCbCr:601 量化:lim-range]
    ->“30122000.ticsi2rx":“:0【已启用,不可更改】
    pad2:来源
    pad3:来源
    pad4:来源

    -实体 13:isl7998x 3-0044(5 个电极、1 个链路、4 条线路)
    键入 V4L2 subdev 子类型未知标志 0
    器件节点名称/dev/v4l-subdev2
    路线:
    1/0 -> 0/0【活动】
    2/0 -> 0/1【有效位】
    3/0 -> 0/2【活动】
    4/0 -> 0/3【有效】
    pad0:来源
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-seq] tb
    [stream:1 fmt:UYVY8_1x16/720x480 字段:seq-seq] tb
    [stream:2 fmt:UYVY8_1x16/720x480 字段:seq-seq] tb
    [stream:3 fmt:UYVY8_1x16/720x480 字段:seq-seq] tb
    ->“Cdns_csi2rx.30121000.csi-bridge":“:0【已启用,不可更改】
    pad1:水槽
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-seq] tb
    pad2:水槽
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-seq] tb
    pad3:水槽
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-seq] tb
    pad4:水槽
    [stream:0 fmt:UYVY8_1x16/720x480 字段:seq-seq] tb

    -实体 23: 30122000.ticsi2rx 上下文 0(1 个 pad, 1 个链接)
    键入节点子类型 V4L 标志 0
    器件节点名称/dev/video2
    pad0:水槽
    <-“30122000.ticsi2rx":“:2【已启用,不可更改】

    -实体 29: 30122000.ticsi2rx 上下文 1(1 个 pad, 1 个链接)
    键入节点子类型 V4L 标志 0
    器件节点名称/dev/video3
    pad0:水槽
    <-“30122000.ticsi2rx":“:3【已启用,不可更改】

    -实体 35: 30122000.ticsi2rx 上下文 2(1 个 pad, 1 个链接)
    键入节点子类型 V4L 标志 0
    器件节点名称/dev/video4
    pad0:水槽
    <-“30122000.ticsi2rx":“:4【已启用,不可更改】

    -实体 41: 30122000.ticsi2rx 上下文 3(1 个 pad, 1 个链接)
    键入节点子类型 V4L 标志 0
    器件节点名称/dev/video5
    pad0:水槽
    <-“30122000.ticsi2rx":“:1【已启用,不可更改】

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

    您好 Jared、

    我添加了另一个 DMA 通道并跳过了 ctx0、现在它不会重新生成。
    我认为 ticsi2rx 的 DMA 通道 0 存在错误? 可能寄存器设置不正确、导致所有 VC#流进入 ctx0?

    我可以解决这个问题。
    如果这种行为是有意为之、可能会在某处记录下来?

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

    尊敬的 Evan:

    我会问这一点。 很高兴您找到了一个解决方法。

    此致、
    Jared