作者:Stephen MacMahon,来源: 赛灵思中文社区论坛
注意:本文内容皆来源于Xilinx工程师,如需转载,请写明出处作者及赛灵思论坛链接并发邮件èï¼æªç»Xilinxåèä½æ人许å¯ï¼ç¦æ¢ç¨ä½åä¸ç¨éã
è¿æ¯ãå建 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-opencv
petalinux-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 ä¸å°è£ å éå¹³å°