电子说
这是《创建 Vitis 加速平台》系列的第 2 篇博文。在前文中,我们讲解了如何创建硬件以及如何通过 XSA 将元数据 (metadata) 传递给 Vitis。
在本文中,我们将讲解如何使用此 XSA 以及如何创建在目标平台上实现设计加速所需的软件镜像。
您可通过下列链接查看其它各部分:
第 1 部分:在 Vivado 中为加速平台创建硬件工程
第 3 部分:在 Vitis 中封装加速平台 (请点击“阅读原文”查看)
第 4 部分:在 Vitis 中测试定制加速平台 (请点击“阅读原文”查看)
引言:
熟悉 OpenCL 的用户可能对“内核 (kernel)”一词已耳熟能详,在 OpenCL 中执行功能的位置即被称为“内核”。
在 Vitis 加速流程中也使用同样的命名法。但在其中使用 Xilinx Runtime (XRT) API 来执行内核。
XRT 基于 Linux 并在 x86 或开发板(AArch64 或 Arm)上运行。XRT 的功能与用于其执行的架构彼此独立,即,它并不知晓自己是在 x86 上执行还是在开发板(AArch64 或 Arm)上执行。
但对于边缘(AArch64 或 Arm)平台,我们需要添加 ZOCL 驱动。ZOCL 驱动用于为每个内核分配资源。在本文中,我们将讲解如何向全新或现有 PetaLinux 工程添加 XRT 和 ZOCL。
向 PetaLinux 工程添加 XRT:
petalinux-create -t project --template zynqMP -n zcu104_base_sw cd zcu104_base_sw petalinux-config --get-hw-description=Select DTG Settings -> (zcu104-revc) MACHINE_NAME
打开 project-spec/meta-user/conf/user-rootfsconfig,并添加如下内容:
CONFIG_xrt CONFIG_xrt-dev CONFIG_zocl CONFIG_opencl-clhpp-dev CONFIG_opencl-headers-dev CONFIG_packagegroup-petalinux-opencvpetalinux-config -c rootfs User Packages, and select all here
下一步,将 zocl 驱动节点添加到 system-user.dtsi。
/include/ "system-conf.dtsi" /{ }; &axi_intc_0 { xlnx,kind-of-intr = <0x0>; xlnx,num-intr-inputs = <0x20>; }; &amba { zyxclmm_drm { compatible = "xlnx,zocl"; status = "okay"; interrupt-parent = <&axi_intc_0>; interrupts = <0 4>,<1 4>, <2 4>, 4>, <4 4>, <5 4>, <6 4>, <7 4>, <8 4>, <9 4>, <10 4>, <11 4>, <12 4>, <13 4>, <14 4>,<15 4>, <16 4>, <17 4>, <18 4>, <19 4>, <20 4>, <21 4>, <22 4>, <23 4>, <24 4>, <25 4>, <26 4>, <27 4>, <28 4>, <29 4>, <30 4>, <31 4>; }; };
然后,运行以下命令:
petalinux-build cd images/linux petalinux-build --sdk petalinux-package --sysroot
完整性检查:
在封装平台之前,有必要执行完整性检查,以确保已将 XRT 和 ZOCL 添加到 rootfs 中。
方法是在板上启动 Linux 镜像:
cd images/linux petalinux-package --boot --fpga --u-boot
将以下文件置于启动器件上,然后启动
• image.ub
• BOOT.BIN
• boot.scr
验证 XRT 库:
在 /usr/lib 目录中对 XRT 库执行 grep 操作:
ls /usr/lib | grep libxrt_core
针对 libxilinxopencl 重复此操作:
ls /usr/lib | grep libxilinxopencl
验证 ZOCL DT 节点:
列出 amba 下的所有节点
ls /sys/devices/platform/amba
至此大功告成。
这样所得到的 Linux 镜像中已包含了 XRT 支持,并且针对开发板已启用该支持。不仅如此,我们已生成了 Vitis 中执行交叉编译所需的 sysroot。
如果您计划设置一系列定制平台用于相同架构,那么只需为每个版本创建 1 个 sysroot 即可(例如,2020.1)。
如需了解后续步骤,请参阅本系列博客的第 3 部分:在 Vitis 中封装加速平台
责任编辑:lq
全部0条评论
快来发表一下你的评论吧 !