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.

[参考译文] AM3354:Yocto 使用 meta-ti 编译和 eglfs

Guru**** 2540720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/873587/am3354-yocto-build-and-eglfs-with-meta-ti

器件型号:AM3354

你好

我们正在尝试使用 Yocto、meta-ti (thud)和 ti-SGX-DDK-km 和 ti-SGX-DDK-um 构建使用带有 eglfs 的 qt5和 xl11的平台 。 但是、我们无法使其正常工作。 我们的 DTB 看起来不错、我们在启动时看到以下内容

0.957571] tilcdc 面板:找到启用 GPIO
[ 0.962632]、共个图:/ocp/lcdc@4830e000中未找到端口节点
[0.968927]、共一个:图:/ocp/lcdc@4830e000中未找到端口节点
[0.975373]、共页:图:/ocp/lcdc@4830e000中未找到端口节点
[0.981389][DRM]支持 vblank 时间戳缓存修订版2 (2013年10月21日)。
[0.988048][DRM]不支持 vblank 时间戳查询的驱动程序。
[0.995601] tilcdc 4830e000.lcdc:fb0:DRM 仿真帧缓冲器器件
[1.002829][DRM]初始化了次要0上4830e000.LCDC 的 tilcdc 1.0.0 20121205

[14.546093] PVR_K:UM DDK-(4948957)和 KM DDK-(4948957)匹配。 [确定]
已加载 PowerVR 消费者服务。

local.conf 当前包含的内容

machine_extra_RDEPENDS +="内核模块-ILI2511 ti-SGX-DDK-KM"

depends _移除="virtual/libgl"
preferred_provider_virtual/EGL="ti-SGX-DDK-um"
preferred_provider virtual/libgles1 ="ti-SGX-DDK-um"
preferred_provider virtual/libgles2 ="ti-SGX-DDK-um"

preferred_provider_virtual/mesa ="mesa-gl"
preferred_provider_libgbm ="libgbm"
preferred_provider libgbm-dev ="libgbm-dev"

我们的图像包含

image_install_append =" ti-SGX-DDK-km ti-SGX-DDK-um libdrm kernel-module-ili2511 qtbase qtbase-plugins cinaticExperience libdrm-test"

启动后、我们会同时看到/dev/dri/card0和/dev/dri/card1

当我们在 Card1上运行 cinematicExperience -platform eglfs 时、Mesa 加载程序抱怨它找不到 kms_swrast.so in /usr/lib/dri (我们在此文件夹中只有 PVR_DRI)。

如果有任何帮助,将不胜感激

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

    您好!

    作为实验、请采用默认的 TI SDK、停止 Weston (/etc/init.d/weston 停止)并使用"-platform eglfs"标志启动您的应用程序。 我想确认您的应用程序与常用 SDK 一起工作。  此外、有关 从 Yocto 构建中禁用 Weston 的信息、请参阅以下文档。  

    此致、
    Krunal  

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

    我有  

    DISTR_FITS_REMOVE ="x11航迹"

    在 local.conf 中。

    这是定制板。  

    如果我们以最小的方式运行、我们就会得到

    root@AM335x-EVM:/usr/lib 最小值
    正在尝试打开设备'i915'...失败
    正在尝试打开设备'amdgpu'...失败
    正在尝试打开设备'Radeoneon'...失败
    尝试打开设备'nouve'失败
    尝试打开设备'vmwgfx'...失败
    正在尝试打开设备'omapdrm'...失败
    正在尝试打开设备'exynos'...失败
    正在尝试打开设备'tilcdc'...done
    编码器:
    ID CRTC 类型可能的 crtcs 可能的克隆
    30 29 LVDS 0x00000001 0x00000000

    连接器:
    ID 编码器状态名称大小(mm)模式编码器
    31 30已连接 LVDS-1 0x0 1 30
    模式:
    名称刷新(Hz) hdisp HSS HSE htot vdisp VSS VSE vtot)
    480x272 60 480 482 523 525 272 284 286 9000标志:phsync、pvsync;类型:preferred、driver
    道具:
    1 EDID:
    flags:不可改变的 blob
    BLOB:

    值:
    2 DPMS:
    flags:枚举
    枚举:ON = 0待机= 1挂起= 2关闭= 3
    值:0
    5链路状态:
    flags:枚举
    枚举:Good = 0 BAD = 1
    值:0
    6非台式机:
    flags:不可更改的范围
    值:0 1
    值:0
    19 CRTC_ID:
    flags:对象
    值:29

    CRC:
    Id fb pos 大小
    29 34 (0、0)(480x272)
    480x272 60 480 482 523 525 272 284 286 9000标志:phsync、pvsync;类型:preferred、driver
    道具:
    20有效:
    flags:范围
    值:0 1
    值:1.
    21 MODE_ID:
    标志:斑点
    BLOB:

    值:
    282300e001e2010b020d0200001001
    12011c011e0100003c00000005000000
    48000000343830783237320000000000
    0000000000000000000000000000000000000000000000000000
    00000000
    18 OUT_FEND_PTR:
    flags:范围
    值:0 1844674407370951615
    值:0

    平面:
    ID CRTC fb CRTC x、y x、y 伽马大小可能的 crtcs
    28 29 34 0 0 0 0 0 0 0 0 0x00000001
    格式:BG16 RG24 XR24
    道具:
    7类型:
    flags:不可 mutable 枚举
    枚举:overlay=0 Primary =1 Cursor =2
    值:1.
    16 FB_ID:
    flags:对象
    数值:34
    17 IN_FEND_FD:
    flags:带符号的范围
    值:-1 2147483647
    值:-1
    19 CRTC_ID:
    flags:对象
    值:29
    12 CRTC_X:
    flags:带符号的范围
    值:-2147483648 2147483647
    值:0
    13 CRTC_Y:
    flags:带符号的范围
    值:-2147483648 2147483647
    值:0
    14 CRTC_W:
    flags:范围
    值:0 2147483647
    值:480
    15 CRTC_H:
    flags:范围
    值:0 2147483647
    值:272.
    8 SRC_X:
    flags:范围
    值:0 4294967295
    值:0
    9 SRC_Y:
    flags:范围
    值:0 4294967295
    值:0
    10 SRC_W:
    flags:范围
    值:0 4294967295
    值:31457280
    11 SRC_H:
    flags:范围
    值:0 4294967295
    值:17825792

    帧缓冲器:
    ID 大小间距

    和  

    Motetest -M tilcdc -s 31@29:480x272

    确实会导致测试模式显示在屏幕上

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

    你(们)好

    我可以确认、电影体验确实使用 SDK (刚刚从我的原始编译移动到 TI SDK 的 rootfs)。导出 QT_QPA_EGLFS_integration="none"

    使用  

    导出 QT_QPA_EGLFS_integrity="none"

    我得到的帧速率为60fps。

    如果我使用

    导出 QT_QPA_EGLFS_integrity="eglfs_kms"

    我得到30fps 的帧速率。

    不管怎样,问题似乎出在使用 meta-ti 和 meta-qt5构建的平台上,并且没有正确设置。

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

    您好!

    感谢您的确认。 此外、kms_swrast.so 是软件渲染器和 Mesa 加载器仅在加载硬件(PVR_DRI.SO)渲染器失败时尝试查找并使用它。 要了解我们尝试回退到 kms_swast.so 驱动程序的原因、请导出以下变量并提供完整日志:

    导出 MSA_DEBUG=1

    导出 EGL_LOG_LEVEL=DEBUG

    导出 LIBGL_DEBUG=详细

    导出 WAYLAND_DEBUG=1

    此致、
    Krunal

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

    我得到了以下结果

    libgl:无法打开配置文件/etc/drirc:没有这样的文件或目录。
    libgl:无法打开配置文件/home/root/.drirc:没有这样的文件或目录。
    [115.768107] PVR_K:(错误):BridgedDispatchKM:驱动程序初始化尚未完成。
    PVR:(错误):PVRSRVBridgeCall:无法访问设备。 函数 ID:3223086849 (strerror 不返回任何值。)。 [0、]
    PVR:(错误):PVRSRVEnumerateDevices:BridgeCall Failed [0、]
    PVR:(错误):PVRSRVConnect:无法枚举设备。 [0、]
    PVR:(错误):无法连接到服务[0、]
    PVR:(错误):PVRDRIEGLGlobalDataInit: PVR 服务初始化失败[0、]
    PVR:(错误):PVRDRICreateScreenImpl:无法创建 EGL 全局数据[0、]
    Mesa 加载程序:无法打开 kms_swast (搜索路径/usr/lib/dri)
    无法加载驱动程序:kms_swrast
    Mesa 加载程序:无法打开 swrast (搜索路径/usr/lib/dri)
    无法加载 swrast 驱动程序
    无法创建 GBM 设备(地址错误)
    无法打开 DRM 设备
    已中止

    第二次尝试、我在其中运行了  

    root@AM335x-EVM:/etc/init.d #./rc.PVR 停止
    已卸载 PowerVR 消费者服务。
    root@AM335x-EVM:/etc/init.d #./rc.PVR start

    我获得了以下结果

    root@AM335x-EVM:/usr/share/cinematicexperience-1.0 #./Qt5_CinematicExperience.
    QStandardPaths:XDG_RUNTIME_DIR 未设置、默认为'/tmp/runtime-root
    libgl:无法打开配置文件/etc/drirc:没有这样的文件或目录。
    libgl:无法打开配置文件/home/root/.drirc:没有这样的文件或目录。
    LibGL:支持的屏幕扩展名:
    LibGL:DRI_TexBuffer (支持的版本:2 -最大版本:3)
    LibGL:DRI2_Flush (支持的版本:4 -最大版本:4)
    LibGL:DRI_image (支持的版本:8 -最大版本:17)
    LibGL:DRI_健 壮(支持的版本:1 -最大版本:1)
    LibGL:DRI2_Fence (支持的版本:1 -最大版本:2)
    libEGL 调试:找到扩展名`DRI_TexBuffer'
    libEGL 信息:找到扩展名 DRI_TexBuffer 版本2
    libEGL 调试:找到扩展名`DRI2_Flush'
    libEGL 信息:找到扩展名 DRI2_Flush 版本4
    libEGL 调试:找到扩展名`DRI_IMAGE'
    libEGL 信息:找到扩展名 DRI_image 版本8
    libEGL 调试:找到扩展名`DRI_健 壮性'
    libEGL 调试:找到扩展名`DRI2_Fence '
    libEGL 调试:找到扩展名`DRI_TexBuffer'
    libEGL 调试:找到扩展名`DRI2_Flush'
    libEGL 调试:找到扩展名`DRI_IMAGE'
    libEGL 信息:找到扩展名 DRI_image 版本8
    libEGL 调试:找到扩展名`DRI_健 壮性'
    libEGL 信息:找到扩展 DRI_健 版本1
    libEGL 调试:找到扩展名`DRI2_Fence '
    libEGL 信息:找到扩展名 DRI2_Fence 版本1
    libEGL 调试:未找到可选扩展名 DRI_NoError 版本1
    libEGL 调试:未找到可选扩展名 DRI_CONFIG_QUERY 版本1
    libEGL 调试:未找到可选扩展名 DRI_Renderer_query 版本1
    libEGL 调试:未找到可选扩展名 DRI2_Interop 版本1
    libEGL 调试:未找到可选扩展名 DRI_FlushControl 版本1
    libEGL 调试:未找到可选扩展名 DRI2_Blob 版本1
    libEGL 调试:未找到可选扩展名 DRI_MutableRenderBufferDriver 版本1
    libEGL 调试:没有 DRI 配置支持原始格式 R8
    libEGL 调试:没有 DRI 配置支持本机格式 GR88
    libEGL 调试:没有 DRI 配置支持原生格式 AR15
    libEGL 调试:没有 DRI 配置支持原始格式 XR24
    libEGL 调试:没有 DRI 配置支持本机格式 XB24
    libEGL 调试:没有 DRI 配置支持原始格式 AB24
    libEGL 调试:没有 DRI 配置支持原始格式 XR30
    libEGL 调试:没有 DRI 配置支持原始格式 AR30
    libEGL 调试:没有 DRI 配置支持本机格式 XB30
    libEGL 调试:没有 DRI 配置支持原始格式 AB30
    设置帧缓冲区大小仅适用于 DRM 原子 API
    libpng 警告:ICCP:已知错误的 sRGB 配置文件
    libpng 警告:ICCP:已知错误的 sRGB 配置文件
    无法为屏幕 LVDS1设置 DRM 模式(无效参数)
    无法在屏幕 LVDS1上对 DRM 页面翻转进行排队(参数无效)
    无法在屏幕 LVDS1上对 DRM 页面翻转进行排队(参数无效)
    无法在屏幕 LVDS1上对 DRM 页面翻转进行排队(参数无效)

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

    您好!

    请尝试设置以下变量:QT_QPA_EGLFS_AYST_SET_MODE?

    此致、
    Krunal  

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

    已经有了它

    导出 QT_QPA_EGLFS_AYST_SET_MODE='1'

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

    我有以下内容

    导出 QT_QPA_EGLFS_AYST_SET_MODE='1'
    导出 QT_QPA_EGLFS_integration='eglfs_kms'
    导出 QT_QPA_EGLFS_KMS_CONFIG='/etc/qt5/eglfs_kms_cfg.json

    我也尝试过有无

    导出 QT_QPA_EGLFS_integration='eglfs_kms'
    导出 QT_QPA_EGLFS_KMS_CONFIG='/etc/qt5/eglfs_kms_cfg.json

    以及  

    导出 QT_QPA_EGLFS_integration=none
    导出 QT_QPA_EGLFS_KMS_CONFIG='/etc/qt5/eglfs_kms_cfg.json

    我还尝试使用过  

    导出 QT_QPA_EGLFS_KMS_Atomy=1

    但这似乎会冻结系统

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

    您好!

    对于 Yocto 配置、请删除以下提供商:

    > preferred_provider_virtual/mesa ="mesa-gl"
    > preferred_provider_libgbm ="libgbm"
    > preferred_provider libgbm-dev ="libgbm-dev"

    此外、由于 TI SDK 可正常工作、我建议您将 Yocto Build 与 TI 配置进行比较。  

    此致、
    Krunal

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

    进行了更改、但 不幸的是、它没有帮助。 尝试将我们的构建与 TI 进行比较。 内核配置几乎相同。 看来 TI 默认为 gnuabihf、而我们有 gnuabi (这需要在 ti-SGX-DDK-km 上安装一个 hack 才能编译)。 TI 配置使用陆地、我们只想使用具有公里数的 eglfs、而不使用陆地/x11。 此外、我们使用的是 sysinit、而不是 systemd。

    此致

    Michael

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

     您好、Michael、

    如果我错了、请纠正我的问题、但对于 ARMV7工具链、ARM-Linux-gnueabihf 编译器未被使用。 我想知道是否可以使用与 TI 相同的编译器。

    此致、
    Krunal

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

    找到问题。

    我需要将 eglfs_kms.json 文件中的格式设置为 xrgb8888。 在我这么做之后、一切都开始工作了。  

    感谢您的指导和耐心。

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

    您好、Michael、

    您能不能共享/etc/qt5/eglfs_kms_cfg.json?的内容

    谢谢!

    Ondrej

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

    当然(我只是在查看文件时键入了此内容、以便它可能包含拼写错误)

    {  

    "器件":"/dev/dri/card0

    "hwcursor ":false、

    "pbuffers":true、

    "输出":[

    "名称":"LVDS1"、"格式":"xrgb8888"、"主要":true

    ]

     }