如何在petalinux下编译vcu-gst-app以及独立编译vcu-gst-app
Xilinx从2018.1开始,提供了一套基于zcu106的vcu参考设计。
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841711/Zynq+UltraScale+MPSoC+VCU+TRD
里面提供了一套基于GStreamer的程序,即vcu-gst-app。但是这个需要基于petalinux环境编译:
petalinux-build -c vcu-gst-app
如何脱离petalinux直接编译呢,这里以PetaLinux2020.2为例,其他版本也是类似的操作
一、在Petalinux下编译vcu-gst-app
1.创建Petalinux工程
这步与正常的创建petalinux工程一样。具体命令如下
#用bsp创建工程
petalinux-create -t project -s xilinx-vcu-zcu106-v2020.2-final.bsp
#进入工程目录
cd xilinx-vcu-zcu106-v2020.2-final/
#导入xsa
petalinux-config --get-hw-description=../
#配置整体信息
petalinux-config
#配置内核
petalinux-config -c kernel
#配置u-boot
petalinux-config -c u-boot
#配置根文件,在这个里面选中vcu_gst_app
petalinux-config -c rootfs
#编译
petalinux-build
详细步骤和解释可以参考
Petalinux快速入门向导 (4) 第三章.PetaLinux开发基本流程
2. 重要说明(2024-9-29添加)
注意zcu106的bsp有两种,一定要用前缀是xilinx-vcu,后缀是final的bsp包,文件大小是几M。 不要用成另外一个几G的bsp包了。 比如xilinx-vcu-zcu106-v2020.2-final.bsp。 另外还需要一个xsa,比如zcu106_trd_wrapper.xsa先用bsp创建工程,创建后目录project-spec/meta-user/recipes-apps/vcu-gst-app下只有一个vcu-gst-app.bb文件。
要完整编译工程后,才会下载相应的源代码。编译完成后,目录结构如下:
xlx@u16:/opt/work/p202/vcu_test/xilinx-vcu-zcu106-v2020.2-final/project-spec/meta-user/recipes-apps/vcu-gst-app$ tree
.
├── files
│ ├── AUTHORS
│ ├── autogen.sh
│ ├── configure.ac
│ ├── COPYING
│ ├── Makefile.am
│ ├── vcu_apm_lib.zip
│ ├── vcu_gst_app.zip
│ ├── vcu_gst_lib.zip
│ └── vcu_video_lib.zip
├── README
└── vcu-gst-app.bb
1 directory, 11 files
二、独立编译vcu-gst-app: 准备工作
1.工具准备:编译并安装sdk
编译对应的sdk,后续需要用到这个编译器来编译我们的代码
petalinux-build --sdk
petalinux-package --sysroot
在我的电脑上,工程目录是/opt/work/p202/xilinx-vcu-zcu106-v2020.2-final/
安装后的sdk路径是./images/linux/sdk
完整路径是/opt/work/p202/xilinx-vcu-zcu106-v2020.2-final/images/linux/sdk
2.源代码准备
2.1 默认的源代码目录
默认源代码位于project-spec/meta-user/recipes-apps/vcu-gst-app目录下
目录结构为
├── files
│ ├── AUTHORS
│ ├── autogen.sh
│ ├── configure.ac
│ ├── COPYING
│ ├── Makefile.am
│ ├── vcu_apm_lib.zip
│ ├── vcu_gst_app.zip
│ ├── vcu_gst_lib.zip
│ └── vcu_video_lib.zip
├── README
└── vcu-gst-app.bb
1 directory, 11 files
2.2整理后的代码目录
创建新目录/opt/work/p202/vcu-gst-app,再创建app,把vcu_gst_app.zip解压到目录下
创建lib子目录,把另外3个压缩包解压到目录下。
完整的目录结构为
.
├── app
│ └── vcu_gst_app
│ ├── include
│ │ ├── configs.h
│ │ └── vcu_gst_app.h
│ ├── input.cfg
│ └── src
│ └── vcu_gst_app.c
├── autogen.sh
├── configure.ac
├── lib
│ ├── vcu_apm_lib
│ │ ├── include
│ │ │ ├── perfapm.h
│ │ │ ├── uio_common.h
│ │ │ ├── uio_perfmon.h
│ │ │ └── uio_perfmon_hw.h
│ │ ├── README.md
│ │ └── src
│ │ ├── perfmon.c
│ │ ├── uio_common.c
│ │ └── uio_perfmon.c
│ ├── vcu_gst_lib
│ │ ├── include
│ │ │ ├── vgst_config.h
│ │ │ ├── vgst_err.h
│ │ │ ├── vgst_lib.h
│ │ │ ├── vgst_pipeline.h
│ │ │ ├── vgst_split_pipeline.h
│ │ │ └── vgst_utils.h
│ │ ├── README.md
│ │ └── src
│ │ ├── vgst_lib.c
│ │ ├── vgst_pipeline.c
│ │ ├── vgst_split_pipeline.c
│ │ └── vgst_utils.c
│ └── vcu_video_lib
│ ├── include
│ │ ├── drm_helper.h
│ │ ├── gpio_utils.h
│ │ ├── helper.h
│ │ ├── mediactl_helper.h
│ │ ├── v4l2_subdev_helper.h
│ │ ├── vcap_csi.h
│ │ ├── vcap_csi_int.h
│ │ ├── vcap_hdmi_int.h
│ │ ├── vcap_quad_csi.h
│ │ ├── vcap_quad_csi_int.h
│ │ ├── vcap_scd_int.h
│ │ ├── vcap_sdi_int.h
│ │ ├── vcap_tpg.h
│ │ ├── vcap_tpg_int.h
│ │ ├── video.h
│ │ ├── video_int.h
│ │ └── xilinx-v4l2-controls.h
│ └── src
│ ├── drm_helper.c
│ ├── gpio_utils.c
│ ├── mediactl_helper.c
│ ├── v4l2_subdev_helper.c
│ ├── vcap_csi.c
│ ├── vcap_hdmi.c
│ ├── vcap_quad_csi.c
│ ├── vcap_scd.c
│ ├── vcap_sdi.c
│ ├── vcap_tpg.c
│ ├── video.c
│ └── video_src.c
└── Makefile.am
14 directories, 55 files
三、配置Makefile
1.修改Makefile.am中的默认路径
1.1 修改路径recipe-sysroot
打开gedit Makefile.am ,搜索recipe-sysroot
共搜索到4处
vcu_gst_app_CFLAGS = $(VCU_GST_CFLAGS) -I$(vcu_gst_app_INC_DIR) -I$(vcu_apm_lib_INC_DIR) -I$(vcu_video_lib_INC_DIR) -I$(vcu_gst_lib_INC_DIR) -I../recipe-sysroot/usr/include/drm -I../recipe-sysroot/usr/include
libvcu_apm_lib_a_CFLAGS = $(VCU_GST_CFLAGS) -I$(vcu_apm_lib_INC_DIR)
libvideo_a_CFLAGS = $(VCU_GST_CFLAGS) -I$(vcu_video_lib_INC_DIR) -I../recipe-sys

本文档详细介绍了如何在不使用PetaLinux工具链的情况下,直接编译Xilinx ZCU106平台上的VCU-GST-APP应用。首先,需要创建工程并安装SDK,然后将源代码整理到合适目录。接着,修改Makefile.am中的路径以适应新的环境,并运行autogen.sh和configure生成Makefile。最后,通过设置SDK环境变量并执行make命令完成编译。过程中遇到了路径配置和依赖库的问题,通过调整配置文件成功解决。
1万+

被折叠的 条评论
为什么被折叠?



