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-AM69:AM69 CSI-2 RX 捕获在连续时钟模式下失败

Guru**** 2794715 points

Other Parts Discussed in Thread: SK-AM69, AM69

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1614429/sk-am69-am69-csi-2-rx-capture-fails-in-continuous-clock-mode

器件型号: SK-AM69
Thread 中讨论的其他器件: AM69TDA4VH

您好、

我们正在使用连接到 SK-AM69 平台的自定义 MIPI CSI-2 数据源(在本例中为 FPGA)。 当 FPGA 配置为在连续时钟模式下发送数据时、我们无法在 AM69 CSI 接收器上捕获任何数据。

但是、我们已经确认捕获流水线和驱动程序工作正常、因为当 FPGA 配置为以不连续时钟模式进行传输时、我们能够成功接收数据。

过去、我们在启动 RGB 摄像头传感器时遇到了类似的问题、解决方案是在启动流时切换 MIPI 相关寄存器(连续时钟模式设置)、以触发 LP->HS 转换、从而使 CSI 接收器可以检测活动并开始捕获。

我的问题是:

是否有方法可以修改或配置 ti-processor-sdk-linux-AM69-SK-11_00_10-01 中的捕获子系统、以便 AM69 CSI-2 接收器可以在连续时钟模式下捕获数据、而无需时钟转换或切换事件来进行活动检测?

非常感谢任何指导或建议的配置。

提前感谢。

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

    您好、Jose、

    您能否说明正在运行的完整管道? FPGA 是直接连接到 CSI RX 还是通过解串器连接? CSI2 接收器不应需要任何特定配置。

    作为基本测试、您是否可以发送以下 CSI 寄存器的值:

    INFO_IRQ 0x301020
    ERROR_IRQ 0x30101028
    stream0_status 0x30101104
    DPHY_STATUS 0x30101048

    此致、
    Jay

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

    尊敬的 Jay:

    感谢您的答复。

    关于流水线、FPGA 直接连接到 CSI RX 端口(中间没有解串器)。

    我使用以下 media-ctl 命令配置分辨率:

    media-ctl -d "$MEDIA" -V "\"iwr6843aop spi1.0\":0 [fmt:SGBRG8_1X8/${WIDTH}x${HEIGHT}]"
    media-ctl -d "$MEDIA" -V "\"cdns_csi2rx.4504000.csi-bridge\":0[fmt:SGBRG8_1X8/${WIDTH}x${HEIGHT}]"
    media-ctl -d "$MEDIA" -V "\"4500000.ticsi2rx\":0[fmt:SGBRG8_1X8/${WIDTH}x${HEIGHT}]"

    然后、我开始使用以下内容进行流式传输:

    v4l2-ctl --device "$VIDEO" --set-fmt-video=width="$WIDTH",height="$HEIGHT",pixelformat='GBRG' --stream-mmap

    当 FPGA 以不连续模式发送 MIPI 数据时、同样的流水线工作正常。

    对于寄存器转储、在 SK-AM69 上、CSI2RX 基地址看起来是0x04500000(来自)/proc/iomem、因此我会在流运行时读取等效偏移量。

    我能够成功读取以下寄存器:

    info_irqs      (0x04500020): 0x8020002A
    error_irqs (0x04500028): 0x00000000
    dphy_status (0x04500048): 0x00000000

    但是、尝试读取stream0_status偏移量0x1104 (0x04501104) 会导致系统在 devmem2 访问期间挂起、即使流媒体处于活动状态、因此我无法安全地检索该值。

    请告诉我、是否有基于驱动器的更优方法stream0_status在 AM69 上访问、而不是直接/dev/mem读取。

    此致、
    Jose

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

    您好、Jose、

    您能解释一下连续时钟和非连续时钟之间的流水线发生了哪些变化吗? 我看到它正在接收一个长数据包(INFO_IRQ 寄存器的第 1 位)。 流水线的运行数据速率是多少?

    我将检查读取 stream0_status 可能导致问题的原因、并尝试尽快回复您。

    此致、
    Jay

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

    尊敬的 Jay:

    感谢您的更新。

    我没有对流水线、驱动程序或 DTB 进行任何更改。 唯一的变化是 FPGA 将 MIPI 数据发送到 SK-AM69 CSI 端口的模式(连续时钟与非连续时钟)。 媒体流水线配置和捕获命令完全相同。

    流水线以~31.5Mbps(8 位原始格式、不包括 CSI-2 开销)的近似有效载荷数据速率运行。 这与 FPGA 在不连续时钟模式下发送 MIPI 数据时正确采集数据的数据速率相同。

    如果您需要任何其他详细信息、例如通道数或 FPGA 时钟配置、请告诉我。

    此致、
    Jose

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

    您好、Jose、

    我意外共享了错误的寄存器地址。 同样的。 正确的地址为:

    INFO_IRQ: 0450 4020h
    ERROR_IRQ: 0450 4028h
    dphy_status: 0450 4048h
    stream0_status: 0450 4104h

    我认为流流水线本身没有问题。 你可以尝试从 yavta 流式传输如下:

    yavta -c -s "$WIDTH"x"$HEIGHT" -f SGBRG8 "$VIDEO"

    此致、
    Jay

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

    尊敬的 Jay:

    感谢您更正寄存器地址。

    yavta捕获成功开始:

    ~# yavta -c -s "${WIDTH}x${HEIGHT}" -f SGBRG8 "$VIDEO"
    Device /dev/video4 opened.
    Device `j721e-csi2rx' on `platform:4500000.ticsi2rx' (driver 'j721e-csi2rx') supports video, capture, without mplanes.
    Video format set: SGBRG8 (47524247) 2048x192 (stride 2048) field none buffer size 393216
    Video format: SGBRG8 (47524247) 2048x192 (stride 2048) field none buffer size 393216
    8 buffers requested.
    length: 393216 offset: 0 timestamp type/source: mono/EoF
    Buffer 0/0 mapped at address 0xffff999d0000.
    length: 393216 offset: 32768 timestamp type/source: mono/EoF
    Buffer 1/0 mapped at address 0xffff99970000.
    length: 393216 offset: 65536 timestamp type/source: mono/EoF
    Buffer 2/0 mapped at address 0xffff99910000.
    length: 393216 offset: 98304 timestamp type/source: mono/EoF
    Buffer 3/0 mapped at address 0xffff998b0000.
    length: 393216 offset: 131072 timestamp type/source: mono/EoF
    Buffer 4/0 mapped at address 0xffff99850000.
    length: 393216 offset: 163840 timestamp type/source: mono/EoF
    Buffer 5/0 mapped at address 0xffff997f0000.
    length: 393216 offset: 196608 timestamp type/source: mono/EoF
    Buffer 6/0 mapped at address 0xffff99790000.
    length: 393216 offset: 229376 timestamp type/source: mono/EoF
    Buffer 7/0 mapped at address 0xffff99730000.

    yavta运行时,我能够使用读取所有请求的 CSI 桥接寄存器devmem2:

    INFO_IRQ (0x04504020):0x00000000
    ERROR_IRQ (0x04504028):0x00000100
    DPHY_STATUS (0x04504048):0x00333306
    stream0_status (0x04504104):0x80000111

    请告诉我这些值是否表示有任何异常、或者您是否希望在连续和不连续时钟模式之间切换时捕获其他寄存器或日志。

    此致、
    Jose

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

    您好、Jose、

    是否可以修改或配置 ti-processor-sdk-linux-AM69-SK-11_00_10-01 中的捕获子系统、以便 AM69 CSI-2 接收器能够在连续时钟模式下捕获数据

    我认为 CSI-2 Rx 默认在连续时钟模式下运行。 我们测试的传感器都在默认连续模式下运行。 请参阅:

     1. https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/Documentation/devicetree/bindings/media/i2c/imx219.yaml?h=ti-linux-6.12.y#n102。clock-noncontinuous" 要在非连续时钟模式下运行传感器、您必须将“添加到传感器器件树叠加层中。

     2. https://github.com/torvalds/linux/blob/master/drivers/media/v4l2-core/v4l2-fwnode.c#L224

    我将再次与我们的硬件团队确认 CSI-2 Rx 端的默认时钟模式。

    此致、

    建中

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

    尊敬的 Xu:

    感谢您的答复。 我们的驱动器适用于非连续模式、但不适用于连续模式。 我看到默认模式是连续模式、但我甚至尝试在传感器器件树叠加层中添加“时钟连续“等内容、以强制其不起作用。

    此致、
    Jose

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

    您好、Jose、

    您是否可以检查 FPGA 发送的数据?

    stream0_status (0x04504104):0x80000111

    我看到 STREAM0_FSM 正在等待控制信号。 如果这样做、则可能是数据不正确。 您还可以看到、时钟非连续仅针对我们的器件树中的传感器完成。 我们根本不在 CSI 覆盖层中设置此项。 我仍然会在内部进行检查、并告诉您我是否有任何更新。

    此致、
    Jay

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

    尊敬的 Jay Goyal:

    您从哪里可以获得 SK-AM69 的这些寄存器地址? 以及如何解读结果?

    INFO_IRQ:0450 4020h
    ERROR_IRQ:0450 4028h
    dphy_status:0450 4048h
    stream0_status:0450 4104h

    此致、
    Jose

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

    您好、Jose、

    有关专家已离职。 请预计响应会延迟。

    此致、

    Yashraj

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

    您好、Jose、

    您可以在这里找到它们: https://www.ti.com/lit/zip/spruj52

    请查看 公共寄存器 Excel 中的 74_CSI_rx_if0 工作表。 它还将包含各种位域的说明。

    此致、
    Jay

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

    尊敬的 Jay:

    感谢您的回复、这个 zip 文件对您很有帮助。 此 zip 文件是否在任何 Texas Instruments 网页上公开提供? 我在网上搜索了这个网站、但找不到。 您能否将我指向引用此下载链接的页面?

    提前感谢。

    此致、
    Jose

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

    您好、Jose、

    您可以在此处查看 TDA4VH 的产品页面: https://www.ti.com/product/TDA4VH-Q1

    这是超集器件、但您可以通过 AM69 将寄存器用于常见子系统。

    此致、
    Jay