您可点击开发者分享|Multi-Scaler IP 的 Linux 示例以及 Debug (上)查看上篇文章。
Petalinux 工程:
1.设置好 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
2. CD 到新建的 Petalinux 工程下:
cd xilinx-zcu106-2022.2/
3. 在上面 AMD Vivado™ Design Suite 生成的 .xsa 文件导入到 Petalinux 工程:
petalinux-config --get-hw-description=<your directory>/v_multi_scaler_0_ex/
XSA 文件在
<your directory>/v_multi_scaler_0_ex/.
System Configuration:
4. 在 System Configuration 配置页面,选择 DTG settings。
5. 在 DTG settings页面,按”n”把“Remove PL from device tree”勾掉,确保这个选项不要选上。
6.在 DTG Settings→kernel Bootargs→Add extra boot args,可以加上 cma=1700M。
7. 在 System Configuration 配置页面,选择 FPGA Manager,按“n”把 FPGA Manager 选项勾掉。
Kernel Configuration:
8. 运行下面命令:
Petalinux-config -c kernel
9. 在Kernel配置页面, 确保CONFIG_VIDEO_XILINX, CONFIG_VIDEO_DEV, CONFIG_VIDEO_V4L2, CONFIG_VIDEO_XILINX_MULTISCALER 这些选项都已经配置好。
10. 可以在 Kernel 配置页面,用‘/’来搜索这些配置是否已经设置。
Rootfs 配置:
11. 运行下面命令,配置 Rootfs:
petalinux-config -c rootfs
12. 在 Filesystem Packages→misc→v4l-utils,配置好 v4l-utils, libv4l, media-ctl。
13. 在Filesystem Packages→misc→gstreamer1.0-plugins-good,按”y”把下面选项都勾上。
编译 Petalinux工程:
14. petalinux-build
创建 Boot Image:
15. cd images/linux
16. petalinux-package --boot --fsbl zynqmp_fsbl.elf --u-boot u-boot.elf --pmufw pmufw.elf --fpga system.bit
拷贝 Image 到 SD card:
17. 把生成的BOOT.BIN, system.dtb, Image, rootfs.cpio.gz.u-boot, boot.scr 拷贝搭配 SD card。
ZCU106 板卡设置与连接:
18. 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.
19. Insert the SD card with the images copied into the SD card slot J100.
20. Set the SW6 switches as shown in the below Figure. This configures the boot settings to boot from SD.
21. Connect 12V Power to the ZCU106 6-Pin Molex connector.
22. Set up a terminal session between a PC COM port and the serial port on the evaluation board.
Run the image on ZCU106:
23. 在 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
24. 把 SD card mount 到 /mnt/。
mount /dev/mmcblk0p1 /mnt/
25. 把刚才生成的 out_chan0.rgb 拷贝到 /mnt。
cp out_chan0.rgb /mnt/
在 YUV player 打开 out_chan0.rgb
26. 设置 YUV player 的 size 为 1080p,color 为 RGB24, zoom 设置为1:2或者1:4。打开out_chan0.rgb,就能看到下面图片:
Multi-scaler 在 linux 的 debug:
27. 比较常见的问题,是在运行上面的 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。
28. Multi-scaler 的第一个node, 它的 gstreamer element 是 "v4l2convert" 而不是 "v4l2video0convert",之前第一个node是v4l2video0convert,第二个node是v4l2video1convert,现在 1st node 是 "v4l2convert",2nd 是“v4l2video1convert ”。
AMD 自适应 SOC 及 FPGA 中文技术支持社区