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.

[参考译文] Linux/AM5728:摄像头流问题

Guru**** 2553450 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/605939/linux-am5728-camera-streaming-issue

器件型号:AM5728

工具/软件:Linux

大家好、

我们有基于 AM5728的定制板、在 VIN1端口 A 上、我们连接了摄像头模块。 摄像机创建一个视频节点/dev/video1.

我们在 EGLFS 平台上运行基于 QTc 5.5的应用程序。 之前我们使用的是基于 Wayland 的平台、该平台上的摄像头工作正常。

切换到 EGLFS 后、当我们尝试从 /usr/share/qt5/examples/multimediawidgets/camera/camera 运行 Qt 的示例摄像头应用程序时、摄像头不会显示实时流。 行为是随机的、5-6次后、我们可以看到摄像头应用程序工作正常、我们可以在 LCD 上看到流、其余时间、流不在 LCD 上、控制台上打印错误下方。

根目录@Raymond-GDM:/opt/GDM sh run_camera.sh
[3621.998258] PVR_K:UM DDK-(3699939)和 KM DDK-(3699939)匹配。 [确定]
PVR:(错误):SrvInit:PVRSRVInitSrvConnect 失败(129)[0、]
/usr/bin/pvrsrvctl:SrvInit 失败(已初始化?) (ERR=PVRSRV_ERROR_SRV_CONNECT_FAILED)
QT.QPA.egldeviceintegration:EGL 器件集成插件密钥:("eglfs_kms")
QT.QPA.egldevicesintegration:使用基本设备集成
qt.qpa.input: evdevkeyboard:使用设备发现
类型 QFlags (0x8)的 qt.qpa.input: udev 设备发现
qt.qpa.input:找到匹配的器件("/dev/input/event1)
qt.qpa.input:在"/dev/input/event1 "添加键盘
qt.qpa.input:尝试为"/dev/input/event1 ""创建键盘处理程序
qt.qpa.input:打开键盘,网址为“/dev/input/event1”
qt.qpa.input:为设备"/dev/input/event1 "创建键盘处理程序
qt.qpa.input:卸载当前键位映射并内置恢复
qt.qpa.input: numlock=0、capslock=0、scrolllock=0
qt.qpa.input: evdevmouse:使用设备发现
类型 QFlags (0x1|0x2)的 qt.qpa.input: udev 设备发现
qt.qpa.input:找到匹配的器件()
qt.qpa.input:正在初始化 tslib 插件"TsLib"""
qt.qpa.input: slib 器件为"/dev/input/event0 "
无法查询物理屏幕大小,默认为100 dpi。
要覆盖、请设置 QT_QPA_EGLFS_physical 和 QT_QPA_EGLFS_physical 高度(以毫米为单位)。
qt.qpa.input:正在初始化 tslib 插件"tslib "/dev/input/event0
qt.qpa.input: slib 器件为"/dev/input/event0 "
[3622.578363] vip1-s0:vIP_Porta_output_FIFO_YUV
[3622.584290] vip1-s0:vIP_overflow_recovery_work:端口 A
[3622.611693] vip1-s0:vIP_Porta_output_FIFO_YUV
[3622.616421] vip1-s0:vIP_overflow_recovery_work:端口 A
[3622.645026] vip1-s0:vIP_Porta_output_FIFO_YUV
[3622.649739] vip1-s0:vIP_overflow_recovery_work:端口 A
[3622.678360] vip1-s0:vIP_Porta_output_FIFO_YUV
[3622.683826] vip1-s0:vIP_overflow_recovery_work:端口 A
[3622.711693] vip1-s0:vIP_Porta_output_FIFO_YUV
[3622.717199] vip1-s0:vIP_overflow_recovery_work:端口 A
[3622.724115] vip1-s0:vIP_overflow_recovery_work:num_recovery limit exceeded leaving disabled.

粗体字体中的文本是我关注的问题。 我已经检查了驱动程序代码、似乎驱动程序放弃了没有来自摄像头端口的中断、并且正在尝试5次。

我还在应用程序运行时检查了 VIP 中断、发现当摄像机不在 LCD 上显示流时、VIP 中断不会增加。 另一方面、当我们在 LCD 上看到摄像头的流时、VIP 上的中断会增加。 下面是我检查 VIP 中断的方式。

根目录@Raymond GDM:/opt/GDM cat /proc/interrupts | grep VIP
354:65946 0 CBAR 351电平 vip1-s0
355:0 CBAR 392电平 vip1-s1

如果有任何帮助,将不胜感激。 如果需要、我还可以提供摄像机调用脚本。

谢谢、

Divyeshkumar M

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    QT 摄像机应用程序可能会出现多媒体小工具的一些问题。 您可以使用具有 eglfs 插件的 V4L2 API 运行摄像头。 查看 PLSDK 3.3版本中示例应用下的视频图形测试应用、以通过 V4L2 API 进行捕获、并通过 eglfs 进行硬件加速渲染。 它使用 eglfs_kms 插件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经使用 V4L2创建了基于 QML 的应用、我们将从该应用中获取流。 我可以为基于 QWidget 的应用移植相同的逻辑、只是我不知道如何在基于 QWidget 的应用上显示流。 你能帮个忙吗?

    我可以尝试您提到的示例应用。

    谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、我已经尝试通过 Qt Creator 编译该应用、但它给出了以下错误:

    错误:没有使目标为'/media/mreigada/Storage/mgc/2015.12.150/codebench/mel/ade/ade-core-image-base-raymond-gdm-2015.12.1496688830/sysroots/cortexa15hf-vfp-neon-mel-linux-gnueabi/usr/lib/libQt5PlatformSupport.a '的规则,'graphicsTest'需要此规则。 停下。

    我添加了
    QT += Gui-Private
    并对其进行了编译。

    我尝试运行该二进制文件、并使用以下日志将其损毁:

    PVR:(错误):SrvInit:PVRSRVInitSrvConnect 失败(129)[0、]
    /usr/bin/pvrsrvctl:SrvInit 失败(已初始化?) (ERR=PVRSRV_ERROR_SRV_CONNECT_FAILED)
    QT.QPA.egldeviceintegration:EGL 器件集成插件密钥:("eglfs_kms")
    QT.QPA.egldevicegintegration:EGL 器件集成插件密钥(排序):("eglfs_kms")
    QT.QPA.egldeviceintegration:尝试加载器件 EGL 集成"eglfs_kms"
    QT.QPA.egldevicesintegration:使用 EGL 器件集成"eglfs_kms"
    Qt.QPA.eglfs.kms:为从/dev/dri/card0获取的文件描述符4创建 GBM 器件
    无法加载模块:/usr/lib/gbm/gbm_dri.so:无法打开共享目标文件:无此类文件或目录
    无法加载模块:/usr/lib/gbm/gbm_gallium_drm.so:无法打开共享目标文件:无此类文件或 DIY
    加载的模块:GBM_PVR.SO
    找到有效的 GBM 后端:GBM_PVR.SO
    qt.qpa.input: evdevkeyboard:使用设备发现
    类型 QFlags (0x8)的 qt.qpa.input: udev 设备发现
    qt.qpa.input:找到匹配的器件("/dev/input/event1)
    qt.qpa.input:在"/dev/input/event1 "添加键盘
    qt.qpa.input:尝试为"/dev/input/event1 ""创建键盘处理程序
    qt.qpa.input:打开键盘,网址为“/dev/input/event1”
    qt.qpa.input:为设备"/dev/input/event1 "创建键盘处理程序
    qt.qpa.input:卸载当前键位映射并内置恢复
    qt.qpa.input: numlock=0、capslock=0、scrolllock=0
    qt.qpa.input: evdevmouse:使用设备发现
    类型 QFlags (0x1|0x2)的 qt.qpa.input: udev 设备发现
    qt.qpa.input:找到匹配的器件()
    qt.qpa.input:正在初始化 tslib 插件"TsLib"""
    qt.qpa.input: slib 器件为"/dev/input/event0 "
    QT.QPA.eglfs.kms:QEglFSKmsDevice::createScreens
    QT.QPA.eglfs.kms:"None1"模式计数:1.
    QT.QPA.eglfs.kms:模式0 800 x 480 @ 60 Hz
    QT.QPA.eglfs.kms:所选模式0:800 x 480 @ 60Hz (用于输出“None1”)
    QT.QPA.eglfs.kms:"HDMI1"模式计数:0
    没有可用于输出"HDMI1"的模式
    qt.qpa.input:正在初始化 tslib 插件"tslib "/dev/input/event0
    qt.qpa.input: slib 器件为"/dev/input/event0 "
    错误:DRM_CRTC_Resolution:636:drmModeGetResources 失败:不适合设备的 ioctl




    您能不能向我推荐我所犯的错误?

    谢谢、
    Divyeshkumar
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您在运行视频图形测试应用程序或自定义应用程序时遇到此错误吗? 是否禁用 Weston?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、TI 的 Divyeshkumar、


    很抱歉在这里添加了一条消息、但我也在视频输入端口上工作。 我开始创建一个 I2C 驱动程序来处理 DTS 文件上的成像器。

    我想知道您是否还为您的摄像头创建了特定的驱动程序。 如果没有,您如何成功地将相机绑定到 DTS 文件上?


    此时、由于 v4l2_ctrl_handler_setup FCT 应答-22、我的驱动程序仍然失败。 因此、我无法从成像仪获取数据。 我将在 TI 论坛上创建另一篇文章、请勿打扰。

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

    嗨、Manisha、

    我在运行视频图形测试应用程序时收到此错误、并且我的平台上禁用了 Weston。

    我还想知道的来源

    "status.DRM_FD =(int) platInf->nativeResourceForIntegration ("DRM_FD");"和"status.DRM_plan_sreq_handler =(DRM_plan_sreq) platInf->nativeResourceForIntegration ("DRM_plane_set_req");"

    视频图形测试应用程序的 mainwindow.cpp 中。

    在 RDK 3.03中、我找不到文件"video_graphics_test.sh"、根据 Makefile.build、该文件应该在那里。

    我怀疑我没有使用适当的环境变量集运行该应用程序。 也请建议如何运行该应用程序。

    编辑:对于"eglfs_kms"插件、我无法在 GUI 上看到标签(任何文本)。 我已经在其他应用程序以及不带摄像头流的 VIDEO _GRAPHICS_TEST 应用程序上尝试过此操作(我已使用代码欺骗以至少获取 UI)。 我正在附加用于调用 VIDEO _GRAPHICS_TEST 应用程序的脚本

    根目录@Raymond-GDM:/opt/GDM cat run_camera.sh
    !/bin/bash

    #加载 powevr GPU 驱动器

    /etc/init.d/rc.pvr 启动

    导出 LIBDRM_writer_DRM_DEVICE_NUMBER=0
    导出 LIBDRM_writer_debug_level=0

    导出 QT_logging_rules=qt.qpa.*=true

    导出 QT_QPA_EGLFS_integration=eglfs_kms
    导出 QT_QPA_platform=eglfs

    导出 QML_DISABLE_DISTANCEFIELD=1

    导出 QT_QPA_EGLFS_HIDECURSOR=1

    导出 QT_QPA_FB_DISABLE_INPUT=0
    导出 QT_QPA_EGLFS_DISABLE_INPUT=0

    导出 QT_QPA_EGLFS_physical_width=800
    导出 QT_QPA_EGLFS_physical 高度=480

    #export QT_DEBUGINS=1

    导出 TSLIB_TSEVENTTYPE=输入
    导出 TSLIB_FBDEVICE=/dev/fb0
    导出 TSLIB_CONSOLEDEVICE=NONE
    导出 TSLIB_TSDEVICE=/dev/input/event0
    导出 TSLIB_CALIBFILE=/mnt/overlays/tslib/calibration.conf
    导出 TSLIB_PLUGINDIR=/usr/lib/ts
    导出 TSLIB_conffile=/etc/ts.conf
    导出 QT_QPA_FB_TSLIB=1
    导出 QT_QPA_EGLFS_TSLIB=1

    如果[! -e "/mnt/overlays/tslib/calibration.conf;然后
    mkdir -p /mnt/overlays/tslib
    TS_CALIBRATE
    FI;

    /media/sda1/video_graphics_test -platform eglfs -plugin tslib:/dev/input/event0

    如果您发现违规行为、请仔细检查并告知我。

    此致、

    Divyeshkumar  

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

    无需修改 qt 环境变量。 只需启动电路板、停止 Weston、然后从命令提示符中键入以下-

    #export QT_QPA_EGLFS_integration=eglfs_kms

    #video-graphics-test -platform eglfs

    目前、PLSDK 版本中没有 video-graphics-test.sh 可用。  

    从 Processor SDK 克隆 Arago 存储库和编译配置文件(版本3.3及更高版本)时、可以找到 eglfs_kms 的源代码。  

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

    大家好、Manisha、  

    我可以使用其他功能来运行该应用、

    #export QT_QPA_EGLFS_HIDECURSOR=1

    但是、正如我在上面提到的、主要问题是、我没有在正在运行的应用程序中的按钮上看到标签(任何文本)、我可以看到这些按钮、我可以单击它们、它们运行良好、 但我看不到按钮上的标签(我已插入照片进行澄清、没有文本/标签显示在红色标记中的按钮)。 我在其他自定义应用程序中遇到相同的问题。 我是否遗漏了任何内容?



    请给出建议。

    此致、
    Divyeshkumar

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

    视频图形测试应用程序具有白色框和黑色文本的颜色。 如果您在运行视频图形测试应用程序时未进行任何修改、我本来希望使用相同的颜色、但似乎框被绘制为蓝色。 如果颜色混乱,则文本可能不会显示,因为文本的颜色可能与框的颜色相同。 显示框不应存在任何其他原因、但不应显示颜色。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否有 AM57x EVM?您是否尝试使用 PLSDK 版本运行演示?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Manisha、

    按钮不是蓝色的,它是白色的,它只是用一个天使拍摄的照片,它显示按钮是蓝色的。 我没有在 PLSDK 上运行演示。

    进度是、我可以在我的自定义应用程序上获取摄像头馈送。 但是、在自定义应用程序中、标签/文本也不会呈现。

    所有按钮标签和其他文本都没有显示、但我可以通过按下这些空白按钮来执行所有功能。

    如果我将  QT_QPA_EGLFS_integration 从"eglfs_kms"更改为"none"、我可以看到我的自定义应用程序正在完美地呈现文本和标签、但在这种情况下、我无法在屏幕上显示摄像机源。

    在"QT_QPA_EGLFS_integration=eglfs_kms"时、您能否建议不渲染文本/标签的原因


    非常感谢您的帮助。

     

    此致、

    Divyeshkumar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    正在看到的平面之一(视频或图形)、但两者都可能是由于 zorder 设置导致的、但如果您同时看到两个平面、但仅缺少文本、则会出现一些与 QT 使用相关的问题、并且我没有任何意见。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    右侧、

    我也是这样想的。 总之、非常感谢您的帮助。 我可能会在找到解决方案后发布该主题。

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

    向按钮添加自定义样式表可以解决问题。

    不过、感谢您的帮助。

    此致、

    Divyeshkumar