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.

[参考译文] AM67:如何将 media-ctl 焊盘与不匹配的 media_bus_FMT 链接起来

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1521155/am67-how-to-link-media-ctl-pad-with-mismatched-media_bus_fmt

器件型号:AM67

工具/软件:

请参阅下面随附的日志。

我们使用 的是 isl7998x、它仅支持 UYVY8_ 2x8. 但是、它会自动链接到仅支持 UYVY8_的 cdns_csi2rx 1x16

我已修改 isl7998x 驱动程序以报告不正确的格式、以便打开流、但这当然会导致图像出现乱码。

链接这两种不匹配的焊盘格式的正确方法是什么?

media-ctl -d /dev/media1 -p
Media controller API version 6.6.44

Media device information
------------------------
driver          j721e-csi2rx
model           TI-CSI2RX
serial
bus info        platform:30122000.ticsi2rx
hw revision     0x1
driver version  6.6.44

Device topology
- entity 1: 30122000.ticsi2rx (5 pads, 5 links, 1 route)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev0
        routes:
                0/0 -> 1/0 [ACTIVE]
        pad0: Sink
                [stream:0 fmt:UYVY8_1X16/720x480 field:none]
                <- "cdns_csi2rx.30121000.csi-bridge":1 [ENABLED,IMMUTABLE]
        pad1: Source
                [stream:0 fmt:UYVY8_1X16/720x480 field:none]
                -> "30122000.ticsi2rx context 0":0 [ENABLED,IMMUTABLE]
        pad2: Source
                -> "30122000.ticsi2rx context 1":0 [ENABLED,IMMUTABLE]
        pad3: Source
                -> "30122000.ticsi2rx context 2":0 [ENABLED,IMMUTABLE]
        pad4: Source
                -> "30122000.ticsi2rx context 3":0 [ENABLED,IMMUTABLE]

- entity 7: cdns_csi2rx.30121000.csi-bridge (5 pads, 2 links, 1 route)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev1
        routes:
                0/0 -> 1/0 [ACTIVE]
        pad0: Sink
                [stream:0 fmt:UYVY8_1X16/720x480 field:none]
                <- "isl7998x 3-0044":0 [ENABLED,IMMUTABLE]
        pad1: Source
                [stream:0 fmt:UYVY8_1X16/720x480 field:none]
                -> "30122000.ticsi2rx":0 [ENABLED,IMMUTABLE]
        pad2: Source
        pad3: Source
        pad4: Source

- entity 13: isl7998x 3-0044 (5 pads, 1 link, 0 routes)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev2
        pad0: Source
                [stream:0 fmt:UYVY8_2X8/720x480 field:seq-bt]
                -> "cdns_csi2rx.30121000.csi-bridge":0 [ENABLED,IMMUTABLE]
        pad1: Sink
                [stream:0 fmt:UYVY8_2X8/720x480 field:seq-bt]
        pad2: Sink
                [stream:0 fmt:UYVY8_2X8/720x480 field:seq-bt]
        pad3: Sink
                [stream:0 fmt:UYVY8_2X8/720x480 field:seq-bt]
        pad4: Sink
                [stream:0 fmt:UYVY8_2X8/720x480 field:seq-bt]

- entity 23: 30122000.ticsi2rx context 0 (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video2
        pad0: Sink
                <- "30122000.ticsi2rx":1 [ENABLED,IMMUTABLE]

- entity 29: 30122000.ticsi2rx context 1 (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video3
        pad0: Sink
                <- "30122000.ticsi2rx":2 [ENABLED,IMMUTABLE]

- entity 35: 30122000.ticsi2rx context 2 (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video4
        pad0: Sink
                <- "30122000.ticsi2rx":3 [ENABLED,IMMUTABLE]

- entity 41: 30122000.ticsi2rx context 3 (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video5
        pad0: Sink
                <- "30122000.ticsi2rx":4 [ENABLED,IMMUTABLE]

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

    尊敬的 Evan:

    很遗憾、我们不支持 UYVY8_2X8。  很遗憾、我们不支持 UYVY8_2X8。  CSI 是串行总线、但  UYVY8_2X8是并行总线的格式。

    您需要更改传感器、或 编辑传感器驱动程序以支持 UYVY8_1x16。

    此致、
    Jared

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

    您好 Jared、

    该 ISL 器件具有 CSI_CLK、CSI_D0、CSI_D1。
    我们是否应该在每个 D0上获得1个摄像头流、在 D1上获得1个摄像头流?
    ISL 驱动程序可将 D0上的2个流和 D1上的2个流同时配置为4个流、因此我感到惊讶的是、TI 驱动程序不支持该流。
    这是一个巨大的困扰,因为我们希望一次访问所有4个流。

    通过将 ISL 芯片内每个通道的虚拟通道分配更改为0、我能够使所有4个通道同时在同一流中隔行流。 我的理解是、虚拟分配是 CSI 流的"虚拟通道字段"中的标签、因此 TI+Cadence 驱动程序似乎在一定程度上能够通过该虚拟分配选择性地忽略或包含数据、并且应该支持单组数据引脚上的多个流。

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

    尊敬的 Evan:

    这是一个巨大的问题、因为我们希望一次访问所有4个流。
    [/报价]

    格式问题 是一个单独的问题。 原因可在这篇文章中找到: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1388645/am625-camera-porting-to-ti-am625-09_02_01_10-sdk/5316476#5316476 

    CSI 驱动程序不应支持  UYVY8_2X8、因为 CSI 是串行总线、而不是并行总线。

    通过将 ISL 芯片内每个信道的虚拟信道分配更改为0、我能够使所有4个通道同时在同一流中隔行传输。 我的理解是、虚拟分配是 CSI 流的"虚拟通道字段"中的标签、因此 TI+Cadence 驱动程序似乎在一定程度上能够通过该虚拟分配选择性地忽略或包含数据、并且应该支持单组数据引脚上的多个流。

    CSI2RX 模块能够处理多达16个虚拟通道(部分 MIPI CSI-2 v2.0功能)、因此能够处理2条数据线上交错的4个流。

    此致、
    Jared

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

    您好 Jared、

    感谢您提供此链接。 也许我应该修改 ISL 驱动程序以支持1x16?

    如果数据实际上是格式化的2X8、我是否需要修改芯片上的寄存器设置才能更改它?

    或者我是否可以在设备树中更改设置?

    仅供参考、我尝试修改 CSI 驱动程序以重新添加对2X8的支持、映像看起来与我将 ISL 驱动程序设置为1x16时相同。
    在480条线中、只消耗了大约一半的电流。 我必须启用"伪 帧模式"、才能使图像也在每帧的相同位置开始。
    这可能是隔行问题吗? 缺少一半的行?

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

    尊敬的 Evan:

    [报价 userid="367881" url="~/support/processors-group/processors/f/processors-forum/1521155/am67-how-to-link-media-ctl-pad-with-mismatched-media_bus_fmt/5848199 #5848199"]

    也许我应该修改 ISL 驱动程序以支持1x16?

    如果数据实际上是格式化的2X8、我是否需要修改芯片上的寄存器设置才能更改它?

    [/报价]

     由于 CSI 本身是串行的、因此 isl7998x 的 UYVY8_2X8和 UYVY8_1x16之间可能没有区别。 如果有、那么 isl7998x 中应该有一个可以控制格式的寄存器。

    您可以查看 https://docs.kernel.org/userspace-api/media/v4l/subdev-formats.html 以了解格式的数据组织方案。

    在480行中、仅绘制了大约一半。 我必须启用"伪 帧模式"、才能使图像也在每帧的相同位置开始。
    这可能是隔行问题吗? 缺少一半行?

    什么是伪帧模式? 这可能是图像格式的问题、但如果是、它可能会下降一半的宽度、而不是下降高度。 您能否发送错误图像的图像?

    此致、
    Jared

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

    您好 Jared、

    请参阅随附的图像。

    我尝试了  从驱动程序内设置 V4L2_FIELD_EX隔 行扫描和 V4L2_FIELD_BROLING_BT、但它们似乎没有任何区别。 可能是因为 CSI 驱动程序没有使用它们或转发它们? 我看到去隔行可能会在"M2M-deinterlace"中完成、但我在 media-ctrl pipline 中没有这样做、所以我认为这不会发生?

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

    尊敬的 Evan:

    我已尝试  从驱动程序中设置 V4L2_FIELD_BROLING_BROLING_BT 和 V4L2_FIED_BROLING_BT、但它们似乎没有什么区别。

    为什么需要设置  V4L2_FIELD_BROLOG_B隔 行或 V4L2_FIELD_BROLING_BT? 视频是否隔行?

    数据应在2条数据线上作为4个虚拟通道输入。 CSI2RX IP 将为每个虚拟通道提供单独的 DMA 部分、 isl7998x 驱动程序需要为每个虚拟通道创建4个焊盘。

    我看到去隔行可能在"M2M-deinterlace"中完成、但我在 media-ctrl pipline 中没有、所以我认为不会发生这种情况?

    为什么您需要存储器到存储器去隔行?


    我想您会混淆虚拟通道、串行与并行总线以及 V4L2隔行。

    您能否先尝试调试一个 视频流、然后逐渐增加从其中提取数据的摄像头数量?


    此外、该主题已偏离主题。 原始问题/答案是否、CSI2RX 驱动程序不支持也不应该支持 UYVY8_2X8。 当主题结束时、我将关闭主题。

    要继续调试、您能否打开新线程?

    此致、
    Jared

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

    您好 Jared、

    当然、我将打开另一个 TT 尝试解决潜在问题。

    我怀疑隔行的原因是 NXP 驱动程序为此芯片设置了隔行标志、并不得不为其 CSI 驱动程序添加特殊处理。

    如果可能、我倾向于使用本地支持的驱动程序。
    另外,在查看你发送的链接后,它看起来仍然像某种隔行问题对我来说,是一个"现场订单"的问题。

    另请注意函数 ti_csi2rx_try_fmt_vid_cap 表示不支持隔行扫描格式。

    谢谢!

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

    尊敬的 Evan:

    谢谢你。

    此致、
    Jared

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

    您好 Jared、

    还有一条评论。 我真的很喜欢你建议和设置流只1通道(D0)和1流(摄像机输入1)
    我得到2份相同的图像像在新的票证,有点像在字段顺序的顶部/底部。
    看起来它没有合并成一个图像。

    谢谢

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

    尊敬的 Evan:

    谢谢、我将在新主题中继续这一工作。

    此致、
    Jared