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.

[参考译文] SK-AM62P-LP:将 FPGA CSI-2 Tx 连接到 AM62P CSI-2 Rx 以实现 2560x1024 @ 50fps (24bpp)-器件树和放大器;内核配置帮助

Guru**** 2439560 points
Other Parts Discussed in Thread: SK-AM62P-LP, AM62P

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1526464/sk-am62p-lp-connecting-fpga-csi-2-tx-to-am62p-csi-2-rx-for-2560x1024-50fps-24bpp---device-tree-kernel-config-help

器件型号:SK-AM62P-LP
主题: AM62P 中讨论的其他器件

工具/软件:

大家好:

我正在使用 SK-AM62P-LP 开发套件、并使用提供的“k3-am62x-sk-csi2-imx219.dtso"叠加“叠加层成功测试了 IMX219 摄像头。

我正在尝试将用作 CSI-2 发送器 (Tx) 内核的 FPGA 与 AM62P 的 CSI-2 接收器 (Rx) 接口集成。 我的目标是以分辨率从 FPGA 接收视频数据 2560x1024、24 位/像素 (bpp) 和 50 帧/秒 (fps)

我知道这需要修改特定的设备树、还可能需要进行内核配置。 我一直在研究现有的摄像头叠加层以获得指导、但针对定制 FPGA CSI-2 Tx(可能没有标准传感器等 I2C 控制接口)进行调整颇具挑战性。

任何人都能提供有关此设置所需的设备树修改和/或内核配置的详细指导吗?

具体而言、我正在寻找:

  1. 设备树覆盖 (.dtso) 示例: 器件树节点的模板或详细说明、描述了表示 FPGA CSI-2 Tx 的“虚拟“传感器并将其连接到 AM62P 的 CSI-2 Rx。 这应该包括分辨率、像素格式(24bpp、可能为 RGB888 或类似格式)的属性、理想情况下还包括有关使用全部 4 个 CSI-2 数据通道的信息。
  2. 相关内核配置: CONFIG_VIDEO_CADENCE_CSI2RX需要启用或验证的任何特定内核选项(例如)、以使 CSI-2 接收器能够与自定义源正常工作。
  3. 数据速率注意事项: 确认可由 AM62P 的 4 通道 CSI-2 Rx 处理 2560x1024 @ 50fps (24bpp(约 3.145Gbps))、并且需要注意任何特定设置或限制。

此外、如果我的 FPGA CSI-2 Tx IP 内核存在阻止其在单个流中支持完整 2560x1024 分辨率的限制、您能否建议一种替代方法以两个摄像头数据流(例如,两个 1280x1024 流)的形式接收该数据? 考虑到 AM62P 通常具有一个 CSI-2 Rx 控制器、我对如何在该端处理该问题特别感兴趣。 这是否会涉及 FPGA 的 MIPI CSI-2 虚拟通道、以及该如何反映在器件树和 V4L2 框架中?

任何见解、代码片段或指向相关文档的指针都将非常感谢!

提前感谢您!

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

    您好:

    第一个问题实际上取决于您的 FPGA CSI-2 Tx 及其驱动程序。 分辨率和像素格式应在驱动程序中指定、而不是在设备树中指定。  请查看 IMX219 驱动程序和设备树叠加层以供参考。

    对于第二个问题、只要 FPGA 发送 MIPI CSI-2 格式的数据、就无需对内核配置进行任何更改。

    是的、  AM62P 可处理 2560x1024 @ 50fps (24bpp(约 3.145Gbps))、支持每通道高达 2.5Gbps(4 个通道)。

    您能建议一种替代方法来接收这两个摄像机数据流(例如两个 1280x1024 流)吗?

    如果您的 FPGA IP 支持虚拟通道、您可以通过 2 个虚拟通道发送两个流。

    此致、

    建中

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

    您好、建中、

    感谢您的迅速回应和宝贵见解。

    感谢 AM62P 的 4 通道 CSI-2 Rx 能够在 24bpp(约 3.145Gbps)下处理 2560x1024 @ 50fps 的数据速率、这对于我们计划的设置来说是一个好消息。 此外、最好了解、只要 FPGA 输出标准 MIPI CSI-2、通用内核配置就不需要更改。

    关于我关于器件树和驱动程序的第一个问题、我知道分辨率和像素格式通常在传感器的驱动程序中定义。 我面临的挑战源于这是一个定制 FPGA CSI-2 Tx、而不是具有现有 Linux 驱动程序和 I2C 控制接口的标准摄像头传感器。 实际上、我们正在尝试在器件树中定义一个“虚拟“传感器来表示 FPGA 的输出、然后该输出将被 AM62P 的 CSI-2 Rx “接收“。

    虽然 IMX219 驱动程序和 overlay 有助于了解现有摄像头集成、但它们依靠 I2C 接口来配置传感器。 对于作为 CSI-2 Tx 的 FPGA、不会以相同的方式从 AM62P 侧进行 I2C 控制。

    因此、我希望就如何为此类“无头“或“虚拟“CSI-2 源构建器件树节点提供更具体的指导。 这将涉及:

    • 如何在器件树本身中定义固定参数(如分辨率,像素格式,通道数)或最小“虚拟“驱动程序、因为没有 I2C 控制循环。
    • 器件树中哪些重要属性对于将此虚拟传感器正确连接到 AM62P 上的 Cadence CSI-2 Rx 块至关重要。
    • 在处理 FPGA 等持续流式、不可配置的源时、AM62P 的 CSI-2 接收器的任何具体细节或最佳实践。

    此外、关于虚拟通道的使用、感谢您确认 AM62P 支持通过 MIPI CSI-2 虚拟通道接收两个流(如果 FPGA 支持)。 您能详细说明一下如何在中反映这一点 驱动程序版本、会如何在 V4L2 框架内执行? 具体而言、我们是否会看到两个单独的 V4L2 视频节点(例如,和)/dev/video0/dev/video1、或者是否会以不同的方式处理? 有关配置 AM62P 的 CSI-2 Rx 以识别和处理多个虚拟通道的任何器件树片段或指针都将非常有用。

    我们正在寻找有关为 FPGA 等定制非标准 CSI-2 源设置 AM62P 的接收器端的更详细示例或概念指导、尤其是此类场景的器件树配置和虚拟通道的处理。

    再次感谢您的持续支持。

    此致、

    Narendra Kumar Reddy

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我面临的挑战源于一个定制 FPGA CSI-2 Tx、而不是具有现有 Linux 驱动程序和 I2C 控制接口的标准摄像头传感器。 我们实际上在尝试在设备树中定义一个“虚拟“传感器来表示 FPGA 的输出、然后该输出将被 AM62P 的 CSI-2 Rx “接收“。

    您可以做的是为 FPGA CSI-2 Tx 器件实施虚拟传感器驱动程序。 此驱动程序可以指定传感器参数、例如数据格式、分辨率、虚拟通道 ID 等 您可以使用 IMX219 驱动程序作为模板、删除所有 I2C 读取/写入函数调用。 此驱动程序会 将您的虚拟传感器注册到 V4L2 框架、方式与普通传感器(如 IMX219)相同。 然后、您可以使用 v4l2 框架构建应用程序。

    唯一的问题是、当在 CSI Rx 端开始进行流式传输时、虚拟驱动程序无法与 FPGA 器件通信。  我假设您可以控制 FPGA 器件并开始通过某种机制发送数据。  如果是这种情况、您可以开始在 FPGA 上发送数据、然后开始 在 CSI Rx 端进行流式传输操作。 以下是该方案的运行序列:

    1.虚拟传感器通过虚拟驱动程序进行探测,与 IMX219 探针相同,即使没有与 FPGA 设备的通信

    2.控制 FPGA 并开始发送数据

    3.开始在 CSI Rx 端接收,例如,使用 v4l2-ctl 或 yavta 捕获数据。

    此致、

    建中

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

    您好:徐建中、

    继之前的讨论之后、我们取得了良好的进展! 我们现在通过注册虚拟传感器节点(模拟)成功地从我们的 FPGA CSI IP 核心接收 CSI 数据imx219

    我们一直使用双显示器设置(每个 1280x1024 @60Hz)使用色条测试模式进行测试。 以下是我们对不同 GStreamer 命令和配置的观察结果:

    测试观察结果和命令:

    我们使用了以下 GStreamer 命令:

    • gst-launch-1.0 v4l2src="/dev/video2" ! video/x-raw, format=BGRx, width=2560, height=1024 ! fpsdisplaysink video-sink=waylandsink sync=true

    • gst-launch-1.0 v4l2src="/dev/video2" ! video/x-raw, format=BGRx, width=2560, height=1024 ! fpsdisplaysink video-sink=waylandsink sync=false

    以下是我们的结果摘要:

    分辨率  格式  通道  LANERate    应  观察到  DisplaySink     SYNC  下降
    --------------------------------------------------------------------------------------------------------------------------------------------------

    2560x1024  RGB     2.     800Mbps/通道    25.2 FPS 22FPS        waylandsink     真   2 FPS
    2560x1024  RGB     4.     800Mbps/信道    36FPS      32 FPS     waylandsink     真  2 FPS
    2560x1024  RGB     2.     1.5Gbps/通道      46 FPS     2 FPS     waylandsink      真   随机
    2560x1024  RGB     4.     1.5Gbps/通道     92 FPS     2 FPS     waylandsink       真   随机

    2560x1024  RGB     2.     800Mbps/通道  25.2 FPS   25 FPS     waylandsink     错误  -
    2560x1024  RGB     4.     800Mbps/信道  36FPS     35 FPS     waylandsink     错误  -
    2560x1024  RGB     2.     1.5Gbps/通道  46FPS      41 FPS     waylandsink     错误  -
    2560x1024  RGB     4.     1.5Gbps/通道  92FPS      41 FPS     waylandsink     错误  -

    根据我们前面的讨论、AM62P 的 CSI-2 Rx 预计处理每通道高达 2.5Gbps 的速率、这应该可以满足我们在 24bpp 下 2560x1024 @ 50fps 的目标(总速率约为 3.145Gbps)。 我们还通过连接到 FPGA CSI-2 Rx IP 内核的外部环回验证了 FPGA CSI-2 Tx IP 内核、确认其正确传输数据并实现预期的 FPS。

    我们当前的问题:

    1. 鉴于 AM62P 的既定功能、为什么 SK-AM62P-LP 上 2560x1024 RGB 无法实现 50 FPS、尤其是在sync=true

    2. 为了达到目标 FPS、我们是否应该探索任何特定的 GStreamer 命令变更或其他配置?

    3. 通常情况下、继续使用sync=false模式以实现观察到的更高 FPS 是可取的还是可以接受的、或者这是否会导致生产环境中的其他问题?

    如有任何进一步的见解或建议、我们将不胜感激!

    此致、

    Narendra Kumar Reddy

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

    你好、 Narendra Kumar Reddy、

    很抱歉我迟到的回复。 我在过去的两周里出去了。

    您能尝试几件事情来缩小导致帧跌落的原因吗?

    1.使用 fakesink 而不是 waylandsink ,看看你是否可以得到所需的 fps

    2.使用 yavta 或 v4l2-ctl 捕获并 查看您是否可以获得所需的 fps

    谢谢你。

    建中

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

    您好、建中、

    谢谢你回到我身边,不用担心反应迟来!

    我已经执行了您建议使用fakesinkyavta/v4l2-ctl来缩小帧跌落原因的测试。 fakesink下面详细介绍了的结果、yavta日志反映了类似的结果(单独附上)。


    Fakesink 测试结果

    测试命令:

    • gst-launch-1.0 v4l2src="/dev/video2" ! video/x-raw, format=BGRx, width=2560, height=1024 ! fpsdisplaysink video-sink=fakesink sync=true

    • gst-launch-1.0 v4l2src="/dev/video2" ! video/x-raw, format=BGRx, width=2560, height=1024 ! fpsdisplaysink video-sink=fakesink sync=false

    效率较低 详细信息 通道数 LaneRate 预期 FPS 观察到的 FPS 显示链接 同步 漏液
    2560x1024 RGB 2. 800Mbps/通道 25.2 FPS 25.14 FPS fakesink -
    2560x1024 RGB 4. 800Mbps/通道 36 FPS 未定 fakesink -
    2560x1024 RGB 2. 1.5Gbps/通道 46 FPS 38.67 FPS fakesink -
    2560x1024 RGB 4. 1.5Gbps/通道 92 FPS 未定 fakesink -
    2560x1024 RGB 2. 800Mbps/通道 25.2 FPS 25.05 FPS fakesink 错误 -
    2560x1024 RGB 4. 800Mbps/通道 36 FPS 未定 fakesink 错误 -
    2560x1024 RGB 2. 1.5Gbps/通道 46 FPS 41.42 FPS fakesink 错误 -
    2560x1024 RGB 4. 1.5Gbps/通道 92 FPS 未定 fakesink 错误 -
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的。 因此、通道数和数据速率有 4 种组合:(2800)、(4800)、(2、 15000)、(415000)。

    您如何在 FPGA CSI Tx 中配置它们、以及如何在 AM62P 接收端配置它们?

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

    您好、

    需要检查的几个事项:

    1.您需要像 IMX219 叠加层一样在传感器设备树中配置链路频率 (MHz) 参数: git.ti.com/.../k3-am62x-sk-csi2-imx219.dtso

    此参数传递给 CSI Rx 驱动程序以配置 D-PHY 通道速度 (Mbps): git.ti.com/.../cdns-csi2rx.c

    然后、DPHY Rx 驱动器获取频率并乘以 2 以更改为 Mbps - https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/phy/cadence/cdns-dphy-rx.c?h=ti-linux-6.6.y#n108

    最后、DPHY Rx 驱动器配置频带控制寄存器(对于通道速度)- https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/phy/cadence/cdns-dphy-rx.c?h=ti-linux-6.6.y#n190

    因此要使用 1.5Gbps、需要将链路频率设置为 750MHz。 您可以检查寄存器 0x30110B00 以验证通道速度是否正确配置:

    位 4:0 的值应与该表的索引相对应: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/phy/cadence/cdns-dphy-rx.c?h=ti-linux-6.6.y#n72

    2.当您以 1.5Gbps 的速率发送 CSI 数据时,您需要将发送器配置为发送校正序列,以便接收器能够校准自身以做好接收数据的准备。

    此致、

    建中