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-TDA4VM:SK-TDA4VM+融合板+IMX390 i2c 错误

Guru**** 2550420 points
Other Parts Discussed in Thread: PCA9538

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1553930/sk-tda4vm-sk-tda4vm-fusion-board-imx390-i2c-errors

器件型号:SK-TDA4VM
主题中讨论的其他器件:PCA9538

工具/软件:

我有一个 J721EXSKG01EVM 连接到 EVM577PFUSION、并连接到其零端口 I 连接到 D3CMC74N-106-085-S
根据 这里提供的指南 、我下载了 Edge AI SDK 8.2、将其写入 SD 卡、根据指南的第 2 点替换了 DTS、最终检测到融合板、串行器似乎也正常、但视频传感器本身不响应 i2c 请求、因此其初始化失败。 以下是系统日志的一部分:

[    7.664274] ds90ub960 8-0036: Successfully probed (rev/mask 40)
[    7.872756] ds90ub960 8-003d: Successfully probed (rev/mask 40)
...
[   10.568615] ds90ub953 8-0044: Found rev 2, mask 0
[   10.579265] imx390 10-0021: inck rate: 27000000 Hz
[   10.624362] imx390 10-0021: imx390_read: failed to read reg 0x0330: -121
[   10.631136] imx390: probe of 10-0021 failed with error -121
[   10.953166] ds90ub960 8-003d: RX0 STS2 error: 0xc
[   10.957891] ds90ub960 8-003d: RX0 CSI error: 0x2


以下是我添加到 uenv.txt 文件中的内容:
name_overlays=k3-j721e-edgeai-apps.dtbo k3-j721e-sk-fpdlink-fusion.dtbo k3-j721e-cpb-fpdlink-imx390-cm-0-0.dtbo


摄像机已连接到端口#0、如果我将其连接到任何其他端口、则会收到串行器初始化错误、因此配置似乎正确、但我无法理解为什么摄像机无法工作。

任何人都能告诉我在哪里犯了错误吗?
谢谢。

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

    您好、

    我已将您的问题分配给能够 解决您的问题的专家。

    谢谢、

    Neehar

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

    您好、

    摄像头在运行 i2cdetect 时是否枚举?

    此致、
    Jared

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

    您好、

    不、我看不到摄像头可访问。 也许它有某种非标准地址?
    此致、
    Ihor Starnavskyi

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

    尊敬的  Ihor Starnavskyi:

    如果摄像头未出现在任何 I2C 线路上、则电路板和摄像头之间的连接可能存在一些问题。

    可能是融合板未正确接通电源、或者摄像头连接松散?

    此致、
    Jared

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

    您好  Jared

    我已经检查了几次连接,尝试了另一个相机(我有 2 个相同的相机),并检查了熔融板的电源.
    我可以在融合板上看到 LED 指示灯、也可以在 dmesg 中成功检测到 LED 指示灯。 我使用套件随附的完整 12V 电源。
    假设在总线上也检测到 ub953 串行器并且它位于摄像头中、则电缆连接正确。
    在写信给论坛之前、我已经尝试了所有可能的简单解决办法。 在找到该摄像头的启动指南之前、我曾在一个最新的 SDK 版本上试用过、该版本不需要更改 DTB,但问题是相同的 — 视频传感器无法通过 I2C 访问。
    我认为驱动器可能存在问题、可能视频传感器无法正确接收 XCLR/RESET 等信号、或者 CLK 或直接与视频传感器本身的电源存在问题。

    此致、
    Ihor Starnavskyi

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

    尊敬的  Ihor Starnavskyi:

    如果其他每个元件在 I2C 线路上进行枚举、则我假设传感器的电源本身存在某种问题。

    您的传感器是否有探测点?

    此致、
    Jared

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

    您好  Jared

    我的传感器位于 D3CMC74N-106-085-S 摄像头内、此摄像头具有闭合外壳、外部我看不到任何可用于探测的触点。 我有两个这样的相机,我已经尝试了另一个,问题是相同的。 您能否确认我的 D3CMC74N-106-085-S 摄像头是否受 J721EXSKG01EVM + EVM577PFUSION 套件和 Edge AI SDK 8.2 的支持?

    此致、
    Ihor Starnavskyi

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

    尊敬的 Ihor Starnavskyi:

    但尚未经过测试。 Vision Apps 不支持此功能: https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/08_02_00_05/exports/docs/imaging/imaging_release_notes.html 

    尽管假设通过 Linux 驱动程序支持它、但应该没有问题。

    此外、您是否可以迁移到 SDK 11.0?

    此致、
    Jared

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

    您好  Jared

    是的、我会尝试它在 SDK 11.0 上的工作原理、并告知您结果。

    此致、
    Ihor Starnavskyi

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

    尊敬的 Ihor Starnavskyi:

    如有任何更新、请告知我。

    此致、
    Jared

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

    您好  Jared

    我尝试了 SDK 11.0、但没有带来显著的成功、下面是系统日志:

    [   10.144845] ds90ub960 6-0036: supply vddio not found, using dummy regulator
    [   10.180374] ds90ub960 6-003d: supply vddio not found, using dummy regulator
    [   11.771731] ds90ub953 6-0044: Found ub953 rev/mask 0x20
    ...
    [   12.405702] imx390 10-0021: inck rate: 27027027 Hz
    [   12.451066] imx390 10-0021: imx390_read: failed to read reg 0x0330: -121
    [   12.491666] imx390 10-0021: probe with driver imx390 failed with error -121


    另外、我就这个问题联系了 D3 并收到了一些提示:
    “如果这是 TI 或其他供应商提供的通用 IMX390 驱动程序/器件树(未专门针对 D3 摄像头进行编码)、则我们的硬件布局与典型摄像头相比略有差异。 在串行器侧、I2C 地址 0x70(7 位)处有一个 PCA9538 GPIO 扩展器、用于控制传感器的复位 GPIO。 下面是我们 NVIDIA Jetson 支持包中的器件树示例、可让您了解连接情况(我们在此平台上提供定制的 FPD 驱动器,以便器件树不同):

    serializer {
    
          compatible = "d3,ub953";
    
          status = "okay";
    
          physical-addr = <0x18>;
    
          /* reg is carrier-board specific and is set by d3-ser-fpd-stub */
    
     
    
          gpio-line-names = \
    
                "EXP_INTERRUPT",
    
                "IMG_STROBE",
    
                "IMG_SHUTTER",
    
                "IMG_VSYNC";
    
    };
    
     
    eeprom {
    
          status = "okay";
    
          compatible = "st,24c64", "atmel,24c64";
    
          physical-addr = <0x54>;
    
          /* reg is carrier-board specific and is set by d3-ser-fpd-stub */
    
     
    
          label = "d3cm_eeprom";
    
          pagesize = <32>;
    
          read-only;
    
    };
    
     
    example_expander: expander {
    
          status = "okay";
    
          compatible = "nxp,pca9538";
    
          physical-addr = <0x70>;
    
          /* reg is carrier-board specific and is set by d3-ser-fpd-stub */
    
     
    
          gpio-controller;
    
          #gpio-cells = <2>;
    
     
    
          gpio-line-names = \
    
                "IMG_RST",
    
                "IMG_ERR0",
    
                "IMG_ERR1",
    
                "IMG_GPI_0",
    
                "IMG_GPI_1";
    
    };
    

     
    您还需要编辑/添加`reset-gpioes =<&example_expander 0 gpio_active_high>;`等内容到图像传感器的节点。 您可能应该使用 reg、而不是 physical-addr、但我再次不确定 TI 平台如何在器件树中处理 FPD-Link。“

    这就是传感器在总线上不可用的原因、它的复位信号似乎总是使其保持在复位状态、因此不起作用。 我有点困惑、您能告诉我在哪里可以找到设备树源代码来尝试修改它们吗? 没有任何编译/构建指南吗?

    此致、
    Ihor Starnavskyi

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

    尊敬的 Ihor Starnavskyi:

    RESET GPIO 可在您正在用于 IMX390 的覆盖层内进行设置。 我假设您使用的是: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-fpdlink-imx390-cm-0-0.dtso?h=ti-linux-6.12.y 

    有关重新构建器件树文件的说明: https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-jacinto7/11_00_00_08/exports/docs/linux/Foundational_Components_Kernel_Users_Guide device.html#compiling-the-device-tree-binaries 

    此致、
    Jared

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

    您好  Jared

    谢谢你。 我成功编辑了 DTS。 现在摄像头可以正常工作。 不幸的是,由于某种原因,我无法在论坛上附加文件,所以我将它们上传到我的 GitHub 上,也许这对那些也想使用这个相机的人很有用。

    修改的源代码: https://github.com/SVL101/SK-TDA4VM-fusion-board-IMX390-D3CMC74N-106-085-S-/blob/main/k3-fpdlink-imx390-cm-0-0.dtso

    已编译的器件树二进制文件: https://github.com/SVL101/SK-TDA4VM-fusion-board-IMX390-D3CMC74N-106-085-S-/blob/main/k3-fpdlink-imx390-cm-0-0.dtbo

    我可以使用./app_edgeai.py ./configs/imx390_cam_example.yaml 成功看到图像、但如果不运行 AI 模型、我无法从摄像头输出图像、下面是我尝试使用 imx390_display.yaml 时得到的图像

    root@tda4vm-sk:/opt/edgeai-gst-apps/apps_python# ./app_edgeai.py ../configs/imx390_display.yaml 
    Traceback (most recent call last):
      File "/opt/edgeai-gst-apps/apps_python/./app_edgeai.py", line 67, in <module>
        main(sys.argv)
      File "/opt/edgeai-gst-apps/apps_python/./app_edgeai.py", line 46, in main
        demo = EdgeAIDemo(config)
               ^^^^^^^^^^^^^^^^^^
      File "/opt/edgeai-gst-apps/apps_python/edge_ai_class.py", line 90, in __init__
        model_config =  config["models"][model]
                        ~~~~~~~~~~~~~~~~^^^^^^^
    TypeError: 'NoneType' object is not subscriptable


    有人能告诉我如何从显示器上的摄像头获取图像吗? 我想评估最小延迟是多少。


    此致、
    Ihor Starnavskyi

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

    尊敬的  Ihor Starnavskyi:

    您可以编写自己的 Gstreamer 流水线。 类似于以下内容:

    gst-launch-1.0 v4l2src device=/dev/video2 io-mode=dmabuf-import ! \
      video/x-bayer, width=3840, height=2160, framerate=60/1, format=rggb10 ! \
      tiovxisp sink_0::device=/dev/v4l-subdev2 \
      sensor-name="SENSOR_SONY_IMX678_LI" \
      dcc-isp-file=/opt/imaging/imx678_3840x2160_raw10/linear/dcc_viss.bin \
      sink_0::dcc-2a-file=/opt/imaging/imx678_3840x2160_raw10/linear/dcc_2a.bin format-msb=9 ! \
      video/x-raw, format=NV12, width=3840, height=2160, framerate=60/1 ! \
      kmssink driver-name=tidss sync=false

    您可能需要执行部分中的步骤  5 传感器软件集成   《AM6xA ISP 调优指南》

    此致、
    Jared

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

    您好  Jared

    谢谢你。 我能够使用以下命令运行视频:

    gst-launch-1.0 v4l2src device=/dev/video-imx390-cam0 io-mode=dmabuf-import ! \
      video/x-bayer, width=1936, height=1100, framerate=30/1, format=rggb12 ! \
      tiovxisp sink_0::device=/dev/v4l-imx390-subdev0 \
      sensor-name="SENSOR_SONY_IMX390_UB953_D3" \
      dcc-isp-file=/opt/imaging/imx390/linear/dcc_viss.bin \
      sink_0::dcc-2a-file=/opt/imaging/imx390/linear/dcc_2a.bin format-msb=11 ! \
      video/x-raw, format=NV12 ! \
      kmssink driver-name=tidss sync=false


    此致、
    Ihor Starnavskyi