Multi-Scaler IP的Linux示例以及Debug(下)

描述

Petalinux 工程:

设置好 2022.2 Petalinux 环境。使用 2022.2 ZCU06 BSP,创建 Petalinux 工程:

petalinux-create $BSP_DIR/xilinx-zcu106-v2022.2-final.bsp

这个例子的 BSP_DIR= /proj/petalinux/released/Petalinux v2022.2/finalrelease/release/petalinux-v2022.2_10141622/bsp/release

CD 到新建的 Petalinux 工程下:

cd xilinx-zcu106-2022.2/

在上面 AMD Vivado™ Design Suite 生成的 .xsa 文件导入到 Petalinux 工程:

petalinux-config --get-hw-description=/v_multi_scaler_0_ex/

XSA 文件在

/v_multi_scaler_0_ex/.

System Configuration:

在 System Configuration 配置页面,选择 DTG settings。

文件

在 DTG settings页面,按”n”把“Remove PL from device tree”勾掉,确保这个选项不要选上。

文件

在 DTG Settings→kernel Bootargs→Add extra boot args,可以加上 cma=1700M。

在 System Configuration 配置页面,选择 FPGA Manager,按“n”把 FPGA Manager 选项勾掉。

文件

文件

Kernel Configuration:

运行下面命令:

Petalinux-config -c kernel

在Kernel配置页面, 确保CONFIG_VIDEO_XILINX, CONFIG_VIDEO_DEV, CONFIG_VIDEO_V4L2, CONFIG_VIDEO_XILINX_MULTISCALER 这些选项都已经配置好。

文件

可以在 Kernel 配置页面,用‘/’来搜索这些配置是否已经设置。

文件

文件

Rootfs 配置:

运行下面命令,配置 Rootfs:

petalinux-config -c rootfs

在 Filesystem Packages→misc→v4l-utils,配置好 v4l-utils, libv4l, media-ctl。

在Filesystem Packages→misc→gstreamer1.0-plugins-good,按”y”把下面选项都勾上。

文件

编译 Petalinux工程:

petalinux-build

创建 Boot Image:

cd images/linux

petalinux-package --boot --fsbl zynqmp_fsbl.elf --u-boot u-boot.elf --pmufw pmufw.elf --fpga system.bit

拷贝 Image 到 SD card:

把生成的BOOT.BIN, system.dtb, Image, rootfs.cpio.gz.u-boot, boot.scr 拷贝搭配 SD card。

ZCU106 板卡设置与连接:

Connect the Micro USB cable into the ZCU106 Board Micro USB port J83, and the other end into an open USB port on the host PC. This cable is used for UART over USB communication.

Insert the SD card with the images copied into the SD card slot J100.

Set the SW6 switches as shown in the below Figure. This configures the boot settings to boot from SD.

文件

Connect 12V Power to the ZCU106 6-Pin Molex connector.

Set up a terminal session between a PC COM port and the serial port on the evaluation board.

Run the image on ZCU106:

在 Linux Booting 完成后,运行下面的 gst-launch 命令:

gst-launch-1.0 videotestsrc num-buffers=50 ! video/x-raw, width=3840, height=2160, format=RGB ! queue min-threshold-buffers=2 max-size-bytes=0 ! v4l2convert capture-io-mode=4 output-io-mode=4 ! video/x-raw, width=1920, height=1080, format=RGB ! filesink location=./out_chan0.rgb

把 SD card mount 到 /mnt/。

mount /dev/mmcblk0p1 /mnt/

把刚才生成的 out_chan0.rgb 拷贝到 /mnt。

cp out_chan0.rgb /mnt/

在 YUV player 打开 out_chan0.rgb

设置 YUV player 的 size 为 1080p,color 为 RGB24, zoom 设置为1:2或者1:4。打开out_chan0.rgb,就能看到下面图片:

文件

Multi-scaler 在 linux 的 debug:

比较常见的问题,是在运行上面的 gst-launch 命令,找不到“v4l2convert” element。遇到这个错误,需要看 multi-scaler 在 boot log 有没有 probe。一个经常看到的原因是 multi-scaler 的 device tree 里 reset-gpios 这个 property 是必须的,但 DTG 有的时候没有产生这个 property,或者是 gpio 没有连接到 multi-scaler 的 reset 管脚,所以确保 reset-gpios 这个 property 在 device tree, 否则就会看到错误。下面是 video multi-scaler device tree 的参考例子,如果不确定 device tree 是否正确,对比下面的例子,检查 device tree 是否有缺少的 property。

文件

Multi-scaler 的第一个node, 它的 gstreamer element 是 "v4l2convert" 而不是 "v4l2video0convert",之前第一个node是v4l2video0convert,第二个node是v4l2video1convert,现在 1st node 是 "v4l2convert",2nd 是“v4l2video1convert ”。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分