作者:Zhang Yong,AMD工程师;来源:AMD开发者社区
DisplayPort 1.4 Tx Subsystem core的最简pipeline就是如它的linux driver wiki page里的figure-4那样,framebuffer_read+DP+video_phy。Zcu102板卡没有PL DP的专用接口,所以要用到一个FMC子卡来扩展PL DP接口。为了增加系统灵活性,也可以在framebuffer_read core和DP core之间加入mixer core。本例为了增加Xorg server的支持,在mixer core里增加了一层AR24 format的plane,并在设备数里把它这一层设置为primary layer。Vivado工程参考附件vivado_prj.zip
在petalinux 2023.1版本里,有一些问题需要用到一些patch来解决。比如device tree generator的问题需要用到下面这些patch以及system-user.dtsi里的一些特殊设定,参考附件device-tree.zip
001-dptxss-common_proc.patch
001-dptxss-ddrpsv.patch
001-dptxss-dp_tx.patch
001-vid_phy_ctrl.patch
Kernel driver的问题需要用到0001_dp_hdcp_property_check.patch,参考附件recipes-kernel.zip
另外需要增加kernel-module-dp,就是在project-spec/meta-user/conf/user-rootfsconfig里增加CONFIG_kernel-module-dp,然后在rootfs menuconfig里enable这个user module。
如果需要在板上使用Xorg、ffplay、modetest来测试,需要在rootfs里使能一些package, 比如,
libmali-xlnx
packagegroup-core-x11
packagegroup-core-x11-base
packagegroup-core-x11-xserver
v4l-utils
libv4l
media-ctl
v4l-utils-dbg
v4l-utils-dev
libv4l-dev
libdrm
libdrm-tests
libdrm-drivers
xserver-xorg
xserver-xorg-extension-dri
xserver-xorg-extension-glx
xserver-xorg-utils
ffmpeg
petalinux image在zcu102板卡加载到linux之后,可以在/dev/dri/by-path/里看到dri card0和dri card1,分别代码PS DisplayPort和PL DisplayPort两条pipeline,可以使用modetest或者ffplay+Xorg来测试。
1. 命令modetest -D a0010000.v_mix可以显示PL DP这个pipeline上的设备,可以看到connector的ID是40,命令modetest -D a0010000.v_mix -s 40:1920x1080-60@AR24可以通过PL DP在显示器上显示color bar。
2. 另一种测试方式是ffplay+Xorg,首先在启动Xorg前,配置etc/X11/xorg.conf,让它使用PL DP通道,可以参考附件xorg.conf。然后可以使用下面命令启动Xorg并用ffplay命令显示USB camera设备/dev/video0的视频流。
Sudo Xorg &
Export DISPLAY=:0.0
ffplay /dev/video0