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.

[参考译文] TDA4AEN-Q1:在 EVM 开发板上练习视频流式传输和深度学习推理时遇到的问题

Guru**** 2434370 points
Other Parts Discussed in Thread: AM67A

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1540146/tda4aen-q1-problems-encountered-in-practicing-video-streaming-and-deep-learning-inference-on-evm-development-board

器件型号:TDA4VEN-Q1
主题中讨论的其他器件:AM67A

注意:此 e2e 问题标题的器件型号选择不正确。 我们实际上使用的是 TDA4VEN。

工具/软件:

下载 SDK 的 10.01 版(如附件图 1 所示)后、我们将 boot 和 tisdk tar.gz 包解压到 SD 卡的 boot 和 root 分区中、然后 通过 SD 模式启动 EVM 开发板。 连接到开发板的硬件包括一个 HDMI 监视器和一个 IMX219 摄像头(请参阅附件中的图 2)。 开发委员会成功启动、但出现了以下现象:
1.我们使用 GST 流水线测试了显示器,并报告了有关 DRM 的错误。 (流水线位于 GST 流水线中。 附件中的 TXT 文件、错误如附件的图 3 所示。)
2. IMX 相机未安装。 我们尝试运行 edgeai_tiovx_apps 中的 imx219 示例、并遇到一条指示摄像头器件不存在的错误消息(请参阅附件中的图 4)。


以下是我们的问题:
1.在官方 SDK 的基础上、我们需要做什么才能成功驱动 IMX 摄像头运行 edgeai_tiovx_apps 等深度学习演示? 在 AM62A 系列文档中、实现此目标的方法是在 uEnv.txt 中添加配置、但 TDA4AEN 文档中未找到类似的指南。
2.我们是否可以使用与 AM62A 系列类似的 GST 流水线从 v4l2src 插件获取 IMX 摄像头图像数据?
3.如何成功 drivee2e.ti.com/.../20250715_5F00_E2E.zip 的显示器使 kmssink 可用?

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

    您好、

    您需要加载 k3-j722s-evm-csi2-quad-rpi-cam-imx219.dtso。 将其添加到 uEnv.txt 中的 name_overlays 变量中。

    2. 我们是否可以使用与 AM62A 系列类似的 GST 流水线从 v4l2src 插件获取 IMX 摄像头图像数据?
    3.如何成功 drive20250715_E2E.zip 的显示使 kmssink 可用?[/报价]

    下面是示例流水线: https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-am67a/latest/exports/edgeai-docs/common/edgeai_dataflows.html 

    通过运行 kmsprint 并查看显示是否枚举来确保显示正常工作。

    如果其当前归 Weston 所有、请运行:

    $ systemctl stop weston

    此致、
    Jared

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

    您好  Jared、

    感谢您的回答、但我们已经这样做了。 我们的 uEnv。 TXT 文件当前包含以下内容:

    # This uEnv.txt file can contain additional environment settings that you
    # want to set in U-Boot at boot time.  This can be simple variables such
    # as the serverip or custom variables.  The format of this file is:
    #    variable=value
    # NOTE: This file will be evaluated after the bootcmd is run and the
    #       bootcmd must be set to load this file if it exists (this is the
    #       default on all newer U-Boot images.  This also means that some
    #       variables such as bootdelay cannot be changed by this file since
    #       it is not evaluated until the bootcmd is run.
    
    # Update the Linux hostname based on board_name
    # The SK also requires an additional dtbo to boot. Prepend it to name_overlays depending on board_name
    uenvcmd=if test "$board_name" = "am67-sk"; then ; setenv args_all $args_all systemd.hostname=am67a-sk ; fi
    
    # Setting the right U-Boot environment variables
    dorprocboot=1
    name_overlays=ti/k3-j722s-vision-apps.dtbo k3-j722s-evm-csi2-quad-rpi-cam-imx219.dtbo

    摄像头和 显示屏仍然不可用。 我们发现使用 AM67A EdgeAI SDK 是可行的。 但是、这在 TDA4VEN Liunx SDK 中是不可行的。

     我们在另一个 e2e 中发现了类似的问题:

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1491213/tda4ven-q1-failed-to-lock-all-rx-ports?keyMatch=tda4ven%20v4l2src&tisearch=universal_search

    这是否意味着 Linux SDK 中需要执行其他操作来启用摄像头和显示屏? 在  Linux SDK 的/opt/edgeai_tiovx_apps/configs/linux/imx219_cam.example.yaml 中、摄像头 安装为/dev/video-imx219-cam0 器件。 在 EdgeAI SDK 中、只需如前文所述修改 uEnv.txt。 我们目前感到困惑的是如何在 Linux SDK 上实现这一点。

    此致、

    Yangtian

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

    尊敬的 Yangtian:

    [引述 userid=“650736" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1540146/tda4aen-q1-problems-encountered-in-practicing-video-streaming-and-deep-learning-inference-on-evm-development-board/5925836

    摄像头和 显示屏仍然不可用。 我们发现使用 AM67A EdgeAI SDK 是可行的。 但是、这在 TDA4VEN Liunx SDK 中是不可行的。

    [/报价]

    摄像头和显示屏在两个 SDK 之间枚举应该没有区别。 两者之间的区别是 Linux SDK 不包含用于控制 ISP 的 tiovx gstreamer 插件。 您可以从摄像头流式传输原始数据、但不能使用 ISP。

    这是否意味着 Linux SDK 中需要执行其他操作来启用摄像头和显示屏? 在  Linux SDK 的/opt/edgeai_tiovx_apps/configs/linux/imx219_cam.example.yaml 中、摄像头 安装为/dev/video-imx219-cam0 器件。 在 EdgeAI SDK 中、只需如前文所述修改 uEnv.txt。 我们目前感到困惑的是如何在 Linux SDK 上实现这一点。

    应该会探测摄像机、您可以检查 dmesg 日志以确保已探测到摄像机。 它根本没有符号链接到/dev/video-imx219-cam0. 这是通过 EdgeAI SDK 中的 setup_cameras.sh 脚本完成的。 您仍然可以通过摄像机枚举的任何视频端口访问摄像机。

    我不知道你的问题是什么显示,你能运行 kmsprint 看看它是否枚举?

    此致、
    Jared

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

    您好  Jared、

    我在 demsg 中没有看到任何关于摄像机的信息、并且/dev/.下只有 video0、video1 和 video2
    关于显示器、我使用 kmsprint 命令获得了以下输出:

    root@j722s-evm:/opt/vision_apps# kmsprint
    terminate called after throwing an instance of 'std::runtime_error'
      what():  No modesetting DRM card found
    Aborted (core dumped)

    我还运行了以下 GST 流水线:

    gst-launch-1.0 videotestsrc pattern=ball  ! video/x-raw, format=NV12, width=640, height=480,framerate=30/1 ! videoscale ! video/x-raw, format=NV12, width=1920, height=1080,framerate=30/1 ! kmssink driver-name=tidss
    获得以下错误消息:

    root@j722s-evm:/opt/vision_apps# gst-launch-1.0 videotestsrc pattern=ball  ! video/x-raw, format=NV12, width=640, height=480,framerate=30/1 ! videoscale ! video/x-raw, format=NV12, width=1920, height=1080,framerate=30/1 ! kmssink driver-name=tidss
    Setting pipeline to PAUSED ...
    ERROR: from element /GstPipeline:pipeline0/GstKMSSink:kmssink0: Could not open DRM module tidss
    Additional debug info:
    /usr/src/debug/gstreamer1.0-plugins-bad/1.22.12/sys/kms/gstkmssink.c(1160): gst_kms_sink_start (): /GstPipeline:pipeline0/GstKMSSink:kmssink0:
    reason: No such file or directory (2)
    ERROR: pipeline doesn't want to preroll.
    ERROR: from element /GstPipeline:pipeline0/GstKMSSink:kmssink0: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure.
    Additional debug info:
    /usr/src/debug/gstreamer1.0/1.22.12/libs/gst/base/gstbasesink.c(5885): gst_base_sink_change_state (): /GstPipeline:pipeline0/GstKMSSink:kmssink0:
    Failed to start
    ERROR: pipeline doesn't want to preroll.
    Failed to set pipeline to PAUSED.
    Setting pipeline to NULL ...
    Freeing pipeline ...
    在 Linux SDK 和 RTOS 预构建 SDK 中、这就是结果。

    为?GST 流水线正常运行,我们应该做些什么

    此致、

    Yangtian

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

    尊敬的 Yangtian:

    这些错误意味着未枚举任何内容。 我假设 SD 卡的设置存在问题。

    现在、您是否可以使用以下映像刷写 SD 卡: https://dr-download.ti.com/software-development/software-development-kit-sdk/MD-NQjfZVt1aJ/11.00.00.08/tisdk-edgeai-image-j722s-evm.wic.xz 

    之后、检查屏幕是否正确枚举。 您可以使用 kmsprint 以及 ls /dev/dri 目录。

    为确保摄像头能够正常工作、您需要在 name_overlays 下向 uEnv.txt 添加正确的设备树叠加层。

    此致、
    Jared

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

    您好 Jared、

    感谢您的答复。

    是的、我以前试过这个 EdgeAI SDK、它确实可以在 Linux 下驱动摄像头并正常显示、这正是我们的预期。 我们目前正在评估 Linux+RTOS SDK 和 EdgeAI SDK。 我们要实现的功能包括一些 CMS 函数和 SRV 函数、官方提供的 SRV_demo 位于 RTOS SDK 中。 我们目前面临的问题是:
    1.我们更熟悉 EdgeAI SDK(GStreamer)的视频流解决方案、因此在 EdgeAI SDK 上更容易实现 CMS 功能。 但是、此 SDK 上没有 SRV 示例、因此我们不知道如何实现 SRV 功能。
    2. Linux+RTOS SDK 中有 SRV 示例、但其摄像头、监视器和其他一些驱动程序在 R5 内核程序中实现、视频流流水线通过 tiovx 编程实现。 我们不熟悉其视频流解决方案、并发现难以开发 CMS 功能。
    目前,我们有两个想法:
    1.考虑在 EdgeAI SDK 中实现 SRV 示例。
    2.考虑如何实现 Linux 驱动的摄像头、监视器以及与 Linux* SDK 中 EdgeAI SDK 类似的其他功能。
    我希望就这两项计划提出一些建议和指导。

    此致、

    Yangtian

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

    尊敬的 Yangtian:

    RTOS (ADAS) SDK 和 EdgeAI SDK 的区别在于、摄像头、显示器和 ISP 功能由 R5F 和 FreeRTOS 控制、而不是 A 内核和 Linux。

    2. 考虑如何在 Linux+RTOS SDK 中实现 Linux 驱动的摄像头、监视器和与 EdgeAI SDK 类似的其他功能。
    [/报价]

    这将中断 SRV 演示、因为 SRV 演示是为这些函数在 R5F 上运行构建的。 解决所有不同的相互依赖关系也是一项艰巨的任务。

    [quote userid=“650736" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1540146/tda4aen-q1-problems-encountered-in-practicing-video-streaming-and-deep-learning-inference-on-evm-development-board/5931049 考虑在 EdgeAI SDK 中实现 SRV 示例。
    [/报价]

    这可能是更简单的选择、但我们不会在编写应用程序时提供支持。

    此致、
    Jared