Exécutez XRT (Xilinx Runtime) sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (pratique)

introduction

L'auteur fournit Debian GNU / Linux pour Ultra96 / Ultra96-V2 (ZynqMP) 1. De plus, XRT (Xilinx Runtime) est un environnement pour exécuter des programmes développés dans l'environnement de développement (Vitis) fourni par Xilinx sur la plateforme 2.

À l'origine, XRT pour MPSoC Edge Device ne fonctionne que dans l'environnement Linux (Petalinux) fourni par Xilinx, mais la procédure pour exécuter XRT sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 est incluse en plusieurs parties. Je vais expliquer séparément.

Cet article décrit les étapes pour exécuter un exemple de programme sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 exécutant XRT.

Mise en garde

__ Le paquet Debian présenté dans cet article n'est pas officiel par Xilinx. __

Exemple d'introduction

L'exemple XRT présenté dans cette version pratique a été fourni par @ marsee101, qui écrit le blog ["FPGA Room"]. Nous aimerions profiter de cette occasion pour vous remercier. Consultez la page suivante du blog pour obtenir des instructions et des instructions détaillées sur la création de cet exemple.

Télécharger un échantillon

L'exemple de fichier binaire présenté ci-dessus est disponible sur github avec l'autorisation de @ marsee101.

Téléchargez ce référentiel sur Ultra96-V2 avec ZynqMP-FPGA-XRT installé.

shell$ git clone https://github.com/ikwzm/ZynqMP-FPGA-XRT-Example-1-Ultra96
Cloning into 'ZynqMP-FPGA-XRT-Example-1-Ultra96'...
remote: Enumerating objects: 13, done.
remote: Counting objects: 100% (13/13), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 13 (delta 3), reused 13 (delta 3), pack-reused 0
Unpacking objects: 100% (13/13), done.
shell$ cd ZynqMP-FPGA-XRT-Example-1-Ultra96

Paramètres d'environnement XRT

Définissez les variables d'environnement pour XRT. XRT fournit /opt/xilinx/xrt/setup.sh pour définir les variables d'environnement, utilisez donc ceci.

shell$ source /opt/xilinx/xrt/setup.sh
XILINX_XRT      : /opt/xilinx/xrt
PATH            : /opt/xilinx/xrt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
LD_LIBRARY_PATH : /opt/xilinx/xrt/lib:
PYTHONPATH     : /opt/xilinx/xrt/python:

Préparation du fichier bitstream FPGA

Le référentiel téléchargé contient déjà un fichier de flux de bits FPGA (streaming_lap_filter5.bin), mais cette section décrit comment créer ce fichier de flux de bits.

Ce fichier de flux binaire sert de base à la reconfiguration partielle (voir «Préparation de l'arborescence des périphériques» dans la section Installation pour plus d'informations). À l'origine, le fichier de flux de bits de base aurait dû être créé séparément lors de la création de xclbin, mais dans cet exemple d'exemple, il est identique au fichier de flux de bits contenu dans le fichier xclbin «accidentellement». Par conséquent, récupérez d'abord le fichier bitstream à l'aide de la commande xclbinutil.

shell$ xclbinutil --input streaming_lap_filter5.xclbin --dump-section BITSTREAM:RAW:streaming_lap_filter5.bit
XRT Build Version: 2.6.0 (2019.2_Ultra96)
       Build Date: 2020-03-26 13:46:25
          Hash ID: 4a669990dd872f3b683009c0e2200b3bd3d2a9c0
------------------------------------------------------------------------------
Warning: The option '--output' has not been specified. All operations will
         be done in memory with the exception of the '--dump-section' command.
------------------------------------------------------------------------------
Reading xclbin file into memory.  File: streaming_lap_filter5.xclbin
Section: 'BITSTREAM'(0) was successfully written.
Format: RAW
File  : 'streaming_lap_filter5.bit'
Leaving xclbinutil.

Ensuite, utilisez la commande bootgen pour créer streaming_lap_filter5.bin. streaming_lap_filter5.bif est inclus dans le référentiel.

shell$ bootgen -arch zynqmp -image streaming_lap_filter5.bif -o tmp.bin
****** Xilinx Bootgen v2019.2
  **** Build date : Jan 16 2020-08:00:00
    ** Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.

La commande bootgen n'est pas incluse dans XRT (Xilinx Runtime). Veuillez installer en vous référant à l'article suivant.

Préparation de zocl

Lorsque vous avez installé ZynqMP-FPGA-XRT, zocl (module de noyau Linux pour périphérique MPSoC Edge) a également été installé. Cependant, zocl n'est pas activé simplement en l'installant sur Linux. Une arborescence de périphériques est requise pour activer zocl. Par conséquent, l'arborescence des périphériques suivante est préparée.

zocl.dts


/dts-v1/; /plugin/;
/ {
	fragment@0 {
		target-path = "/fpga-full";
		__overlay__ {
			firmware-name = "streaming_lap_filter5.bin";
		};
	};
	fragment@1 {
		target-path = "/amba_pl@0";
		__overlay__ {
			#address-cells = <2>;
			#size-cells = <2>;
			zyxclmm_drm {
				compatible = "xlnx,zocl";
				status = "okay";
				reg = <0x0 0xA0000000 0x0 0x10000>;
			};
			fclk0 {
				compatible    = "ikwzm,fclkcfg-0.10.a";
				clocks        = <&zynqmp_clk 0x47>;
				insert-rate   = "100000000";
				insert-enable = <1>;
				remove-rate   = "1000000";
				remove-enable = <0>;
			};
		};
	};
};

Copiez streaming_lap_filter5.bin dans / lib / firmware.

shell$ sudo cp streaming_lap_filter5.bin /lib/firmware/

Superposition de l'arborescence des périphériques zocl.dts. Nous avons préparé un script ruby pour Device Tree Overlay appelé dtbicfg.rb, alors utilisez ceci.

shell$ sudo ./dtbocfg.rb --install zocl --dts zocl.dts
<stdin>:14.16-18.6: Warning (unit_address_vs_reg): /fragment@1/__overlay__/zyxclmm_drm: node has a reg or ranges property, but no unit name

Vérifiez le journal du noyau avec dmesg. Cela réussit si vous pouvez confirmer que streaming_lap_filter5.bin a été programmé dans le FPGA par le gestionnaire fpga, que le module du noyau zocl a été chargé et que fclkcfg a réglé la fréquence de PL Clock0 à 100 MHz.

shell$ dmesg | tail -12
[ 4824.024388] fpga_manager fpga0: writing streaming_lap_filter5.bin to Xilinx ZynqMP FPGA Manager
[ 4824.176574] [drm] Probing for xlnx,zocl
[ 4824.176710] [drm] FPGA programming device pcap founded.
[ 4824.176715] [drm] PR Isolation addr 0x0
[ 4824.178392] [drm] Initialized zocl 2018.2.1 20180313 for a0000000.zyxclmm_drm on minor 1
[ 4824.180629] fclkcfg amba_pl@0:fclk0: driver installed.
[ 4824.180640] fclkcfg amba_pl@0:fclk0: device name    : amba_pl@0:fclk0
[ 4824.180644] fclkcfg amba_pl@0:fclk0: clock  name    : pl0_ref
[ 4824.180649] fclkcfg amba_pl@0:fclk0: clock  rate    : 99999999
[ 4824.180674] fclkcfg amba_pl@0:fclk0: clock  enabled : 1
[ 4824.180677] fclkcfg amba_pl@0:fclk0: remove rate    : 1000000
[ 4824.180681] fclkcfg amba_pl@0:fclk0: remove enable  : 0

Exécutez l'exemple

Exécutez l'exemple. Si vous obtenez le résultat suivant, vous réussissez.

shell$ ./streaming_lap_filter5.exe streaming_lap_filter5.xclbin
Using FPGA binary file specfied through the command line: streaming_lap_filter5.xclbin
Found Platform
Platform Name: Xilinx
Loading: 'streaming_lap_filter5.xclbin'
total time = 0.001533 sec
Success HW and SW results match

référence

[Présentation]: https://qiita.com/ikwzm/items/0d3a8adfe725cd17f932 "Exécution de XRT (Xilinx Runtime) sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (Présentation)" @Qiita " [Build]: https://qiita.com/ikwzm/items/d8013ea91125a3fc46aa "Exécution de XRT (Xilinx Runtime) sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (Build)" @Qiita " [Installation]: https://qiita.com/ikwzm/items/6612eacc4a0d324a0a68 "" Exécution de XRT (Xilinx Runtime) sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (Installation) "@Qiita" [Pratique]: https://qiita.com/ikwzm/items/58cfea3f9d0f42840511 "" Exécution de XRT (Xilinx Runtime) sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (pratique) "@Qiita" [Édition Vitis]: https://qiita.com/ikwzm/items/e70d8d0e44fe3784a708 "" Exécution de XRT (Xilinx Runtime) sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (édition Vitis) "@Qiita" ["Exécutez bootgen sur Debian GNU / Linux, Ubuntu" @Qiita]: https://qiita.com/ikwzm/items/97811fcff7876181209f "Exécutez bootgen sur Debian GNU / Linux, Ubuntu" @Qiita " ["Salle FPGA"]: https://marsee101.blog.fc2.com "" Salle FPGA "" ["Tentative d'une connexion storming à l'aide du noyau RTL dans Vitis 2019.2 1"]: https://marsee101.blog.fc2.com/blog-entry-4823.html "" Storming à l'aide du noyau RTL dans Vitis 2019.2 Essayez la connexion 1 "" ["Essayez de prendre d'assaut la connexion en utilisant le noyau RTL dans Vitis 2019.2 2"]: https://marsee101.blog.fc2.com/blog-entry-4824.html "" En utilisant le noyau RTL dans Vitis 2019.2 Essayez la connexion 2 "" ["Essayez de prendre d'assaut la connexion en utilisant le noyau RTL dans Vitis 2019.2 3"]: https://marsee101.blog.fc2.com/blog-entry-4825.html "" En utilisant le noyau RTL dans Vitis 2019.2 Essayez la connexion 3 "" ["Essayez de prendre d'assaut la connexion en utilisant le noyau RTL dans Vitis 2019.2 4"]: https://marsee101.blog.fc2.com/blog-entry-4826.html "" En utilisant le noyau RTL dans Vitis 2019.2 Essayez la connexion 4 ""

Recommended Posts

Exécutez XRT (Xilinx Runtime) sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (pratique)
Exécutez XRT (Xilinx Runtime) sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (Présentation)
Exécutez XRT (Xilinx Runtime) sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (Installation)
Exécutez XRT (Xilinx Runtime) sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (Build)
Exécutez XRT (Xilinx Runtime) sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (Build) [Unfinished]
Exécutez XRT (Xilinx Runtime) sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (Installation) [Inachevé]
Exécutez XRT (Xilinx Runtime) sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (édition Vitis)
Exécuter X Window sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (édition fbdev)
Exécuter X Window sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (présentation)
Exécutez le pilote Lima sur Debian GNU / Linux pour Ultra96 / Ultra96-V2
Exécuter X Window sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (LibMali)
Exécuter X Window sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (pilote vidéo)
Exécuter X Window sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (Gnome Desktop)
Exécuter X Window sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (pilote Mali)
Image de démarrage Debian GNU / Linux (version v2019.2) pour UltraZed / Ultra96 / Ultra96-V2
Exécutez bootgen sur Debian GNU / Linux, Ubuntu
Linux sur Windows -1-: Présentation de Debian