在VCUTRD 2020.1 里设置HDMI-TX显示QT界面
1. 作者
付汉杰 hankf@xilinx.com 2020-08-26
2. 测试环境
- ZCU106 Rev 1.0
- Vivado 2020.1
- PetaLinux 2020.1
- VCU TRD 2020.1
3. Mixer的硬件设置
将VCU TRD 2020.1 的Vivado工程中的Mixer的Layer 8按如下修改。
- Video format修改为BGRA8
- 勾选 Enable Global Alpha
编译整个工程, 得到bit文件,导出含有bit的xsa文件。
4. PetaLinux 工程
基于rdf0428-zcu106-vcu-trd-2020.1/apu/vcu_petalinux_bsp/xilinx-vcu-zcu106-v2020.1-final.bsp创建工程,导入上述xsa文件。
4.1. Mixer的软件设置
在project-spec/meta-user/recipes-bsp/device-tree/files/vcu_trd.dtsi里,设置Mixer的DMA和Primary Plane等信息。
4.1.1. 删除layer0的primary
&xx_mix_master {
/delete-property/ xlnx,layer-primary;
};
4.1.2. 增加layer 8的primary
&xx_mix_overlay_8 {
xlnx,layer-alpha;
xlnx,layer-primary;
xlnx,layer-max-height = <1080>;
xlnx,layer-max-width = <1920>;
xlnx,vformat = "AR24";
};
4.2. 指定xorg使用DRI设备
把文件project-spec/meta-user/recipes-graphics/xorg-xserver/xserver-xf86-config/zynqmp/xorg.conf中的DRICard值,从0改为1。修改后,Section "Device"如下。
Section "Device"
Identifier "ZynqMP"
Driver "armsoc"
Option "DRICard" "1"
Option "DRI2" "true"
Option "DRI2_PAGE_FLIP" "false"
Option "DRI2_WAIT_VSYNC" "true"
Option "SWcursorLCD" "false"
Option "DEBUG" "false"
Option "DPMS" "false"
EndSection
4.3. 编译PetaLinux 工程
编译PetaLinux工程,生成BOOT.BIN、boot.scr、Image.ub文件。
5. 测试过程
5.1. 启动开发板
将BOOT.BIN、boot.scr、Image.ub文件,拷入SD卡中,启动开发板。
5.2. 查看DRI设备信息
查看DRI设备信息, ls -l /dev/dri/by-path/,可以得到准确的mixer信息。
root@vcu_trd:~# ls -l /dev/dri/by-path/
total 0
lrwxrwxrwx 1 root root 8 Aug 26 01:41 platform-a0070000.v_mix-card -> ../card1
lrwxrwxrwx 1 root root 8 Aug 26 01:41 platform-fd4a0000.zynqmp-display-card -> ../card0
5.3. 查看并设置mixer primary Plane
root@vcu_trd:~# ls -l /sys/module/xlnx_mixer/parameters/mixer_primary_enable
-rw------- 1 root root 4096 Aug 26 01:46 /sys/module/xlnx_mixer/parameters/mixer_primary_enable
root@vcu_trd:~# cat /sys/module/xlnx_mixer/parameters/mixer_primary_enable
N
root@vcu_trd:~# echo Y > /sys/module/xlnx_mixer/parameters/mixer_primary_enable
root@vcu_trd:~# cat /sys/module/xlnx_mixer/parameters/mixer_primary_enable
Y
5.4. 使用命令modetest查看HDMI-TX信息
modetest的设备信息与硬件相关。根据DRI设备信息,本设计的modetest命令是“modetest -D a0070000.v_mix”。通过查看HDMI-TX信息,可以得到Connectors ID。
上述命令的执行记录很长,也可以使用grep过滤输出,比如使用grep -A 8 -i "connectors",之输出 Connectors字段后的8行打印。过滤后的信息如下:
root@vcu_trd:~# modetest -D a0070000.v_mix | grep -A 8 -i "connectors"
Connectors:
id encoder status name size (mm) modes encoders
44 43 connected HDMI-A-1 610x350 57 43
modes:
name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
3840x2160 60.00 3840 4016 4104 4400 2160 2168 2178 2250 594000 flags: phsync, nvsync; type: preferred, driver
3840x2160 60.00 3840 4016 4104 4400 2160 2168 2178 2250 594000 flags: phsync, pvsync; type: driver
3840x2160 59.94 3840 4016 4104 4400 2160 2168 2178 2250 593407 flags: phsync, pvsync; type: driver
3840x2160 50.00 3840 4896 4984 5280 2160 2168 2178 2250 594000 flags: phsync, pvsync; type: driver
root@vcu_trd:~#
命令“modetest -D a0070000.v_mix”的完整执行记录如下:
使用命令modetest -D a0070000.v_mix查看HDMI-TX信息
root@vcu_trd:~# modetest -D a0070000.v_mix Encoders: id crtc type possible crtcs possible clones 43 42 TMDS 0x00000001 0x00000000 Connectors: id encoder status name size (mm) modes encoders 44 43 connected HDMI-A-1 610x350 57 43 modes: name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot) 3840x2160 60.00 3840 4016 4104 4400 2160 2168 2178 2250 594000 flags: phsync, nvsync; type: preferred, driver 3840x2160 60.00 3840 4016 4104 4400 2160 2168 2178 2250 594000 flags: phsync, pvsync; type: driver 3840x2160 59.94 3840 4016 4104 4400 2160 2168 2178 2250 593407 flags: phsync, pvsync; type: driver 3840x2160 50.00 3840 4896 4984 5280 2160 2168 2178 2250 594000 flags: phsync, pvsync; type: driver 3840x2160 30.00 3840 4016 4104 4400 2160 2168 2178 2250 297000 flags: phsync, pvsync; type: driver 3840x2160 30.00 3840 4016 4104 4400 2160 2168 2178 2250 297000 flags: phsync, pvsync; type: driver 3840x2160 29.97 3840 4016 4104 4400 2160 2168 2178 2250 296703 flags: phsync, pvsync; type: driver 3840x2160 25.00 3840 4896 4984 5280 2160 2168 2178 2250 297000 flags: phsync, pvsync; type: driver 3840x2160 25.00 3840 4896 4984 5280 2160 2168 2178 2250 297000 flags: phsync, pvsync; type: driver 3840x2160 24.00 3840 5116 5204 5500 2160 2168 2178 2250 297000 flags: phsync, pvsync; type: driver 3840x2160 24.00 3840 5116 5204 5500 2160 2168 2178 2250 297000 flags: phsync, pvsync; type: driver 3840x2160 23.98 3840 5116 5204 5500 2160 2168 2178 2250 296703 flags: phsync, pvsync; type: driver 2560x1440 59.95 2560 2608 2640 2720 1440 1443 1448 1481 241500 flags: phsync, nvsync; type: driver 2048x1280 59.99 2048 2192 2416 2784 1280 1281 1284 1325 221277 flags: nhsync, pvsync; type: 2048x1080 24.00 2048 2096 2128 2208 1080 1083 1093 1099 58230 flags: phsync, nvsync; type: driver 1920x1080 60.00 1920 2008 2052 2200 1080 1084 1089 1125 148500 flags: nhsync, nvsync; type: driver 1920x1080 60.00 1920 2008 2052 2200 1080 1084 1089 1125 148500 flags: phsync, pvsync; type: driver 1920x1080 59.94 1920 2008 2052 2200 1080 1084 1089 1125 148352 flags: phsync, pvsync; type: driver 1920x1080 50.00 1920 2448 2492 2640 1080 1084 1089 1125 148500 flags: phsync, pvsync; type: driver 1920x1080 30.00 1920 2008 2052 2200 1080 1084 1089 1125 74250 flags: phsync, pvsync; type: driver 1920x1080 29.97 1920 2008 2052 2200 1080 1084 1089 1125 74176 flags: phsync, pvsync; type: driver 1920x1080 25.00 1920 2448 2492 2640 1080 1084 1089 1125 74250 flags: phsync, pvsync; type: driver 1920x1080 24.00 1920 2558 2602 2750 1080 1084 1089 1125 74250 flags: phsync, pvsync; type: driver 1920x1080 23.98 1920 2558 2602 2750 1080 1084 1089 1125 74176 flags: phsync, pvsync; type: driver 1600x1200 60.00 1600 1664 1856 2160 1200 1201 1204 1250 162000 flags: phsync, pvsync; type: driver 1600x900 60.00 1600 1624 1704 1800 900 901 904 1000 108000 flags: phsync, pvsync; type: driver 1280x1024 75.02 1280 1296 1440 1688 1024 1025 1028 1066 135000 flags: phsync, pvsync; type: driver 1280x1024 60.02 1280 1328 1440 1688 1024 1025 1028 1066 108000 flags: phsync, pvsync; type: driver 1920x1080i 30.00 1920 2008 2052 2200 540 1084 1094 1125 74250 flags: phsync, pvsync, interlace; type: driver 1920x1080i 29.97 1920 2008 2052 2200 540 1084 1094 1125 74176 flags: phsync, pvsync, interlace; type: driver 1920x1080i 25.00 1920 2448 2492 2640 540 1084 1094 1125 74250 flags: phsync, pvsync, interlace; type: driver 1920x1080i 25.00 1920 1952 2120 2304 540 1126 1136 1250 72000 flags: phsync, nvsync, interlace; type: driver 1152x864 75.00 1152 1216 1344 1600 864 865 868 900 108000 flags: phsync, pvsync; type: driver 1280x720 60.00 1280 1390 1430 1650 720 725 730 750 74250 flags: phsync, pvsync; type: driver 1280x720 59.94 1280 1390 1430 1650 720 725 730 750 74176 flags: phsync, pvsync; type: driver 1280x720 50.00 1280 1720 1760 1980 720 725 730 750 74250 flags: phsync, pvsync; type: driver 1024x768 75.03 1024 1040 1136 1312 768 769 772 800 78750 flags: phsync, pvsync; type: driver 1024x768 60.00 1024 1048 1184 1344 768 771 777 806 65000 flags: nhsync, nvsync; type: driver 800x600 75.00 800 816 896 1056 600 601 604 625 49500 flags: phsync, pvsync; type: driver 800x600 60.32 800 840 968 1056 600 601 605 628 40000 flags: phsync, pvsync; type: driver 720x576 50.00 720 732 796 864 576 581 586 625 27000 flags: nhsync, nvsync; type: driver 720x576 50.00 720 732 796 864 576 581 586 625 27000 flags: nhsync, nvsync; type: driver 720x480 60.00 720 736 798 858 480 489 495 525 27027 flags: nhsync, nvsync; type: driver 720x480 60.00 720 736 798 858 480 489 495 525 27027 flags: nhsync, nvsync; type: driver 720x480 59.94 720 736 798 858 480 489 495 525 27000 flags: nhsync, nvsync; type: driver 720x480 59.94 720 736 798 858 480 489 495 525 27000 flags: nhsync, nvsync; type: driver 640x480 75.00 640 656 720 840 480 481 484 500 31500 flags: nhsync, nvsync; type: driver 640x480 60.00 640 656 752 800 480 490 492 525 25200 flags: nhsync, nvsync; type: driver 640x480 59.94 640 656 752 800 480 490 492 525 25175 flags: nhsync, nvsync; type: driver 640x480 59.94 640 656 752 800 480 490 492 525 25175 flags: nhsync, nvsync; type: driver 720x400 70.08 720 738 846 900 400 412 414 449 28320 flags: nhsync, pvsync; type: driver 720x576i 50.00 720 732 795 864 288 580 586 625 27000 flags: nhsync, nvsync, interlace, dblclk; type: driver 720x576i 50.00 720 732 795 864 288 580 586 625 27000 flags: nhsync, nvsync, interlace, dblclk; type: driver 720x480i 60.00 720 739 801 858 240 488 494 525 27028 flags: nhsync, nvsync, interlace, dblclk; type: driver 720x480i 60.00 720 739 801 858 240 488 494 525 27028 flags: nhsync, nvsync, interlace, dblclk; type: driver 720x480i 59.94 720 739 801 858 240 488 494 525 27000 flags: nhsync, nvsync, interlace, dblclk; type: driver 720x480i 59.94 720 739 801 858 240 488 494 525 27000 flags: nhsync, nvsync, interlace, dblclk; type: driver props: 1 EDID: flags: immutable blob blobs: value: 00ffffffffffff0010ac27a14c543830 171d0103803d2378eeee95a3544c9926 0f5054a54b00714f8180a9c0a940d1c0 e1000101010108e80030f2705a80b058 8a00615d2100001a000000ff004d5950 464b3936323038544c0a000000fc0044 454c4c205532373138514d0a000000fd 0031560a893c000a2020202020200101 02033ef15861605f5e5d100504020716 01141f1213272021220306111523091f 07830100006d030c0010003044200060 03020167d85dc401788001e20f03565e 00a0a0a0295030203500615d2100001a 04740030f2705a80b0588a00615d2100 001ebf1600a08038134030203a00615d 2100001a0000000000000000000000a4 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 6 non-desktop: flags: immutable range values: 0 1 value: 0 4 TILE: flags: immutable blob blobs: value: 20 CRTC_ID: flags: object value: 42 CRTCs: id fb pos size 42 48 (0,0) (3840x2160) 60.00 3840 4016 4104 4400 2160 2168 2178 2250 594000 flags: phsync, nvsync; type: props: 22 ACTIVE: flags: range values: 0 1 value: 1 23 MODE_ID: flags: blob blobs: value: 50100900000fb00f0810301100007008 78088208ca0800000000000009000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000 19 OUT_FENCE_PTR: flags: range values: 0 18446744073709551615 value: 0 24 VRR_ENABLED: flags: range values: 0 1 value: 0 Planes: id crtc fb CRTC x,y x,y gamma size possible crtcs 33 0 0 0,0 0,0 0 0x00000001 formats: NV12 props: 8 type: flags: immutable enum enums: Overlay=0 Primary=1 Cursor=2 value: 0 17 FB_ID: flags: object value: 0 18 IN_FENCE_FD: flags: signed range values: -1 2147483647 value: -1 20 CRTC_ID: flags: object value: 0 13 CRTC_X: flags: signed range values: -2147483648 2147483647 value: 0 14 CRTC_Y: flags: signed range values: -2147483648 2147483647 value: 0 15 CRTC_W: flags: range values: 0 2147483647 value: 0 16 CRTC_H: flags: range values: 0 2147483647 value: 0 9 SRC_X: flags: range values: 0 4294967295 value: 0 10 SRC_Y: flags: range values: 0 4294967295 value: 0 11 SRC_W: flags: range values: 0 4294967295 value: 0 12 SRC_H: flags: range values: 0 4294967295 value: 0 34 0 0 0,0 0,0 0 0x00000001 formats: NV12 props: 8 type: flags: immutable enum enums: Overlay=0 Primary=1 Cursor=2 value: 0 17 FB_ID: flags: object value: 0 18 IN_FENCE_FD: flags: signed range values: -1 2147483647 value: -1 20 CRTC_ID: flags: object value: 0 13 CRTC_X: flags: signed range values: -2147483648 2147483647 value: 0 14 CRTC_Y: flags: signed range values: -2147483648 2147483647 value: 0 15 CRTC_W: flags: range values: 0 2147483647 value: 0 16 CRTC_H: flags: range values: 0 2147483647 value: 0 9 SRC_X: flags: range values: 0 4294967295 value: 0 10 SRC_Y: flags: range values: 0 4294967295 value: 0 11 SRC_W: flags: range values: 0 4294967295 value: 0 12 SRC_H: flags: range values: 0 4294967295 value: 0 35 0 0 0,0 0,0 0 0x00000001 formats: NV12 props: 8 type: flags: immutable enum enums: Overlay=0 Primary=1 Cursor=2 value: 0 17 FB_ID: flags: object value: 0 18 IN_FENCE_FD: flags: signed range values: -1 2147483647 value: -1 20 CRTC_ID: flags: object value: 0 13 CRTC_X: flags: signed range values: -2147483648 2147483647 value: 0 14 CRTC_Y: flags: signed range values: -2147483648 2147483647 value: 0 15 CRTC_W: flags: range values: 0 2147483647 value: 0 16 CRTC_H: flags: range values: 0 2147483647 value: 0 9 SRC_X: flags: range values: 0 4294967295 value: 0 10 SRC_Y: flags: range values: 0 4294967295 value: 0 11 SRC_W: flags: range values: 0 4294967295 value: 0 12 SRC_H: flags: range values: 0 4294967295 value: 0 36 0 0 0,0 0,0 0 0x00000001 formats: NV12 props: 8 type: flags: immutable enum enums: Overlay=0 Primary=1 Cursor=2 value: 0 17 FB_ID: flags: object value: 0 18 IN_FENCE_FD: flags: signed range values: -1 2147483647 value: -1 20 CRTC_ID: flags: object value: 0 13 CRTC_X: flags: signed range values: -2147483648 2147483647 value: 0 14 CRTC_Y: flags: signed range values: -2147483648 2147483647 value: 0 15 CRTC_W: flags: range values: 0 2147483647 value: 0 16 CRTC_H: flags: range values: 0 2147483647 value: 0 9 SRC_X: flags: range values: 0 4294967295 value: 0 10 SRC_Y: flags: range values: 0 4294967295 value: 0 11 SRC_W: flags: range values: 0 4294967295 value: 0 12 SRC_H: flags: range values: 0 4294967295 value: 0 37 0 0 0,0 0,0 0 0x00000001 formats: NV12 props: 8 type: flags: immutable enum enums: Overlay=0 Primary=1 Cursor=2 value: 0 17 FB_ID: flags: object value: 0 18 IN_FENCE_FD: flags: signed range values: -1 2147483647 value: -1 20 CRTC_ID: flags: object value: 0 13 CRTC_X: flags: signed range values: -2147483648 2147483647 value: 0 14 CRTC_Y: flags: signed range values: -2147483648 2147483647 value: 0 15 CRTC_W: flags: range values: 0 2147483647 value: 0 16 CRTC_H: flags: range values: 0 2147483647 value: 0 9 SRC_X: flags: range values: 0 4294967295 value: 0 10 SRC_Y: flags: range values: 0 4294967295 value: 0 11 SRC_W: flags: range values: 0 4294967295 value: 0 12 SRC_H: flags: range values: 0 4294967295 value: 0 38 0 0 0,0 0,0 0 0x00000001 formats: NV12 props: 8 type: flags: immutable enum enums: Overlay=0 Primary=1 Cursor=2 value: 0 17 FB_ID: flags: object value: 0 18 IN_FENCE_FD: flags: signed range values: -1 2147483647 value: -1 20 CRTC_ID: flags: object value: 0 13 CRTC_X: flags: signed range values: -2147483648 2147483647 value: 0 14 CRTC_Y: flags: signed range values: -2147483648 2147483647 value: 0 15 CRTC_W: flags: range values: 0 2147483647 value: 0 16 CRTC_H: flags: range values: 0 2147483647 value: 0 9 SRC_X: flags: range values: 0 4294967295 value: 0 10 SRC_Y: flags: range values: 0 4294967295 value: 0 11 SRC_W: flags: range values: 0 4294967295 value: 0 12 SRC_H: flags: range values: 0 4294967295 value: 0 39 0 0 0,0 0,0 0 0x00000001 formats: NV12 props: 8 type: flags: immutable enum enums: Overlay=0 Primary=1 Cursor=2 value: 0 17 FB_ID: flags: object value: 0 18 IN_FENCE_FD: flags: signed range values: -1 2147483647 value: -1 20 CRTC_ID: flags: object value: 0 13 CRTC_X: flags: signed range values: -2147483648 2147483647 value: 0 14 CRTC_Y: flags: signed range values: -2147483648 2147483647 value: 0 15 CRTC_W: flags: range values: 0 2147483647 value: 0 16 CRTC_H: flags: range values: 0 2147483647 value: 0 9 SRC_X: flags: range values: 0 4294967295 value: 0 10 SRC_Y: flags: range values: 0 4294967295 value: 0 11 SRC_W: flags: range values: 0 4294967295 value: 0 12 SRC_H: flags: range values: 0 4294967295 value: 0 40 42 48 0,0 0,0 0 0x00000001 formats: AR24 props: 8 type: flags: immutable enum enums: Overlay=0 Primary=1 Cursor=2 value: 1 17 FB_ID: flags: object value: 48 18 IN_FENCE_FD: flags: signed range values: -1 2147483647 value: -1 20 CRTC_ID: flags: object value: 42 13 CRTC_X: flags: signed range values: -2147483648 2147483647 value: 0 14 CRTC_Y: flags: signed range values: -2147483648 2147483647 value: 0 15 CRTC_W: flags: range values: 0 2147483647 value: 3840 16 CRTC_H: flags: range values: 0 2147483647 value: 2160 9 SRC_X: flags: range values: 0 4294967295 value: 0 10 SRC_Y: flags: range values: 0 4294967295 value: 0 11 SRC_W: flags: range values: 0 4294967295 value: 251658240 12 SRC_H: flags: range values: 0 4294967295 value: 141557760 32 alpha: flags: range values: 0 256 value: 256 41 0 0 0,0 0,0 0 0x00000001 formats: BG24 props: 8 type: flags: immutable enum enums: Overlay=0 Primary=1 Cursor=2 value: 0 17 FB_ID: flags: object value: 0 18 IN_FENCE_FD: flags: signed range values: -1 2147483647 value: -1 20 CRTC_ID: flags: object value: 0 13 CRTC_X: flags: signed range values: -2147483648 2147483647 value: 0 14 CRTC_Y: flags: signed range values: -2147483648 2147483647 value: 0 15 CRTC_W: flags: range values: 0 2147483647 value: 0 16 CRTC_H: flags: range values: 0 2147483647 value: 0 9 SRC_X: flags: range values: 0 4294967295 value: 0 10 SRC_Y: flags: range values: 0 4294967295 value: 0 11 SRC_W: flags: range values: 0 4294967295 value: 0 12 SRC_H: flags: range values: 0 4294967295 value: 0
Frame buffers:
id size pitch
5.4.0.1. 使用命令modetest设置分辨率
modetest的Connectors ID与硬件设计相关。根据HDMI-TX设备信息,本设计的Connectors ID是44。对应的modetest命令是“modetest -D a0070000.v_mix -s 41:1920x1080-60@AR24”。执行记录如下。
root@vcu_trd:~# modetest -D a0070000.v_mix -s 44:1920x1080-60@AR24
setting mode 1920x1080-60.00Hz@AR24 on connectors 44, crtc 42
5.4.0.2. 启动Xorg
使用新的配置启动Xorg,需要先杀掉旧的Xorg。
root@vcu_trd:~# ps -A |grep -i xorg
853 root 0:00 xinit /etc/X11/Xsession -- /usr/bin/Xorg :0 -br -pn
859 root 0:00 /usr/bin/Xorg :0 -br -pn
1095 root 0:00 grep -i xorg
root@vcu_trd:~# kill 853
xinit: connection to X server lost
waiting for X server to shut down dbus-daemon[896]: Reloaded configuration
[ 696.359949] Warning: Unknown drm_fourcc format code: 875713089
(II) Server terminated successfully (0). Closing log file.
xinit: unexpected signal 15
root@vcu_trd:~# ps -A |grep -i xorg
1100 root 0:00 grep -i xorg
root@vcu_trd:~# Xorg &
[1] 1101
X.Org X Server 1.20.5
X Protocol Version 11, Revision 0
Build Operating System: Linux 3.10.0-693.el7.x86_64 x86_64
Current Operating System: Linux vcu_trd 5.4.0-xilinx-v2020.1 #1 SMP Tue Aug 25 09:25:42 UTC 2020 aarch64
Kernel command line: earlycon clk_ignore_unused consoleblank=0 cma=1700M uio_pdrv_genirq.of_id=generic-uio
Build Date: 26 May 2020 09:01:47PM
Current version of pixman: 0.38.4
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Wed Aug 26 01:53:07 2020
(==) Using config file: "/etc/X11/xorg.conf"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
root@vcu_trd:~# The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning: Unsupported high keycode 372 for name <I372> ignored
> X11 cannot support keycodes above 255.
> This warning only shows for the first high keycode.
Errors from xkbcomp are not fatal to the X server
5.5. 运行QT程序
运行QT程序后,HDMI显示器上,能看到六个每面有数字立方体。
root@vcu_trd:~# export DISPLAY=:0.0
root@vcu_trd:~# QT_QPA_PLATFORM=eglfs /usr/share/examples/opengl/textures/textures
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/var/volatile/tmp/runtime-root'
Unable to query physical screen size, defaulting to 100 dpi.
To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).
Attribute Qt::AA_ShareOpenGLContexts must be set before QCoreApplication is created.
6. 常见问题
6.1. modetest设置格式失败。
因为primary layer没有使能AR24格式,modetest报告错误“failed to set mode: Function not implemented”。请检查硬件和devicetree。
root@vcu_trd:~# modetest -D a0070000.v_mix -s 44:1920x1080-60@AR24
setting mode 1920x1080-60.00Hz@AR24 on connectors 44, crtc 42
failed to set mode: Function not implemented
6.2. Xorg设置格式失败。
因为primary layer没有使能AR24格式,Xorg报告错误“ERROR: drm failed to set mode: Invalid argument
”。请检查硬件和devicetree设置。
root@vcu_trd:~# cat /var/log/Xorg.0.log
[ 400.794] (II) ARMSOC(0): Setting swap chain size: 2
[ 400.794] (II) ARMSOC(0): [DRI2] Setup complete
[ 400.794] (II) ARMSOC(0): [DRI2] DRI driver: armsoc
[ 400.794] (==) ARMSOC(0): Backing store enabled
[ 400.794] (==) ARMSOC(0): Silken mouse enabled
[ 400.794] (II) ARMSOC(0): HW cursor init()
[ 400.794] (EE) ARMSOC(0): ERROR: drm failed to set mode: Invalid argument
[ 400.794] (EE) ARMSOC(0): ERROR: xf86SetDesiredModes() failed!
[ 400.794] (EE) ARMSOC(0): ERROR: ARMSOCEnterVT() failed!
[ 400.800] (EE)
Fatal server error:
[ 400.800] (EE) AddScreen/ScreenInit failed for driver 0
[ 400.800] (EE)
[ 400.800] (EE)
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
[ 400.800] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
[ 400.800] (EE)
[ 400.801] (EE) Server terminated with error (1). Closing log file.
7. 参考文档
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841850/Video+Mixer#Test+Procedure
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/460948332/Zynq+UltraScale+MPSoC+VCU+TRD+2020.1
https://xilinx.sharepoint.com/sites/xkb/SitePages/ArticleViewer.aspx?articleNumber=73119
8. 支持人员
Lonley Zhang,Jimmy Chen, Liu Ka。