imx8 Linux DRM modetest

Linux DRM modetest And Qt

DRM Test

https://github.com/grate-driver/libdrm/tree/master/tests

root@imx8qmmek:/etc# modetest --help
usage: modetest [-cDdefMPpsCvw]

 Query options:

        -c      list connectors
        -e      list encoders
        -f      list framebuffers
        -p      list CRTCs and planes (pipes)

 Test options:

        -P <plane_id>@<crtc_id>:<w>x<h>[+<x>+<y>][*<scale>][@<format>]  set a plane
        -s <connector_id>[,<connector_id>][@<crtc_id>]:<mode>[-<vrefresh>][@<format>]   set a mode
        -C      test hw cursor
        -v      test vsynced page flipping
        -w <obj_id>:<prop_name>:<value> set property

 Generic options:

        -d      drop master after mode set
        -M module       use the given driver
        -D device       use the given device

        Default is to dump all info.

当前屏幕信息

root@imx8qmmek:/etc# modetest -c
[...省略]
trying to open device 'imx-drm'...done
[  895.762418] i.mx8-hdp 56268000.hdmi: No EDID function, use default video mode
Connectors:
id      encoder status          name            size (mm)       modes   encoders
56      55      connected       HDMI-A-1        0x0             2       55
  modes:
        name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
  800x480 60 800 832 848 892 480 484 486 488 26200 flags: phsync, pvsync; type: preferred, driver
  720x480 60 720 736 798 858 480 489 495 525 27000 flags: nhsync, nvsync; type: preferred, driver
  props:
        1 EDID:
                flags: immutable blob
                blobs:

                value:
        2 DPMS:
                flags: enum
                enums: On=0 Standby=1 Suspend=2 Off=3
                value: 0
        5 link-status:
                flags: enum
                enums: Good=0 Bad=1
                value: 0
        7 non-desktop:
                flags: immutable range
                values: 0 1
                value: 0
        6 HDR_SOURCE_METADATA:
                flags: blob
                blobs:

                value:
        57 Content Protection:
                flags: enum
                enums: Undesired=0 Desired=1 Enabled=2
                value: 0
59      58      connected       LVDS-1          295x110         1       58
  modes:
        name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
  1920x720 92 1920 1952 1953 1985 720 756 757 793 145600 flags: phsync, pvsync; type: preferred, driver
  props:
        1 EDID:
                flags: immutable blob
                blobs:

                value:
        2 DPMS:
                flags: enum
                enums: On=0 Standby=1 Suspend=2 Off=3
                value: 0
        5 link-status:
                flags: enum
                enums: Good=0 Bad=1
                value: 0
        7 non-desktop:
                flags: immutable range
                values: 0 1
                value: 0

plane info

root@imx8qmmek:/etc# modetest -p
[...省略]
trying to open device 'imx-drm'...done
[ 2499.441569] i.mx8-hdp 56268000.hdmi: No EDID function, use default video mode
CRTCs:
id      fb      pos     size
32      66      (0,0)   (800x480)
  800x480 60 800 832 848 892 480 484 486 488 26200 flags: phsync, pvsync; type: preferred, driver
  props:
45      67      (0,0)   (1920x720)
  1920x720 92 1920 1952 1953 1985 720 756 757 793 145600 flags: phsync, pvsync; type: preferred, driver
  props:

[...省略]

基本操作

  • 杀死后台进程:/usr/bin/weston
    killall weston
  • modetest -s 59@45:1920x720 -v
    modetest -s 56@32:1080x2560 -v
    modetest -s 56@45:800x480 -v
    modetest -s 86@71:1920x1080 -v

fbgrab -d /dev/fb0 screen.png
root@imx8qmmek:/etc# modetest -s 56@45:1920x720 -v
[…省略]
trying to open device ‘imx-drm’…done
[ 3260.153586] i.mx8-hdp 56268000.hdmi: No EDID function, use default video mode
[ 3260.162699] alloc_contig_range: [bc900, bd100) PFNs busy
[ 3260.169049] alloc_contig_range: [bca00, bd200) PFNs busy
[ 3260.175400] alloc_contig_range: [bca00, bd300) PFNs busy
[ 3260.181696] alloc_contig_range: [bcc00, bd400) PFNs busy
setting mode 1920x720-92Hz@XR24 on connectors 59, crtc 45
freq: 93.71Hz
freq: 92.50Hz
freq: 92.50Hz
freq: 92.50Hz
freq: 92.50Hz
freq: 92.50Hz
freq: 92.50Hz
freq: 92.50Hz

* modetest -s 56@32:800x480 -v

root@imx8qmmek:/etc# modetest -s 56@32:800x480 -v
[…省略]
trying to open device ‘imx-drm’…done
[ 3296.558518] i.mx8-hdp 56268000.hdmi: No EDID function, use default video mode
setting mode 800x480-60Hz@XR24 on connectors 56, crtc 32
[ 3296.578258] [drm] phy_cfg_hdp() num_lanes: 4, mode:800x480p60, color depth: 8-bit, encoding: 1
[ 3296.587869] [drm] Pixel clock frequency (26200 kHz) is supported in this color depth (8-bit). Settings found in row 0
[ 3296.599490] [drm] Character clock frequency: 26200 kHz.
[ 3296.605269] [drm] VCO frequency (2096000 kHz) is supported. Settings found in row 13
[ 3296.628899] [drm] CDN_API_General_Write_Register_blocking LANES_CONFIG ret = 0
[ 3296.710235] alloc_contig_range: [bcb00, bcd00) PFNs busy
[ 3296.716630] alloc_contig_range: [bcc00, bce00) PFNs busy
freq: 61.16Hz
freq: 60.19Hz
freq: 60.19Hz
freq: 60.19Hz
freq: 60.19Hz


## QT DRM多屏显示

https://doc.qt.io/qt-5/embedded-linux.html
<think>嗯,用户现在需要的是在IMX8平台上使用Yocto构建Linux桌面系统的移植指南或者解决方案。首先,我得回忆一下之前用户提到的关于IMX6的移植经验,看看有没有可以借鉴的地方。根据之前的引用,用户提到过使用yocto版本的内核配置,比如linux-imx_3.0.35.bb,虽然IMX8的内核版本可能不同,但配置方法可能有相似之处。 用户之前提到过在IMX6上遇到的LTIB问题,现在转向Yocto,可能对Yocto的环境搭建和配置比较关心。需要确保步骤清晰,特别是初始化环境和选择正确的分支。比如引用5中的MACHINE变量设置和source命令,这在IMX8上可能类似,但分支名称可能不同,比如使用imx8mqevk这样的机器名称。 接下来,构建桌面系统需要添加相应的软件包。IMX6的例子中可能没有涉及桌面环境,但Yocto的层管理是通用的。比如,meta-openembedded和meta-gnome这些层可能包含桌面组件。需要指导用户如何添加这些层到bblayers.conf,并修改local.conf文件,启用必要的功能,比如X11或Wayland,以及GPU支持,如Vivante库,这在引用3和4中提到的编译器选项可能相关。 然后是关于镜像的定制,使用core-image-sato或者自定义image.bb文件,添加必要的包组,比如x11-base、gnome等。这部分需要确保用户知道如何编辑配置文件,以及如何利用Yocto的继承功能,如inherit features_check和REQUIRED_DISTRO_FEATURES。 另外,用户可能需要处理驱动和硬件适配,比如GPU加速,这可能涉及到内核配置和设备树的修改。引用3中的CROSS_COMPILE设置和sysroot路径可能需要根据IMX8的工具链调整。还有,用户可能需要配置显示接口,比如HDMI或LVDS,这涉及到设备树的修改,如引用4中的编译器参数可能需要调整架构为armv8-a等。 最后,调试部分可能需要引导用户使用bitbake命令的详细输出,以及如何检查日志文件。引用5中的环境变量设置可能在重启后需要重新执行,这一点也需要提醒用户注意。 生成的相关问题需要围绕用户可能遇到的后续步骤,比如环境初始化失败的处理、桌面组件缺失的解决、显示问题调试、性能优化和工具链配置等。这些都需要结合之前的引用内容,确保问题有针对性,并且帮助用户进一步深入解决问题。</think>根据NXP官方文档和i.MX8平台Yocto开发经验,IMX8QM/QXP平台构建Linux桌面系统的移植步骤如下: ### 一、Yocto环境初始化 1. 下载官方BSP层 ```bash repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-zeus -m imx-5.4.47-2.2.0.xml repo sync ``` 注意:`imx-linux-zeus`对应Yocto 3.0版本,推荐使用2020年后发布的BSP版本[^5] 2. 配置编译环境 ```bash DISTRO=fsl-imx-wayland MACHINE=imx8qmmek source imx-setup-release.sh -b build-xwayland ``` 选择Wayland作为显示协议栈,支持现代桌面环境[^1] ### 二、桌面系统组件配置 1. 在`conf/local.conf`添加: ```python IMAGE_INSTALL_append = " packagegroup-core-x11-sato \ gtk+3 \ gnome-shell \ weston \ qtwayland \ imx-gpu-viv" ``` 包含X11/Wayland双协议栈支持[^3] 2. 启用GPU加速: ```python DISTRO_FEATURES_append = " opengl" PACKAGECONFIG_append_pn-mesa = " gallium" ``` ### 三、定制桌面镜像 1. 创建`meta-custom/recipes-core/images/gnome-image.bb`: ```python inherit core-image IMAGE_FEATURES += "splash ssh-server-openssh" CORE_IMAGE_EXTRA_INSTALL += " \ packagegroup-gnome \ chromium \ libreoffice \ gimp \ " ``` 包含完整的GNOME桌面环境组件[^2] ### 四、硬件适配关键点 1. 显示接口配置: ```bash # 设备树修改(arch/arm64/boot/dts/freescale/imx8qm-mek.dts) &hdmi { status = "okay"; fsl,phy-reg-vs = <0x0290>; fsl,phy-reg-cksymtx = <0x800d>; }; ``` 2. 触摸屏驱动: ```python # 内核配置 CONFIG_INPUT_TOUCHSCREEN=y CONFIG_TOUCHSCREEN_GOODIX=m ``` ### 五、构建命令 ```bash bitbake gnome-image ``` 构建完成后在`tmp/deploy/images/imx8qmmek/`下生成`gnome-image-imx8qmmek.wic.bz2`镜像
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值