Der Autor stellt Debian GNU / Linux für Ultra96 / Ultra96-V2 (ZynqMP) zur Verfügung 1. Darüber hinaus ist XRT (Xilinx Runtime) eine Umgebung zum Ausführen von Programmen, die in der von Xilinx bereitgestellten Entwicklungsumgebung (Vitis) auf der Plattform entwickelt wurden 2.
Ursprünglich funktioniert XRT für MPSoC Edge Device nur in der von Xilinx bereitgestellten Linux-Umgebung (Petalinux), aber das Verfahren zum Ausführen von XRT unter Debian GNU / Linux für Ultra96 / Ultra96-V2 ist in mehreren Teilen enthalten. Ich werde es separat erklären.
Dieser Artikel beschreibt die Schritte zum Ausführen eines Beispielprogramms unter Debian GNU / Linux für Ultra96 / Ultra96-V2 unter XRT.
__ Das in diesem Artikel vorgestellte Debian-Paket ist nicht offiziell von Xilinx. __ __
Das in dieser praktischen Version vorgestellte XRT-Beispiel wurde von @ marsee101 bereitgestellt, der den Blog ["FPGA Room"] schreibt. Wir möchten diese Gelegenheit nutzen, um Ihnen zu danken. Auf der nächsten Seite des Blogs finden Sie Anweisungen und detaillierte Anweisungen zum Erstellen dieses Beispiels.
Die oben eingeführte Beispiel-Binärdatei ist mit Genehmigung von @ marsee101 auf github verfügbar.
Laden Sie dieses Repository mit installiertem ZynqMP-FPGA-XRT auf Ultra96-V2 herunter.
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
Legen Sie Umgebungsvariablen für XRT fest. XRT bietet /opt/xilinx/xrt/setup.sh zum Festlegen von Umgebungsvariablen. Verwenden Sie diese Option.
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:
Das heruntergeladene Repository enthält bereits eine FPGA-Bitstream-Datei (Streaming_lap_filter5.bin). In diesem Abschnitt wird jedoch beschrieben, wie Sie diese Bitstream-Datei erstellen.
Diese Bitstream-Datei ist die Grundlage für die teilweise Neukonfiguration (weitere Informationen finden Sie unter "Vorbereiten des Gerätebaums" im Abschnitt "Installation"). Ursprünglich sollte die Basis-Bitstream-Datei beim Erstellen von xclbin separat erstellt worden sein. In diesem Beispielbeispiel entspricht sie jedoch der Bitstream-Datei, die in der "versehentlich" xclbin-Datei enthalten ist. Rufen Sie daher zuerst die Bitstream-Datei mit dem Befehl xclbinutil ab.
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.
Verwenden Sie dann den Befehl bootgen, um stream_lap_filter5.bin zu erstellen. stream_lap_filter5.bif ist im Repository enthalten.
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.
Der Bootgen-Befehl ist in XRT (Xilinx Runtime) nicht enthalten. Bitte installieren Sie anhand des folgenden Artikels.
Bei der Installation von ZynqMP-FPGA-XRT wurde auch zocl (Linux-Kernelmodul für MPSoC Edge Device) installiert. Zocl wird jedoch nicht nur durch die Installation unter Linux aktiviert. Ein Gerätebaum ist erforderlich, um zocl zu aktivieren. Daher wird der folgende Gerätebaum erstellt.
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>;
};
};
};
};
Kopieren Sie layout_lap_filter5.bin nach / lib / firmware.
shell$ sudo cp streaming_lap_filter5.bin /lib/firmware/
Gerätebaumüberlagerung zocl.dts. Wir haben ein Ruby-Skript für Device Tree Overlay mit dem Namen dtbicfg.rb vorbereitet. Verwenden Sie dieses Skript.
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
Überprüfen Sie das Kernel-Protokoll mit dmesg. Es ist erfolgreich, wenn Sie bestätigen können, dass stream_lap_filter5.bin vom fpga-Manager in das FPGA programmiert wurde, das zocl-Kernelmodul geladen wurde und fclkcfg die Frequenz von PL Clock0 auf 100 MHz eingestellt hat.
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
Führen Sie die Probe aus. Wenn Sie das folgende Ergebnis erhalten, sind Sie erfolgreich.
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
[Übersicht]: https://qiita.com/ikwzm/items/0d3a8adfe725cd17f932 "Ausführen von XRT (Xilinx Runtime) unter Debian GNU / Linux für Ultra96 / Ultra96-V2 (Übersicht)" @Qiita " [Build]: https://qiita.com/ikwzm/items/d8013ea91125a3fc46aa "Ausführen von XRT (Xilinx Runtime) unter Debian GNU / Linux für Ultra96 / Ultra96-V2 (Build)" @Qiita " [Installation]: https://qiita.com/ikwzm/items/6612eacc4a0d324a0a68 "" Ausführen von XRT (Xilinx Runtime) unter Debian GNU / Linux für Ultra96 / Ultra96-V2 (Installation) "@Qiita" [Übung]: https://qiita.com/ikwzm/items/58cfea3f9d0f42840511 "" Ausführen von XRT (Xilinx Runtime) unter Debian GNU / Linux für Ultra96 / Ultra96-V2 (Übung) "@Qiita" [Vitis Edition]: https://qiita.com/ikwzm/items/e70d8d0e44fe3784a708 "" Ausführen von XRT (Xilinx Runtime) unter Debian GNU / Linux für Ultra96 / Ultra96-V2 (Vitis Edition) "@Qiita" ["Bootgen unter Debian GNU / Linux, Ubuntu" @Qiita ausführen]: https://qiita.com/ikwzm/items/97811fcff7876181209f "Bootgen unter Debian GNU / Linux, Ubuntu" @Qiita "ausführen ["FPGA-Raum"]: https://marsee101.blog.fc2.com "" FPGA-Raum "" ["Versuch einer Storming-Verbindung mit dem RTL-Kernel in Vitis 2019.2 1"]: https://marsee101.blog.fc2.com/blog-entry-4823.html "" Storming mit dem RTL-Kernel in Vitis 2019.2 Versuchen Sie die Verbindung 1 "" ["Versuchen Sie, die Verbindung mit dem RTL-Kernel in Vitis 2019.2 2 zu stürmen"]: https://marsee101.blog.fc2.com/blog-entry-4824.html "" Stürmen mit dem RTL-Kernel in Vitis 2019.2 Versuchen Sie die Verbindung 2 "" ["Versuchen Sie, die Verbindung mit dem RTL-Kernel in Vitis 2019.2 3 zu stürmen"]: https://marsee101.blog.fc2.com/blog-entry-4825.html "" Stürmen mit dem RTL-Kernel in Vitis 2019.2 Versuchen Sie die Verbindung 3 "" ["Versuchen Sie, die Verbindung mit dem RTL-Kernel in Vitis 2019.2 4 zu stürmen"]: https://marsee101.blog.fc2.com/blog-entry-4826.html "" Stürmen mit dem RTL-Kernel in Vitis 2019.2 Versuchen Sie die Verbindung 4 ""