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.
__ Le paquet Debian présenté dans cet article n'est pas officiel par Xilinx. __
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.
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
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:
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.
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. 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
[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