{"id":26878,"date":"2023-08-14T03:23:10","date_gmt":"2023-06-29T08:53:05","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8-ultra96-ultra96-v2-%e4%b8%8a%e8%bf%90%e8%a1%8c-debian-gnu-linux-%e5%b9%b6%e5%ae%89%e8%a3%85-xrt-xilinx-runtime-%e7%89%88%e6%9c%ac%e4%b8%ba2-8%e7%89%88%e3%80%82-2\/"},"modified":"2025-08-11T23:34:31","modified_gmt":"2025-08-11T15:34:31","slug":"%e5%9c%a8-ultra96-ultra96-v2-%e4%b8%8a%e8%bf%90%e8%a1%8c-debian-gnu-linux-%e5%b9%b6%e5%ae%89%e8%a3%85-xrt-xilinx-runtime-%e7%89%88%e6%9c%ac%e4%b8%ba2-8%e7%89%88%e3%80%82-2","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8-ultra96-ultra96-v2-%e4%b8%8a%e8%bf%90%e8%a1%8c-debian-gnu-linux-%e5%b9%b6%e5%ae%89%e8%a3%85-xrt-xilinx-runtime-%e7%89%88%e6%9c%ac%e4%b8%ba2-8%e7%89%88%e3%80%82-2\/","title":{"rendered":"\u5728 Ultra96\/Ultra96-V2 \u4e0a\u8fd0\u884c Debian GNU\/Linux \u5e76\u5b89\u88c5 XRT (Xilinx Runtime) \u7248\u672c\u4e3a2.8\u7248"},"content":{"rendered":"<h1>\u9996\u5148\u7b46\u8005\u63d0\u4f9b Debian GNU\/Linux \u7d66 Ultra96\/Ultra96-V2 (ZynqMP)\u3002\u53e6\u5916\uff0cXRT (Xilinx Runtime) \u662f Xilinx \u516c\u53f8\u63d0\u4f9b\u7684\u4e00\u500b\u74b0\u5883\uff0c\u7528\u65bc\u5728 Vitis \u958b\u767c\u74b0\u5883\u4e2d\u904b\u884c\u5728\u8a72\u5e73\u53f0\u4e0a\u958b\u767c\u7684\u7a0b\u5f0f\u3002<\/p>\n<p>\u6b63\u5e38\u60c5\u51b5\u4e0b\uff0cMPSoC Edge Device\u7684XRT\u53ea\u80fd\u5728Xilinx\u63d0\u4f9b\u7684Linux\u73af\u5883\uff08Petalinux\uff09\u4e0a\u8fd0\u884c\u3002\u4f46\u662f\uff0c\u4ee5\u4e0b\u6587\u7ae0\u4ecb\u7ecd\u4e86\u5728Ultra96\/Ultra96-V2\u9002\u7528\u7684Debian GNU\/Linux\u4e0a\u8fd0\u884cXRT\u7684Debian\u5305\u7684\u6784\u5efa\u65b9\u6cd5\u3002<\/p>\n<ul class=\"post-ul\">\u300eUltra96\/Ultra96-V2 \u5411\u3051 Debian GNU\/Linux \u3067 XRT(Xilinx Runtime) \u3092\u52d5\u304b\u3059(\u30d3\u30eb\u30c9\u7de8)\u300f@Qiita<\/ul>\n<p>\u8fd9\u7bc7\u6587\u7ae0\u662f\u5173\u4e8eXRT\u7684\u7eed\u7bc7\uff0c\u4ecb\u7ecd\u4e86\u5982\u4f55\u5728Ultra96\/Ultra96-V2\u4e0a\uff0c\u9488\u5bf9Debian GNU\/Linux\u6216Ubuntu 20.04\u6784\u5efaXRT\u76842.8.0\u7248\u672c\u3002<\/p>\n<h2>\u8bf7\u6ce8\u610f\u8fd9\u4e2a\u6587\u7ae0\u4e2d\u4ecb\u7ecd\u7684Debian\u8f6f\u4ef6\u5305\u5e76\u975eXilinx\u516c\u53f8\u7684\u5b98\u65b9\u4ea7\u54c1\u3002<\/p>\n<h1>XRT Debian \u8f6f\u4ef6\u5305\u7684\u4f9b\u5e94\u4e3a\u4e86\u6784\u5efaXRT\u7684Debian\u5b89\u88c5\u5305\uff0c\u9700\u8981\u914d\u7f6e\u6784\u5efa\u73af\u5883\uff0c\u8fd9\u975e\u5e38\u9ebb\u70e6\u3002\u56e0\u6b64\uff0c\u6211\u4eec\u63d0\u4f9b\u4e86\u5df2\u7ecf\u6784\u5efa\u597d\u7684Debian\u5b89\u88c5\u5305\u3002\u5982\u679c\u60a8\u8ba4\u4e3a\u81ea\u5df1\u6784\u5efa\u5f88\u9ebb\u70e6\uff0c\u8bf7\u4f7f\u7528\u8fd9\u4e2a\u3002<\/p>\n<h2>&#8220;Debian 10 \u4f7f\u7528&#8221;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30ea\u30dd\u30b8\u30c8\u30ea: https:\/\/github.com\/ikwzm\/ZynqMP-FPGA-XRT<\/ul>\n<\/li>\n<\/ul>\n<p>\u30d6\u30e9\u30f3\u30c1\u540d: 2020.2_EDGE_1_Debian_10<br \/>\n\u30d1\u30c3\u30b1\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb\u540d: xrt_202020.2.8.1_Edge_Debian_10-arm64.deb<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">fpga@ubuntu-fpga:~\/work$<\/span> git clone <span class=\"nt\">--depth<\/span> 1 <span class=\"nt\">--branch<\/span> 2020.2_EDGE_1_Debian_10 https:\/\/github.com\/ikwzm\/ZynqMP-FPGA-XRT.git\r\n<span class=\"gp\">fpga@ubuntu-fpga:~\/work$<\/span> <span class=\"nb\">sudo <\/span>apt <span class=\"nb\">install<\/span> .\/ZynqMP-FPGA-XRT\/xrt_202020.2.8.1_Edge_Debian_10-arm64.deb\r\n<\/code><\/pre>\n<h2>\u8bf7\u4f7f\u7528 Ubuntu 20.04 \u7248\u672c\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30ea\u30dd\u30b8\u30c8\u30ea: https:\/\/github.com\/ikwzm\/ZynqMP-FPGA-XRT<\/ul>\n<\/li>\n<\/ul>\n<p>\u30d6\u30e9\u30f3\u30c1\u540d: 2020.2_EDGE_1_Ubuntu_20.04<br \/>\n\u30d1\u30c3\u30b1\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb\u540d: xrt_202020.2.8.1_Edge_Ubuntu_20.04-arm64.deb<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">fpga@ubuntu-fpga:~\/work$<\/span> git clone <span class=\"nt\">--depth<\/span> 1 <span class=\"nt\">--branch<\/span> 2020.2_EDGE_1_Ubuntu_20.04 https:\/\/github.com\/ikwzm\/ZynqMP-FPGA-XRT.git\r\n<span class=\"gp\">fpga@ubuntu-fpga:~\/work$<\/span> <span class=\"nb\">sudo <\/span>apt <span class=\"nb\">install<\/span> .\/ZynqMP-FPGA-XRT\/xrt_202020.2.8.1_Edge_Ubuntu_20.04-arm64.deb\r\n<\/code><\/pre>\n<h1>XRT \u7684\u6784\u5efa<\/p>\n<h2>\u6784\u5efa\u73af\u5883\u5c06XRT\u6784\u5efa\u4e3a\u9488\u5bf9ZynqMP-FPGA-Linux\u7684\u7248\u672c\u6709\u70b9\u9ebb\u70e6\u3002\u6784\u5efaXRT\u9700\u8981\u4f7f\u7528\u8bf8\u5982Ubuntu\u6216CentOS\u7b49Linux\u53d1\u884c\u7248\u3002\u6784\u5efa\u8fd8\u9700\u8981\u5b89\u88c5\u5404\u79cd\u5f00\u53d1\u5de5\u5177\u3002\u53e6\u5916\uff0c\u4e3a\u4e86\u5236\u4f5cDebian\u8f6f\u4ef6\u5305\uff0c\u6216\u8005\u4e3a\u4e86\u4ea4\u53c9\u7f16\u8bd1\u4e3aARM64\u800c\u5c06PC\u7528\u4f5c\u4e3b\u673a\uff0c\u4e5f\u975e\u5e38\u9ebb\u70e6\u3002<\/p>\n<p>\u5728Ultra96-V2\u4e0a\u8fd0\u884cDebian 10\u6216Ubuntu 18.04\uff0c\u5e76\u5728\u5176\u4e0a\u8fdb\u884c\u81ea\u4e3b\u6784\u5efa\u3002Ultra96-V2\u4f7f\u7528\u7684Debian 10\u548cUbuntu 18.04\u53ef\u5728\u4ee5\u4e0bURL\u4e2d\u627e\u5230\u3002<\/p>\n<p>https:\/\/github.com\/ikwzm\/ZynqMP-FPGA-Linux<br \/>\nhttps:\/\/github.com\/ikwzm\/ZynqMP-FPGA-Ubuntu20.04-Ultra96<\/p>\n<h2>\u4e0b\u8f7dXRT\u8bf7\u4ece\u4ee5\u4e0b\u7f51\u5740\u4e0b\u8f7dXRT\u6e90\u4ee3\u7801\uff0c\u5206\u652f\u7248\u672c\u4e3a2020.2_EDGE\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30ea\u30dd\u30b8\u30c8\u30ea\u540d: https:\/\/github.com\/ikwzm\/XRT<\/ul>\n<\/li>\n<\/ul>\n<p>\u30d6\u30e9\u30f3\u30c1\u540d: 2020.2_EDGE<\/p>\n<p>\u8fd9\u4e2a\u4ed3\u5e93\u662f\u57fa\u4e8e Xilinx \u516c\u53f8\u5728 github \u4e0a\u516c\u5f00\u7684 https:\/\/github.com\/Xilinx\/XRT \u7684\u5206\u652f\uff0c\u5e76\u8fdb\u884c\u4e86\u5404\u79cd\u4fee\u6539\u3002\u4fee\u6b63\u7684\u5177\u4f53\u5185\u5bb9\u5c06\u5728\u4e0b\u4e00\u8282\u4e2d\u8fdb\u884c\u8bf4\u660e\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">fpga@debian-fpga:~\/work$<\/span> git clone <span class=\"nt\">--depth<\/span> 1 <span class=\"nt\">--branch<\/span> 2020.2_EDGE https:\/\/github.com\/Xilinx\/XRT\r\n<span class=\"go\">Cloning into 'XRT'...\r\nremote: Enumerating objects: 2142, done.\r\nremote: Counting objects: 100% (2142\/2142), done.\r\nremote: Compressing objects: 100% (1885\/1885), done.\r\nremote: Total 2142 (delta 653), reused 626 (delta 220), pack-reused 0\r\nReceiving objects: 100% (2142\/2142), 20.80 MiB | 1.22 MiB\/s, done.\r\nResolving deltas: 100% (653\/653), done.\r\nChecking out files: 100% (1958\/1958), done.\r\n<\/span><\/code><\/pre>\n<h2>\u5b89\u88c5\u6784\u5efa\u6240\u9700\u7684Debian\u8f6f\u4ef6\u5305\u3002\u5b89\u88c5\u6784\u5efa\u6240\u9700\u7684\u8f6f\u4ef6\u5305\u3002\u5e78\u8fd0\u7684\u662f\uff0cXRT \u63d0\u4f9b\u4e86\u4e00\u4e2a\u5b89\u88c5\u6784\u5efa\u6240\u9700\u8f6f\u4ef6\u5305\u7684\u811a\u672c\u3002<\/p>\n<p>\u5982\u679c\u4ee5\u8d85\u7ea7\u7528\u6237\u6743\u9650\u8fd0\u884c.\/src\/runtime_src\/tools\/scripts\/xrtdeps.sh\uff0c\u5219apt\u7a0b\u5e8f\u5c06\u5b89\u88c5\u7f3a\u5931\u7684Debian\u8f6f\u4ef6\u5305\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">fpga@debian-fpga:~\/work\/XRT$<\/span> <span class=\"nb\">sudo<\/span> .\/src\/runtime_src\/tools\/scripts\/xrtdeps.sh\r\n<span class=\"go\">Installing packages...\r\nReading package lists... Done\r\nBuilding dependency tree\r\nReading state information... Done\r\n    :\r\n(\u4e2d\u7565)\r\n    :\r\nThe following packages were automatically installed and are no longer required:\r\n  libgl2ps1.4 libibverbs1 liblept5 libnetcdf-c++4 libnl-route-3-200\r\n  libopencv-flann-dev libopencv-flann3.2 libopencv-ml-dev libopencv-ml3.2\r\n  libopencv-photo-dev libopencv-photo3.2 libopencv-shape-dev\r\n  libopencv-shape3.2 libopencv-ts-dev libopencv-video-dev libopencv-video3.2\r\n  libtcl8.6 libtesseract4 libtk8.6 libxss1\r\nUse 'sudo apt autoremove' to remove them.\r\n0 upgraded, 0 newly installed, 0 to remove and 26 not upgraded.\r\n<\/span><\/code><\/pre>\n<h2>\u5c1d\u8bd5\u5efa\u9020<br \/>\n\u5728\u5207\u6362\u5230build\u76ee\u5f55\u540e\uff0c\u901a\u8fc7\u5728\u5176\u4e2d\u8fd0\u884c\u5e26\u6709\u201c-edge\u201d\u9009\u9879\u7684build.sh\u811a\u672c\u6765\u5f00\u59cb\u6784\u5efa\u3002\u5728Ultra96\/Ultra96-V2\u4e0a\uff0c\u6784\u5efa\u8fc7\u7a0b\u9700\u8981\u76f8\u5f53\u957f\u7684\u65f6\u95f4\u3002\u5728\u6211\u7684\u73af\u5883\u4e0b\u5927\u7ea6\u9700\u89811\u5c0f\u65f630\u5206\u949f\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">fpga@debian-fpga:~\/work\/XRT$<\/span> <span class=\"nb\">cd <\/span>build\/\r\n<span class=\"gp\">fpga@ubuntu-fpga:~\/work\/XRT\/build$<\/span> .\/build.sh <span class=\"nt\">-edge<\/span>\r\n<span class=\"go\">env XRT_EDGE_BUILD=yes cmake -DRDI_CCACHE=0 -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..\/..\/src\r\n-- The C compiler identification is GNU 8.3.0\r\n-- The CXX compiler identification is GNU 8.3.0\r\n-- Check for working C compiler: \/usr\/bin\/cc\r\n-- Check for working C compiler: \/usr\/bin\/cc -- works\r\n-- Detecting C compiler ABI info\r\n-- Detecting C compiler ABI info - done\r\n-- Detecting C compile features\r\n-- Detecting C compile features - done\r\n-- Check for working CXX compiler: \/usr\/bin\/c++\r\n-- Check for working CXX compiler: \/usr\/bin\/c++ -- works\r\n-- Detecting CXX compiler ABI info\r\n-- Detecting CXX compiler ABI info - done\r\n-- Detecting CXX compile features\r\n-- Detecting CXX compile features - done\r\n-- Host system processor is aarch64\r\n-- Target system processor is aarch64\r\n-- Found PkgConfig: \/usr\/bin\/pkg-config (found version \"0.29\")\r\n-- Checking for module 'libdrm'\r\n--   Found libdrm, version 2.4.97\r\n-- Looking for DRM - found at \/usr 2.4.97\r\n-- Checking for module 'OpenCL'\r\n--   Found OpenCL, version 2.2\r\n-- Looking for OPENCL - found at \/usr 2.2 \/usr\/include\r\n    :\r\n(\u5f8c\u7565)\r\n    :\r\nreal    1m28.030s\r\nuser    1m8.790s\r\nsys     0m15.279s\r\n<\/span><span class=\"gp\">fpga@debian-fpga:~\/work\/XRT\/build$<\/span> \r\n<\/code><\/pre>\n<p>\u5f53\u7f16\u8bd1\u5b8c\u6210\u540e\uff0c\u4f1a\u5728build\/Edge\u76ee\u5f55\u4e0b\u751f\u6210Debian\u5305\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">fpga@debian-fpga:~\/work\/XRT\/build$<\/span> <span class=\"nb\">ls<\/span> <span class=\"nt\">-1<\/span> Edge\/xrt_<span class=\"k\">*<\/span>\r\n<span class=\"go\">Edge\/xrt_202020.2.8.1_Edge_Debian_10-arm64.deb\r\nEdge\/xrt_202020.2.8.1_Edge_Debian_10-arm64.tar.gz\r\n<\/span><\/code><\/pre>\n<p>\u8fd9\u4e9b\u4e2d\uff0cUltra96\/Ultra96-V2 \u6240\u9700\u7684 Debian \u5305\u662f Edge\/xrt_202020.2.8.1_Edge_Debian_10-arm64.deb\u3002<\/p>\n<h1>XRT\u7684\u4fee\u6539\u5185\u5bb9\u3002\u5728\u672c\u7ae0\u4e2d\uff0c\u6211\u5c06\u89e3\u91ca\u6211\u5bf9\u539f\u59cb\u7684XRT\uff08https:\/\/github.com\/Xilinx\/XRT \u5206\u652f2020.2\uff09\u8fdb\u884c\u7684\u4e2a\u4eba\u4fee\u6539\u3002<\/p>\n<h2>\u6dfb\u52a0 XRT_EDGE_BUILD\u3002<br \/>\n\u5982\u679c\u539f\u59cb\u4ee3\u7801\u4e2d\u7684\u4e3b\u5904\u7406\u5668\u548c\u76ee\u6807\u5904\u7406\u5668\u662f\u76f8\u540c\u7684\uff0c\u90a3\u4e48\u53d8\u91cfXRT_NATIVE_BUILD\u5c06\u88ab\u8bbe\u7f6e\u4e3a&#8221;yes&#8221;\u3002\u5e76\u4e14\uff0c\u5728XRT_NATIVE_BUILD\u4e3a&#8221;yes&#8221;\uff08\u5373\u4e3b\u5904\u7406\u5668\u548c\u76ee\u6807\u5904\u7406\u5668\u76f8\u540c\u65f6\uff09\u65f6\uff0c\u5c06\u6784\u5efasrc\/runtime_src\/core\/pcie\uff1b\u800c\u5728XRT_NATIVE_BUILD\u4e3a&#8221;no&#8221;\uff08\u5373\u4e3b\u5904\u7406\u5668\u548c\u76ee\u6807\u5904\u7406\u5668\u4e0d\u540c\u65f6\uff09\u65f6\uff0c\u5c06\u6784\u5efasrc\/runtime_src\/core\/edge\u3002\u8fd9\u662f\u5728src\/runtime_src\/core\/CMakeLists.txt\u6587\u4ef6\u4e2d\u5b9a\u4e49\u7684\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"err\">include_directories(<\/span>\r\n  <span class=\"err\">${CMAKE_CURRENT_SOURCE_DIR}<\/span>\r\n  <span class=\"err\">)<\/span>\r\n<span class=\"err\">add_subdirectory(include)<\/span>\r\n<span class=\"err\">add_subdirectory(common)<\/span>\r\n <span class=\"err\">if<\/span> <span class=\"err\">(${XRT_NATIVE_BUILD}<\/span> <span class=\"err\">STREQUAL<\/span> <span class=\"s2\">\"yes\"<\/span><span class=\"err\">)<\/span>\r\n   <span class=\"err\">add_subdirectory(pcie)<\/span>\r\n   <span class=\"err\">add_subdirectory(tools)<\/span>\r\n <span class=\"err\">else()<\/span>\r\n   <span class=\"err\">add_subdirectory(edge)<\/span>\r\n <span class=\"err\">endif()<\/span>\r\n<\/code><\/pre>\n<p>\u6b64\u5916\uff0c\u5f53XRT_NATIVE_BUILD\u8bbe\u7f6e\u4e3a&#8221;yes&#8221;\u65f6\uff08\u5373\u4e3b\u673a\u5904\u7406\u5668\u4e0e\u76ee\u6807\u5904\u7406\u5668\u76f8\u540c\u65f6\uff09\uff0c\u5c06\u5305\u542b src\/CMake\/nativeLnx.cmake \u6587\u4ef6\uff0c\u8be5\u6587\u4ef6\u7528\u4e8e\u6784\u5efa\u548c\u5b89\u88c5\u4e3b\u673a\u9a71\u52a8\u7a0b\u5e8f\uff0c\u5177\u4f53\u6307\u4ee4\u5982\u4e0b\u3002<\/p>\n<pre class=\"post-pre\"><code>    <span class=\"err\">:<\/span>\r\n    <span class=\"err\">(\u524d\u7565)<\/span>\r\n    <span class=\"err\">:<\/span>\r\n<span class=\"k\">include<\/span><span class=\"sx\"> (CMake\/dkms.cmake)<\/span>\r\n<span class=\"k\">include<\/span><span class=\"sx\"> (CMake\/dkms-aws.cmake)<\/span>\r\n<span class=\"k\">include<\/span><span class=\"sx\"> (CMake\/dkms-azure.cmake)<\/span>\r\n<span class=\"k\">include<\/span><span class=\"sx\"> (CMake\/dkms-container.cmake)<\/span>\r\n    <span class=\"err\">:<\/span>\r\n    <span class=\"err\">(\u5f8c\u7565)<\/span>\r\n<\/code><\/pre>\n<p>\u5982\u679c\u5728 Ultra96-V2 \u4e0a\u8fd0\u884c Ubuntu 18.04\uff0c\u5e76\u8fdb\u884c\u81ea\u884c\u6784\u5efa\u65f6\uff0c\u4e3b\u673a\u5904\u7406\u5668\u548c\u76ee\u6807\u5904\u7406\u5668\u5c06\u4e3a\u76f8\u540c\u7684 arm64\u3002\u6309\u7167\u8fd9\u79cd\u60c5\u51b5\uff0c\u6784\u5efa\u5c06\u4ea7\u751f PCIe \u800c\u4e0d\u662f\u9488\u5bf9\u8fb9\u7f18\u8bbe\u5907\u7684\u7248\u672c\u3002<\/p>\n<p>\u4e8e\u662f\uff0c\u5728 src\/CMakfile.txt \u6587\u4ef6\u4e2d\u6dfb\u52a0 XRT_EDGE_BUILD \u53d8\u91cf\u3002<\/p>\n<pre class=\"post-pre\"><code>    <span class=\"err\">:<\/span>\r\n    <span class=\"err\">(\u524d\u7565)<\/span>\r\n    <span class=\"err\">:<\/span>   \r\n<span class=\"err\">set(XRT_EDGE_BUILD<\/span> <span class=\"s2\">\"no\"<\/span><span class=\"err\">)<\/span>\r\n<span class=\"err\">if<\/span> <span class=\"err\">(XRT_NATIVE_BUILD<\/span> <span class=\"err\">STREQUAL<\/span> <span class=\"s2\">\"no\"<\/span><span class=\"err\">)<\/span>\r\n  <span class=\"err\">set(XRT_EDGE_BUILD<\/span> <span class=\"s2\">\"no\"<\/span><span class=\"err\">)<\/span>\r\n<span class=\"err\">endif()<\/span>\r\n<span class=\"err\">if<\/span> <span class=\"err\">(DEFINED<\/span> <span class=\"err\">ENV{XRT_EDGE_BUILD})<\/span>\r\n  <span class=\"err\">set(XRT_EDGE_BUILD<\/span> <span class=\"err\">$ENV{XRT_EDGE_BUILD})<\/span>\r\n<span class=\"nl\">endif()<\/span><span class=\"o\">:<\/span>\r\n    <span class=\"err\">:<\/span>\r\n    <span class=\"err\">(\u5f8c\u7565)<\/span>\r\n<\/code><\/pre>\n<p>\u5f53XRT_EDGE_BUILD\u7684\u503c\u4e3a&#8221;yes&#8221;\u65f6\uff0c\u5c06\u4fee\u6539\u5404\u4e2a\u6587\u4ef6\u4ee5\u8fdb\u884c\u8fb9\u7f18\u6784\u5efa\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"err\">include_directories(<\/span>\r\n  <span class=\"err\">${CMAKE_CURRENT_SOURCE_DIR}<\/span>\r\n  <span class=\"err\">)<\/span>\r\n<span class=\"err\">add_subdirectory(include)<\/span>\r\n <span class=\"err\">if<\/span> <span class=\"err\">(${XRT_EDGE_BUILD}<\/span> <span class=\"err\">STREQUAL<\/span> <span class=\"s2\">\"yes\"<\/span><span class=\"err\">)<\/span>\r\n   <span class=\"err\">add_subdirectory(common)<\/span>\r\n   <span class=\"err\">add_subdirectory(edge)<\/span>\r\n   <span class=\"err\">add_subdirectory(tools)<\/span>\r\n <span class=\"err\">else()<\/span>\r\n   <span class=\"err\">add_subdirectory(common)<\/span>\r\n   <span class=\"err\">add_subdirectory(pcie)<\/span>\r\n   <span class=\"err\">add_subdirectory(tools)<\/span>\r\n <span class=\"err\">endif()<\/span>\r\n\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>    <span class=\"err\">:<\/span>\r\n    <span class=\"err\">(\u524d\u7565)<\/span>\r\n    <span class=\"err\">:<\/span>\r\n<span class=\"err\">if<\/span> <span class=\"err\">(${XRT_EDGE_BUILD}<\/span> <span class=\"err\">STREQUAL<\/span> <span class=\"s2\">\"yes\"<\/span><span class=\"err\">)<\/span>\r\n  <span class=\"k\">include<\/span><span class=\"sx\"> (CMake\/dkms-edge.cmake)<\/span>\r\n<span class=\"err\">else()<\/span>\r\n  <span class=\"k\">include<\/span><span class=\"sx\"> (CMake\/dkms.cmake)<\/span>\r\n  <span class=\"k\">include<\/span><span class=\"sx\"> (CMake\/dkms-aws.cmake)<\/span>\r\n  <span class=\"k\">include<\/span><span class=\"sx\"> (CMake\/dkms-azure.cmake)<\/span>\r\n  <span class=\"k\">include<\/span><span class=\"sx\"> (CMake\/dkms-container.cmake)<\/span>\r\n<span class=\"err\">endif()<\/span>\r\n    <span class=\"err\">:<\/span>\r\n    <span class=\"err\">(\u5f8c\u7565)<\/span>\r\n<\/code><\/pre>\n<p>\u53e6\u5916\uff0c\u5728 src\/runtime_src\/CMakeLists.txt \u6587\u4ef6\u4e2d\uff0c\u5f53 XRT_NATIVE_BUILD \u7684\u503c\u4e3a &#8220;yes&#8221; \u65f6\uff08\u5373\u4e3b\u673a\u5904\u7406\u5668\u548c\u76ee\u6807\u5904\u7406\u5668\u76f8\u540c\u65f6\uff09\uff0c\u7f16\u8bd1\u9009\u9879\u4e2d\u4f1a\u6dfb\u52a0 &#8220;-Wall&#8221; \u548c &#8220;-Werror&#8221; \u7684\u8bbe\u7f6e\u3002<\/p>\n<pre class=\"post-pre\"><code>    <span class=\"err\">:<\/span>\r\n    <span class=\"err\">(\u524d\u7565)<\/span>\r\n    <span class=\"err\">:<\/span>\r\n<span class=\"c\"># TODO CL_TARGET_OPENCL_VERSION is not defined..\r\n<\/span><span class=\"err\">if<\/span> <span class=\"err\">(${XRT_NATIVE_BUILD}<\/span> <span class=\"err\">STREQUAL<\/span> <span class=\"s2\">\"yes\"<\/span><span class=\"err\">)<\/span>\r\n  <span class=\"err\">add_compile_options(<\/span><span class=\"s2\">\"-Wall\"<\/span> <span class=\"s2\">\"-Werror\"<\/span><span class=\"err\">)<\/span>\r\n<span class=\"err\">endif()<\/span>\r\n    <span class=\"err\">:<\/span>\r\n    <span class=\"err\">(\u5f8c\u7565)<\/span>\r\n<\/code><\/pre>\n<p>\u5982\u679c\u5b58\u5728&#8221;-Werror&#8221;\u9009\u9879\uff0c\u4f1a\u5728src\/runtime_src\/core\/edge\u76ee\u5f55\u4e0b\u6784\u5efa\u65f6\u51fa\u73b0\u9519\u8bef\uff0c\u5e76\u5bfc\u81f4\u7f16\u8bd1\u5931\u8d25\u3002\u56e0\u6b64\uff0c\u82e5XRT_EDGE_BUILD\u4e3a&#8221;yes&#8221;\u65f6\uff0c\u5c06\u4e0d\u4f1a\u5728\u7f16\u8bd1\u9009\u9879\u4e2d\u6dfb\u52a0&#8221;-Wall&#8221;\u548c&#8221;-Werror&#8221;\uff0c\u9700\u8981\u4fee\u6539src\/runtime_src\/CMakeLists.txt\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>    <span class=\"err\">:<\/span>\r\n    <span class=\"err\">(\u524d\u7565)<\/span>\r\n    <span class=\"err\">:<\/span>\r\n<span class=\"c\"># TODO CL_TARGET_OPENCL_VERSION is not defined..\r\n<\/span><span class=\"err\">if<\/span> <span class=\"err\">(${XRT_EDGE_BUILD}<\/span> <span class=\"err\">STREQUAL<\/span> <span class=\"s2\">\"no\"<\/span><span class=\"err\">)<\/span>\r\n  <span class=\"err\">add_compile_options(<\/span><span class=\"s2\">\"-Wall\"<\/span> <span class=\"s2\">\"-Werror\"<\/span><span class=\"err\">)<\/span>\r\n<span class=\"nl\">endif() <\/span><span class=\"o\">:<\/span>\r\n    <span class=\"err\">(\u5f8c\u7565)<\/span>\r\n<\/code><\/pre>\n<p>\u6700\u7ec8\uff0c\u5bf9 build\/build.sh \u8fdb\u884c\u4fee\u6539\uff0c\u5982\u679c\u4e3b\u5904\u7406\u5668\u4e3a arm64 \u5e76\u4e14\u6dfb\u52a0\u4e86&#8221;-edge&#8221;\u9009\u9879\uff0c\u5c06\u4fee\u6b63 XRT_EDGE_BUILD \u4e3a &#8220;yes&#8221; \u7684\u60c5\u51b5\u4f7f\u5176\u751f\u6548\u3002<\/p>\n<pre class=\"post-pre\"><code>    :\r\n    <span class=\"o\">(<\/span>\u524d\u7565<span class=\"o\">)<\/span>\r\n    :\r\n<span class=\"k\">if<\/span> <span class=\"o\">[[<\/span> <span class=\"nv\">$CPU<\/span> <span class=\"o\">==<\/span> <span class=\"s2\">\"aarch64\"<\/span> <span class=\"o\">]]<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"o\">[[<\/span> <span class=\"nv\">$edge<\/span> <span class=\"o\">==<\/span> 1 <span class=\"o\">]]<\/span><span class=\"p\">;<\/span> <span class=\"k\">then\r\n  <\/span><span class=\"nb\">mkdir<\/span> <span class=\"nt\">-p<\/span> <span class=\"nv\">$edge_dir<\/span>\r\n  <span class=\"nb\">cd<\/span> <span class=\"nv\">$edge_dir<\/span>\r\n  <span class=\"k\">if<\/span> <span class=\"o\">[[<\/span> <span class=\"nv\">$nocmake<\/span> <span class=\"o\">==<\/span> 0 <span class=\"o\">]]<\/span><span class=\"p\">;<\/span> <span class=\"k\">then\r\n    <\/span><span class=\"nb\">echo<\/span> <span class=\"s2\">\"env XRT_EDGE_BUILD=yes <\/span><span class=\"nv\">$CMAKE<\/span><span class=\"s2\"> -DRDI_CCACHE=<\/span><span class=\"nv\">$ccache<\/span><span class=\"s2\"> -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..\/..\/src\"<\/span>\r\n    <span class=\"nb\">time  env <\/span><span class=\"nv\">XRT_EDGE_BUILD<\/span><span class=\"o\">=<\/span><span class=\"nb\">yes<\/span> <span class=\"nv\">$CMAKE<\/span> <span class=\"nt\">-DRDI_CCACHE<\/span><span class=\"o\">=<\/span><span class=\"nv\">$ccache<\/span> <span class=\"nt\">-DCMAKE_BUILD_TYPE<\/span><span class=\"o\">=<\/span>Release <span class=\"nt\">-DCMAKE_EXPORT_COMPILE_COMMANDS<\/span><span class=\"o\">=<\/span>ON ..\/..\/src\r\n  <span class=\"k\">fi\r\n  if<\/span> <span class=\"o\">[[<\/span> <span class=\"nv\">$nobuild<\/span> <span class=\"o\">==<\/span> 0 <span class=\"o\">]]<\/span><span class=\"p\">;<\/span> <span class=\"k\">then\r\n      <\/span><span class=\"nb\">echo<\/span> <span class=\"s2\">\"make -j <\/span><span class=\"nv\">$jcore<\/span> <span class=\"nv\">$verbose<\/span><span class=\"s2\"> DESTDIR=<\/span><span class=\"nv\">$PWD<\/span><span class=\"s2\"> install\"<\/span>\r\n      <span class=\"nb\">time <\/span>make <span class=\"nt\">-j<\/span> <span class=\"nv\">$jcore<\/span> <span class=\"nv\">$verbose<\/span> <span class=\"nv\">DESTDIR<\/span><span class=\"o\">=<\/span><span class=\"nv\">$PWD<\/span> <span class=\"nb\">install\r\n      <\/span><span class=\"k\">if<\/span> <span class=\"o\">[[<\/span> <span class=\"nv\">$noctest<\/span> <span class=\"o\">==<\/span> 0 <span class=\"o\">]]<\/span><span class=\"p\">;<\/span> <span class=\"k\">then\r\n          <\/span><span class=\"nb\">time <\/span>ctest <span class=\"nt\">--output-on-failure<\/span>\r\n      <span class=\"k\">fi\r\n      <\/span><span class=\"nb\">time <\/span>make package\r\n  <span class=\"k\">fi\r\n  if<\/span> <span class=\"o\">[[<\/span> <span class=\"nv\">$docs<\/span> <span class=\"o\">==<\/span> 1 <span class=\"o\">]]<\/span><span class=\"p\">;<\/span> <span class=\"k\">then\r\n      <\/span><span class=\"nb\">echo<\/span> <span class=\"s2\">\"make xrt_docs\"<\/span>\r\n      make xrt_docs\r\n  <span class=\"k\">fi\r\nfi<\/span>\r\n    :\r\n    <span class=\"o\">(<\/span>\u5f8c\u7565<span class=\"o\">)<\/span>\r\n<\/code><\/pre>\n<h2>\u6539\u53d8\u5305\u6587\u4ef6\u540d<br \/>\n\u5728\u539f\u59cb\u7684XRT\u4e2d\uff0c\u6784\u5efa\u7684Debian\u8f6f\u4ef6\u5305\u7684\u540d\u79f0\u4e3axrt_202010.2.8.0_18.04-arm64-xrt.deb\u3002\u4e3a\u4e86\u660e\u786e\u5176\u4e3a\u9002\u7528\u4e8eDebian 10\u6216Ubuntu\u7684\u8f6f\u4ef6\u5305\uff0c\u6211\u4eec\u5c06\u5728\u6b64\u4e4b\u540e\u6dfb\u52a0Linux\u53d1\u884c\u7248\u540d\u79f0\uff0c\u540c\u65f6\u9644\u52a0\u5173\u952e\u8bcd&#8221;Edge&#8221;\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gh\">diff --git a\/src\/CMake\/cpackLin.cmake b\/src\/CMake\/cpackLin.cmake\r\nindex 4f45f97a..9f6eebe4 100644\r\n<\/span><span class=\"gd\">--- a\/src\/CMake\/cpackLin.cmake\r\n<\/span><span class=\"gi\">+++ b\/src\/CMake\/cpackLin.cmake\r\n<\/span><span class=\"p\">@@ -79,7 +79,7 @@<\/span> else ()\r\n   SET (CPACK_GENERATOR \"TGZ\")\r\n endif()\r\n\r\n-SET(CPACK_PACKAGE_FILE_NAME \"${CPACK_PACKAGE_NAME}_${XRT_VERSION_RELEASE}.${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}_${CPACK_REL_VER}-${CPACK_ARCH}\")\r\n<span class=\"gi\">+if (${XRT_EDGE_BUILD} STREQUAL \"yes\")\r\n+   SET(CPACK_PACKAGE_FILE_NAME \"${CPACK_PACKAGE_NAME}_${XRT_VERSION_RELEASE}.${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}_Edge_${LINUX_FLAVOR}_${CPACK_REL_VER}-${CPACK_ARCH}\")\r\n+else()\r\n+   SET(CPACK_PACKAGE_FILE_NAME \"${CPACK_PACKAGE_NAME}_${XRT_VERSION_RELEASE}.${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}_${CPACK_REL_VER}-${CPACK_ARCH}\")\r\n+endif()\r\n<\/span>\r\n message(\"-- ${CMAKE_BUILD_TYPE} ${PACKAGE_KIND} package\")\r\n\r\n\r\n<\/code><\/pre>\n<h2>DKMS-Edge\u76f8\u5173\u7684\u4fee\u590d\u3002\u5728\u5b89\u88c5\u4e86\u5728Debian 10\u6216Ubuntu 20.04\u4e0a\u6784\u5efa\u7684Debian\u8f6f\u4ef6\u5305\u65f6\uff0c\u901a\u8fc7dkms\uff08\u52a8\u6001\u5185\u6838\u6a21\u5757\u652f\u6301\uff09\u673a\u5236\uff0c\u81ea\u52a8\u7f16\u8bd1XRT\u7684\u9002\u7528\u4e8eEdge\u7684Linux\u5185\u6838\u6a21\u5757zocl\u3002\u7136\u800c\uff0c\u9057\u61be\u7684\u662f\uff0c\u539f\u59cb\u7248\u672c\u5e76\u4e0d\u80fd\u6b63\u5e38\u5de5\u4f5c\uff0c\u56e0\u6b64\u9700\u8981\u8fdb\u884c\u4e00\u4e9b\u4fee\u6b63\u3002<\/p>\n<h3>\u6dfb\u52a0 postinst \u548c prerm\u3002\u4e3a\u4e86\u5c06Xilinx\u7684\u539f\u59cbDebian\u8f6f\u4ef6\u5305\u81ea\u52a8\u5305\u542b\u7528\u4e8e\u5b89\u88c5\u65f6\u6267\u884c\u7684postinst\u811a\u672c\u548c\u5378\u8f7d\u65f6\u6267\u884c\u7684prerm\u811a\u672c\uff0c\u9700\u8981\u5c06src\/CMake\/cpackLin.cmake\u6587\u4ef6\u8fdb\u884c\u4ee5\u4e0b\u4fee\u6539\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gh\">diff --git a\/src\/CMake\/cpackLin.cmake b\/src\/CMake\/cpackLin.cmake\r\nindex 0f38c922..3d32674f 100644\r\n<\/span><span class=\"gd\">--- a\/src\/CMake\/cpackLin.cmake\r\n<\/span><span class=\"gi\">+++ b\/src\/CMake\/cpackLin.cmake\r\n<\/span><span class=\"p\">@@ -84,6 +84,11 @@<\/span> if (${LINUX_FLAVOR} MATCHES \"^(Ubuntu|Debian)\")\r\n     SET(CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_XRT_PACKAGE_DEPENDS})\r\n   endif()\r\n\r\n+  if (${XRT_EDGE_BUILD} STREQUAL \"yes\")\r\n<span class=\"gi\">+    SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA \"${CMAKE_CURRENT_BINARY_DIR}\/postinst;${CMAKE_CURRENT_BINARY_DIR}\/prerm\")\r\n+    SET(CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_XRT_PACKAGE_DEPENDS})\r\n+  endif()\r\n+\r\n<\/span> elseif (${LINUX_FLAVOR} MATCHES \"^(RedHat|CentOS|Amazon|Fedora)\")\r\n   execute_process(\r\n     COMMAND uname -m\r\n<span class=\"p\">@@ -140,7 +145,11 @@<\/span> else ()\r\n   SET (CPACK_GENERATOR \"TGZ\")\r\n endif()\r\n\r\n<\/code><\/pre>\n<h3>\u6dfb\u52a0\u4e0d\u8db3\u7684\u6587\u4ef6\u53e6\u5916\uff0cXilinx\u539f\u7248\u5e76\u4e0d\u5305\u542bdkms\u6240\u9700\u7684\u4e00\u4e9b\u6587\u4ef6\u3002\u56e0\u6b64\uff0c\u6211\u4eec\u5c06\u5bf9src\/CMake\/dkms-edge.cmake\u8fdb\u884c\u4fee\u6539\uff0c\u5e76\u6dfb\u52a0\u7f3a\u5c11\u7684\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gh\">diff --git a\/src\/CMake\/dkms-edge.cmake b\/src\/CMake\/dkms-edge.cmake\r\nindex 48e4ad1e..83d9d8ec 100644\r\n<\/span><span class=\"gd\">--- a\/src\/CMake\/dkms-edge.cmake\r\n<\/span><span class=\"gi\">+++ b\/src\/CMake\/dkms-edge.cmake\r\n<\/span><span class=\"p\">@@ -35,6 +35,7 @@<\/span> SET (XRT_DKMS_CORE_COMMON_DRV ${XRT_DKMS_CORE_DIR}\/common\/drv)\r\n\r\n SET (XRT_DKMS_DRIVER_SRCS\r\n   zocl\/include\/sched_exec.h\r\n<span class=\"gi\">+  zocl\/include\/zocl_aie.h\r\n<\/span>   zocl\/include\/zocl_bo.h\r\n   zocl\/include\/zocl_cu.h\r\n   zocl\/include\/zocl_dma.h\r\n<span class=\"p\">@@ -53,6 +54,7 @@<\/span> SET (XRT_DKMS_DRIVER_SRCS\r\n   zocl\/LICENSE\r\n   zocl\/Makefile\r\n   zocl\/sched_exec.c\r\n<span class=\"gi\">+  zocl\/zocl_aie.c\r\n<\/span>   zocl\/zocl_bo.c\r\n   zocl\/zocl_cu.c\r\n   zocl\/zocl_dma.c\r\n<span class=\"p\">@@ -86,6 +88,7 @@<\/span> SET (XRT_DKMS_COMMON_XRT_DRV\r\n   common\/drv\/xrt_cu.c\r\n   common\/drv\/cu_hls.c\r\n   common\/drv\/cu_plram.c\r\n<span class=\"gi\">+  common\/drv\/fast_adapter.c\r\n<\/span>   common\/drv\/xrt_xclbin.c\r\n   common\/drv\/Makefile\r\n   )\r\n\r\n<\/code><\/pre>\n<h3>\u6dfb\u52a0-D__NONE_PETALINUX__\u4e3a\u4e86\u5728PetaLinux\u73af\u5883\u4e4b\u5916\u7f16\u8bd1zocl\uff0c\u9700\u8981\u4f7f\u7528C\u9009\u9879-D__NONE_PETALINUX__\u3002\u8bf7\u5c06src\/CMake\/config\/dkms-zocl\/dkms.conf.in\u6587\u4ef6\u6309\u5982\u4e0b\u8fdb\u884c\u4fee\u6539\uff0c\u4ee5\u4fbf\u6dfb\u52a0\u8be5\u9009\u9879\u5e76\u8fdb\u884c\u6784\u5efa\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gh\">diff --git a\/src\/CMake\/config\/dkms-zocl\/dkms.conf.in b\/src\/CMake\/config\/dkms-zocl\/dkms.conf.in\r\nindex c79c23c2..78fd5a90 100644\r\n<\/span><span class=\"gd\">--- a\/src\/CMake\/config\/dkms-zocl\/dkms.conf.in\r\n<\/span><span class=\"gi\">+++ b\/src\/CMake\/config\/dkms-zocl\/dkms.conf.in\r\n<\/span><span class=\"p\">@@ -1,7 +1,7 @@<\/span>\r\n PACKAGE_NAME=\"xrt-zocl\"\r\n PACKAGE_VERSION=\"@XRT_VERSION_STRING@\"\r\n<span class=\"gd\">-MAKE[0]=\"cd driver\/zocl; make -j KERNEL_SRC=${kernel_source_dir}; cd ..\/..\"\r\n-CLEAN=\"cd driver\/zocl; make clean KERNEL_SRC=${kernel_source_dir}; cd ..\/..\"\r\n<\/span><span class=\"gi\">+MAKE[0]=\"cd driver\/zocl; make -j KERNEL_SRC=${kernel_source_dir} cflags_zocl=-D__NONE_PETALINUX__; cd ..\/..\"\r\n+CLEAN=\"cd driver\/zocl; make clean KERNEL_SRC=${kernel_source_dir} cflags_zocl=-D__NONE_PETALINUX__; cd ..\/..\"\r\n<\/span> BUILT_MODULE_NAME[0]=\"zocl\"\r\n BUILT_MODULE_LOCATION[0]=\"driver\/zocl\"\r\n DEST_MODULE_LOCATION[0]=\"\/kernel\/extras\"\r\n\r\n<\/code><\/pre>\n<h2>\u522a\u9664\u4e0d\u5fc5\u8981\u7684\u6e2c\u8a66<br \/>\n\u5728\u6784\u5efaDebian Package\u65f6\uff0c\u5c06\u8fdb\u884c\u6784\u5efa\u5de5\u5177\u7684\u6d4b\u8bd5\u4ee5\u786e\u4fdd\u5176\u6b63\u5e38\u5de5\u4f5c\u3002\u7136\u800c\uff0c\u7531\u4e8eXilinx\u539f\u59cb\u8f6f\u4ef6\u7684\u9650\u5236\uff0c\u5c3d\u7ba1\u662f\u7528\u4e8eEdge Debian Package\uff0c\u4f46\u8bd5\u56fe\u6d4b\u8bd5\u7528\u4e8ePCI-Express\u7684\u5de5\u5177\uff08\u5373xbmgmt\u548cxbutil\uff09\u4f1a\u5bfc\u81f4\u5931\u8d25\u3002\u8981\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff0c\u8bf7\u6309\u7167\u4ee5\u4e0b\u65b9\u5f0f\u4fee\u6539src\/CMake\/NativeTests.cmake\u4ee5\u907f\u514d\u6267\u884c\u4e0d\u5fc5\u8981\u7684\u6d4b\u8bd5\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gh\">diff --git a\/src\/CMake\/nativeTests.cmake b\/src\/CMake\/nativeTests.cmake\r\nindex 9f53ad61..25e0d19d 100644\r\n<\/span><span class=\"gd\">--- a\/src\/CMake\/nativeTests.cmake\r\n<\/span><span class=\"gi\">+++ b\/src\/CMake\/nativeTests.cmake\r\n<\/span><span class=\"p\">@@ -3,13 +3,17 @@<\/span>\r\n # XRT_INSTALL_BIN_DIR\r\n\r\n enable_testing()\r\n<span class=\"gi\">+if (${XRT_EDGE_BUILD} STREQUAL \"no\")\r\n<\/span> add_test(NAME xbmgmt\r\n   COMMAND ${CMAKE_BINARY_DIR}\/runtime_src\/core\/pcie\/tools\/xbmgmt\/xbmgmt scan\r\n   WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})\r\n<span class=\"gi\">+endif()\r\n<\/span>\r\n+if (${XRT_EDGE_BUILD} STREQUAL \"no\")\r\n add_test(NAME xbutil\r\n   COMMAND ${CMAKE_BINARY_DIR}\/runtime_src\/core\/pcie\/tools\/xbutil\/xbutil scan\r\n   WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})\r\n<span class=\"gi\">+endif()\r\n<\/span>\r\n add_test(NAME xbutil2\r\n   COMMAND ${CMAKE_BINARY_DIR}\/runtime_src\/core\/tools\/xbutil2\/xbutil2 --new scan\r\n<span class=\"p\">@@ -19,4 +23,6 @@<\/span> add_test(NAME xbmgmt2\r\n   COMMAND ${CMAKE_BINARY_DIR}\/runtime_src\/core\/tools\/xbmgmt2\/xbmgmt2 --new scan\r\n   WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})\r\n\r\n-set_tests_properties(xbutil xbmgmt PROPERTIES ENVIRONMENT INTERNAL_BUILD=1)\r\n<span class=\"gi\">+if (${XRT_EDGE_BUILD} STREQUAL \"no\")\r\n+  set_tests_properties(xbutil xbmgmt PROPERTIES ENVIRONMENT INTERNAL_BUILD=1)\r\n+endif()\r\n<\/span>\r\n<\/code><\/pre>\n<h2>\u6253\u5f00\u9a71\u52a8\u7a0b\u5e8f\u65f6\u7684\u4fee\u6b63<br \/>\n\u5728 Xilinx \u7684\u539f\u59cb\u8bbe\u8ba1\u4e2d\uff0c\u5f53 XRT \u6253\u5f00 zocl\uff08\u7528\u4e8e XRT Edge \u7684 Linux \u5185\u6838\u6a21\u5757\uff09\u65f6\uff0c\u6307\u5b9a\u7684\u6587\u4ef6\u540d\u88ab\u56fa\u5b9a\u4e3a\u201c\/dev\/dri\/renderD128\u201d\u3002\u7136\u800c\uff0c\u8fd9\u6837\u4e00\u6765\uff0c\u5c31\u5f88\u96be\u4e0e\u5176\u4ed6 DRM \u9a71\u52a8\u7a0b\u5e8f\u5171\u5b58\uff0c\u5c31\u50cf[\u4ecb\u7ecd\u4e86\u5982\u4f55\u5728\u300eUltra96\/Ultra96-V2 \u5411\u3051 Debian GNU\/Linux \u3067 Lima Driver\u3092\u52d5\u304b\u3059\u300f\u4e2d\u6240\u793a\u7684\u90a3\u6837\u3002\u56e0\u6b64\uff0c\u5728\u6253\u5f00 zocl \u65f6\uff0c\u6211\u4eec\u5c06\u641c\u7d22 \/dev\/dri\uff0c\u4ee5\u4fbf\u627e\u5230\u201czocl\u201d\u3002<\/p>\n<p>\u5177\u4f53\u6765\u8bf4\uff0c\u5728src\/runtime_src_core\/edge\/user\/shim.cpp\u6587\u4ef6\u4e2d\u5b9a\u4e49\u4e86\u7528\u4e8e\u5728\/dev\/dri\u4e2d\u641c\u7d22zocl\u7684ZYNQ::scanner\u7c7b\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gh\">diff --git a\/src\/runtime_src\/core\/edge\/user\/shim.cpp b\/src\/runtime_src\/core\/edge\/user\/shim.cpp\r\nindex df0ff366..143e3264 100644\r\n<\/span><span class=\"gd\">--- a\/src\/runtime_src\/core\/edge\/user\/shim.cpp\r\n<\/span><span class=\"gi\">+++ b\/src\/runtime_src\/core\/edge\/user\/shim.cpp\r\n<\/span><span class=\"p\">@@ -38,6 +38,7 @@<\/span>\r\n #include &lt;cassert&gt;\r\n #include &lt;cstdarg&gt;\r\n\r\n+#include &lt;dirent.h&gt;\r\n #include &lt;fcntl.h&gt;\r\n #include &lt;poll.h&gt;\r\n #include &lt;unistd.h&gt;\r\n<span class=\"p\">@@ -90,6 +91,98 @@<\/span> namespace ZYNQ {\r\n \/\/initializing static member\r\n std::map&lt;uint64_t, uint32_t *&gt; shim::mKernelControl;\r\n\r\n+class scanner {\r\n<span class=\"gi\">+private:\r\n+  std::mutex lock;\r\n+  std::vector&lt;std::string&gt; dev_name_list;\r\n<\/span>\r\n+  void rescan_nolock(void)\r\n<span class=\"gi\">+  {\r\n+    const std::string dri_path      = \"\/dev\/dri\";\r\n+    const std::string render_prefix = \"renderD\";\r\n+    const std::string drm_name      = \"zocl\";\r\n+\r\n+    DIR* dp = opendir(dri_path.c_str());\r\n+    if (dp) {\r\n+      struct dirent* entry;\r\n+      drm_version    version;\r\n+      const std::unique_ptr&lt;char[]&gt; path(new char[512]);\r\n+      const std::unique_ptr&lt;char[]&gt; name(new char[128]);\r\n+      const std::unique_ptr&lt;char[]&gt; desc(new char[512]);\r\n+      const std::unique_ptr&lt;char[]&gt; date(new char[128]);\r\n+      std::memset(&amp;version, 0, sizeof(version));\r\n+      version.name     = name.get();\r\n+      version.name_len = 128;\r\n+      version.desc     = desc.get();\r\n+      version.desc_len = 512;\r\n+      version.date     = date.get();\r\n+      version.date_len = 128;\r\n+        \r\n+      while ((entry = readdir(dp))) {\r\n+        int fd;\r\n+        if (std::strncmp(entry-&gt;d_name, render_prefix.c_str(), render_prefix.length()) != 0)\r\n+          continue;\r\n+        sprintf(path.get(), \"%s\/%s\", dri_path.c_str(), entry-&gt;d_name);\r\n+        if ((fd = open(path.get(), O_RDWR, 0)) &lt; 0)\r\n+          continue;\r\n+        if (ioctl(fd, DRM_IOCTL_VERSION, &amp;version) == 0) {\r\n+          if (std::strncmp(version.name, drm_name.c_str(), drm_name.length()) == 0) {\r\n+            std::string dev_name(path.get());\r\n+            dev_name_list.insert(dev_name_list.begin(), dev_name);\r\n+          }\r\n+        }\r\n+        close(fd);\r\n+      }\r\n+      std::sort(dev_name_list.begin(), dev_name_list.end());\r\n+      closedir(dp);\r\n+    }\r\n+  }\r\n+\r\n+public:\r\n+  static scanner *get()\r\n+  {\r\n+    static scanner scanner;\r\n+    return &amp;scanner;\r\n+  }\r\n+  void rescan(void)\r\n+  {\r\n+    std::lock_guard&lt;std::mutex&gt; l(lock);\r\n+    rescan_nolock();\r\n+  }\r\n+\r\n+  size_t dev_num_total(void)\r\n+  {\r\n+    std::lock_guard&lt;std::mutex&gt; l(lock);\r\n+    return dev_name_list.size();\r\n+  }\r\n+\r\n+  const std::string&amp; dev_name(int index)\r\n+  {\r\n+    static const std::string null;\r\n+    std::lock_guard&lt;std::mutex&gt; l(lock);\r\n+    if (index &gt;= dev_name_list.size())\r\n+      return null;\r\n+    else\r\n+      return dev_name_list[index];\r\n+  }\r\n+\r\n+private:\r\n+  scanner(void) { rescan_nolock();}\r\n+  scanner(const scanner&amp;  s);\r\n+  scanner&amp; operator=(const scanner&amp; s);\r\n+};\r\n+void rescan(void)\r\n+{\r\n+  scanner::get()-&gt;rescan();\r\n+}\r\n+size_t dev_num_total(void)\r\n+{\r\n+  return scanner::get()-&gt;dev_num_total();\r\n+}\r\n+const std::string&amp; dev_name(int index)\r\n+{\r\n+  return scanner::get()-&gt;dev_name(index);\r\n+}\r\n+\r\n<\/span>\r\n<\/code><\/pre>\n<p>\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u5c06\u4fee\u6539\u4f4d\u4e8e src\/runtime_src_core\/edge\/user\/shim.cpp \u4e2d\u7684 shim \u7c7b\u6784\u9020\u51fd\u6570\uff0c\u4ee5\u4fbf\u4ece \/dev\/dri \u6253\u5f00\u76f8\u5e94\u7684\u8bbe\u5907\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code> shim::\r\n shim(unsigned index, const char *logfileName, xclVerbosityLevel verbosity)\r\n   : mCoreDevice(xrt_core::edge_linux::get_userpf_device(this, index))\r\n<span class=\"p\">@@ -103,9 +196,13 @@<\/span> shim(unsigned index, const char *logfileName, xclVerbosityLevel verbosity)\r\n\r\n   xclLog(XRT_INFO, \"XRT\", \"%s\", __func__);\r\n\r\n-  mKernelFD = open(\"\/dev\/dri\/renderD128\", O_RDWR);\r\n<span class=\"gi\">+  const std::string device_name = dev_name(index);\r\n+  if (device_name.empty()) {\r\n+    xclLog(XRT_ERROR, \"XRT\", \"%s: Card [%d] not found\", __func__, index);\r\n+  }\r\n+  mKernelFD = open(device_name.c_str(), O_RDWR, 0);\r\n<\/span>   if (!mKernelFD) {\r\n<span class=\"gd\">-    xclLog(XRT_ERROR, \"XRT\", \"%s: Cannot open \/dev\/dri\/renderD128\", __func__);\r\n<\/span><span class=\"gi\">+    xclLog(XRT_ERROR, \"XRT\", \"%s: Cannot open device %s\", __func__, device_name.c_str());\r\n<\/span>   }\r\n   mCmdBOCache = std::make_unique&lt;xrt_core::bo_cache&gt;(this, xrt_core::config::get_cmdbo_cache());\r\n   mDev = zynq_device::get_dev();\r\n\r\n<\/code><\/pre>\n<p>\u6b64\u5916\uff0c\u6211\u4eec\u5c06\u4fee\u6539\u4f4d\u4e8esrc\/runtime_src_core\/edge\/user\/shim.cpp\u4e2d\u7684xclProbe()\u51fd\u6570\u5982\u4e0b\u3002<\/p>\n<pre class=\"post-pre\"><code> @@ -1536,28 +1633,7 @@ unsigned\r\n xclProbe()\r\n {\r\n   PROBE_CB;\r\n<span class=\"gd\">-\r\n-  int fd = open(\"\/dev\/dri\/renderD128\", O_RDWR);\r\n-  if (fd &lt; 0) {\r\n-    return 0;\r\n-  }\r\n-  drm_version version;\r\n-  std::memset(&amp;version, 0, sizeof(version));\r\n-  version.name = new char[128];\r\n-  version.name_len = 128;\r\n-  version.desc = new char[512];\r\n-  version.desc_len = 512;\r\n-  version.date = new char[128];\r\n-  version.date_len = 128;\r\n-\r\n-  int result = ioctl(fd, DRM_IOCTL_VERSION, &amp;version);\r\n-  if (result)\r\n-    return 0;\r\n-\r\n-  result = std::strncmp(version.name, \"zocl\", 4);\r\n-  close(fd);\r\n-\r\n-  return (result == 0) ? 1 : 0;\r\n<\/span><span class=\"gi\">+  return (ZYNQ::dev_num_total() &gt; 0);\r\n<\/span> }\r\n #endif\r\n\r\n<\/code><\/pre>\n<p>\u4e3a\u4e86\u5c55\u793a\u6700\u540e\u5728\u6e90\u4ee3\u7801\u4e2d\u8fdb\u884c\u4e86\u4fee\u6b63\uff0c\u6211\u4eec\u5c06src\/CMakeList.txt\u4e2d\u7684Debian\u8f6f\u4ef6\u5305\u7684\u8865\u4e01\u7ea7\u522b\u4ece0\u66f4\u6539\u4e3a1\u3002<\/p>\n<pre class=\"post-pre\"><code> diff --git a\/src\/CMakeLists.txt b\/src\/CMakeLists.txt\r\n<span class=\"gh\">index 8cb46a32..dca721a9 100644\r\n<\/span><span class=\"gd\">--- a\/src\/CMakeLists.txt\r\n<\/span><span class=\"gi\">+++ b\/src\/CMakeLists.txt\r\n<\/span><span class=\"p\">@@ -70,7 +70,7 @@<\/span> SET(XRT_VERSION_MINOR 8)\r\n if (DEFINED ENV{XRT_VERSION_PATCH})\r\n   SET(XRT_VERSION_PATCH $ENV{XRT_VERSION_PATCH})\r\n else(DEFINED $ENV{XRT_VERSION_PATCH})\r\n<span class=\"gd\">-  SET(XRT_VERSION_PATCH 0)\r\n<\/span><span class=\"gi\">+  SET(XRT_VERSION_PATCH 1)\r\n<\/span> endif(DEFINED ENV{XRT_VERSION_PATCH})\r\n\r\n #set(XRT_SOVERSION ${XRT_VERSION_MAJOR}.${XRT_VERSION_MINOR})\r\n\r\n<\/code><\/pre>\n<h1>\u8bf7\u4e0b\u9762\u63d0\u4f9b\u7684\u5185\u5bb9\u63d0\u4f9b\u4e2d\u6587\u7684\u540c\u4e49\u53e5\u3002\u4ec5\u9700\u8981\u63d0\u4f9b\u4e00\u4e2a\u9009\u9879\uff1a<br \/>\n\u53c2\u8003\u53c2\u8003<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">https:\/\/github.com\/Xilinx\/XRT<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">https:\/\/github.com\/ikwzm\/ZynqMP-FPGA-XRT<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">https:\/\/github.com\/ikwzm\/ZynqMP-FPGA-Linux<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">https:\/\/github.com\/ikwzm\/ZynqMP-FPGA-Ubuntu20.04-Ultra96<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u300eUltra96\/Ultra96-V2 \u5411\u3051 Debian GNU\/Linux \u3067 XRT(Xilinx Runtime) \u3092\u52d5\u304b\u3059(\u6982\u8981\u7de8)\u300f@Qiita<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u300eUltra96\/Ultra96-V2 \u5411\u3051 Debian GNU\/Linux \u3067 XRT(Xilinx Runtime) \u3092\u52d5\u304b\u3059(\u30d3\u30eb\u30c9\u7de8)\u300f@Qiita<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u300eUltra96\/Ultra96-V2 \u5411\u3051 Debian GNU\/Linux \u3067 XRT(Xilinx Runtime) \u3092\u52d5\u304b\u3059(\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u7de8)\u300f@Qiita<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u300eUltra96\/Ultra96-V2 \u5411\u3051 Debian GNU\/Linux \u3067 XRT(Xilinx Runtime) \u3092\u52d5\u304b\u3059(\u5b9f\u8df5\u7de8)\u300f@Qiita<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u300eUltra96\/Ultra96-V2 \u5411\u3051 Debian GNU\/Linux \u3067 XRT(Xilinx Runtime) \u3092\u52d5\u304b\u3059(Vitis\u7de8)\u300f@Qiita<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u300eUltraZed\/Ultra96\/Ultra96-V2 \u5411\u3051 Debian GNU\/Linux (v2020.2\u7248) \u30d6\u30fc\u30c8\u30a4\u30e1\u30fc\u30b8\u306e\u63d0\u4f9b\u300f@Qiita<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u300eUltra96\/Ultra96-V2 \u5411\u3051 Debian GNU\/Linux \u3067 Lima Driver\u3092\u52d5\u304b\u3059\u300f@Qiita<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148\u7b46\u8005\u63d0\u4f9b Debian GNU\/Linux \u7d66 Ultra96\/Ultra96-V2 (ZynqMP)\u3002\u53e6 [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[227],"class_list":["post-26878","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-227"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u5728 Ultra96\/Ultra96-V2 \u4e0a\u8fd0\u884c Debian GNU\/Linux \u5e76\u5b89\u88c5 XRT (Xilinx Runtime) \u7248\u672c\u4e3a2.8\u7248 - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"\u5173\u4e8e\u5728 Ultra96\/Ultra96-V2 \u4e0a\u8fd0\u884c Debian GNU\/Linux \u5e76\u5b89\u88c5 XRT \u7684\u6280\u672f\u6587\u7ae0\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5728-ultra96-ultra96-v2-\u4e0a\u8fd0\u884c-debian-gnu-linux-\u5e76\u5b89\u88c5-xrt-xilinx-runtime-\u7248\u672c\u4e3a2-8\u7248\u3002-2\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5728 Ultra96\/Ultra96-V2 \u4e0a\u8fd0\u884c Debian GNU\/Linux \u5e76\u5b89\u88c5 XRT (Xilinx Runtime) \u7248\u672c\u4e3a2.8\u7248\" \/>\n<meta property=\"og:description\" content=\"\u5173\u4e8e\u5728 Ultra96\/Ultra96-V2 \u4e0a\u8fd0\u884c Debian GNU\/Linux \u5e76\u5b89\u88c5 XRT \u7684\u6280\u672f\u6587\u7ae0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5728-ultra96-ultra96-v2-\u4e0a\u8fd0\u884c-debian-gnu-linux-\u5e76\u5b89\u88c5-xrt-xilinx-runtime-\u7248\u672c\u4e3a2-8\u7248\u3002-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-29T08:53:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-11T15:34:31+00:00\" \/>\n<meta name=\"author\" content=\"\u65b0, \u97f5\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u65b0, \u97f5\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8-ultra96-ultra96-v2-%e4%b8%8a%e8%bf%90%e8%a1%8c-debian-gnu-linux-%e5%b9%b6%e5%ae%89%e8%a3%85-xrt-xilinx-runtime-%e7%89%88%e6%9c%ac%e4%b8%ba2-8%e7%89%88%e3%80%82-2\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8-ultra96-ultra96-v2-%e4%b8%8a%e8%bf%90%e8%a1%8c-debian-gnu-linux-%e5%b9%b6%e5%ae%89%e8%a3%85-xrt-xilinx-runtime-%e7%89%88%e6%9c%ac%e4%b8%ba2-8%e7%89%88%e3%80%82-2\/\",\"name\":\"\u5728 Ultra96\/Ultra96-V2 \u4e0a\u8fd0\u884c Debian GNU\/Linux \u5e76\u5b89\u88c5 XRT (Xilinx Runtime) \u7248\u672c\u4e3a2.8\u7248 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-06-29T08:53:05+00:00\",\"dateModified\":\"2025-08-11T15:34:31+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9\"},\"description\":\"\u5173\u4e8e\u5728 Ultra96\/Ultra96-V2 \u4e0a\u8fd0\u884c Debian GNU\/Linux \u5e76\u5b89\u88c5 XRT \u7684\u6280\u672f\u6587\u7ae0\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8-ultra96-ultra96-v2-%e4%b8%8a%e8%bf%90%e8%a1%8c-debian-gnu-linux-%e5%b9%b6%e5%ae%89%e8%a3%85-xrt-xilinx-runtime-%e7%89%88%e6%9c%ac%e4%b8%ba2-8%e7%89%88%e3%80%82-2\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8-ultra96-ultra96-v2-%e4%b8%8a%e8%bf%90%e8%a1%8c-debian-gnu-linux-%e5%b9%b6%e5%ae%89%e8%a3%85-xrt-xilinx-runtime-%e7%89%88%e6%9c%ac%e4%b8%ba2-8%e7%89%88%e3%80%82-2\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8-ultra96-ultra96-v2-%e4%b8%8a%e8%bf%90%e8%a1%8c-debian-gnu-linux-%e5%b9%b6%e5%ae%89%e8%a3%85-xrt-xilinx-runtime-%e7%89%88%e6%9c%ac%e4%b8%ba2-8%e7%89%88%e3%80%82-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5728 Ultra96\/Ultra96-V2 \u4e0a\u8fd0\u884c Debian GNU\/Linux \u5e76\u5b89\u88c5 XRT (Xilinx Runtime) \u7248\u672c\u4e3a2.8\u7248\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9\",\"name\":\"\u65b0, \u97f5\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g\",\"caption\":\"\u65b0, \u97f5\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunxin\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8-ultra96-ultra96-v2-%e4%b8%8a%e8%bf%90%e8%a1%8c-debian-gnu-linux-%e5%b9%b6%e5%ae%89%e8%a3%85-xrt-xilinx-runtime-%e7%89%88%e6%9c%ac%e4%b8%ba2-8%e7%89%88%e3%80%82-2\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u5728 Ultra96\/Ultra96-V2 \u4e0a\u8fd0\u884c Debian GNU\/Linux \u5e76\u5b89\u88c5 XRT (Xilinx Runtime) \u7248\u672c\u4e3a2.8\u7248 - Blog - Silicon Cloud","description":"\u5173\u4e8e\u5728 Ultra96\/Ultra96-V2 \u4e0a\u8fd0\u884c Debian GNU\/Linux \u5e76\u5b89\u88c5 XRT \u7684\u6280\u672f\u6587\u7ae0","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u5728-ultra96-ultra96-v2-\u4e0a\u8fd0\u884c-debian-gnu-linux-\u5e76\u5b89\u88c5-xrt-xilinx-runtime-\u7248\u672c\u4e3a2-8\u7248\u3002-2\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5728 Ultra96\/Ultra96-V2 \u4e0a\u8fd0\u884c Debian GNU\/Linux \u5e76\u5b89\u88c5 XRT (Xilinx Runtime) \u7248\u672c\u4e3a2.8\u7248","og_description":"\u5173\u4e8e\u5728 Ultra96\/Ultra96-V2 \u4e0a\u8fd0\u884c Debian GNU\/Linux \u5e76\u5b89\u88c5 XRT \u7684\u6280\u672f\u6587\u7ae0","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u5728-ultra96-ultra96-v2-\u4e0a\u8fd0\u884c-debian-gnu-linux-\u5e76\u5b89\u88c5-xrt-xilinx-runtime-\u7248\u672c\u4e3a2-8\u7248\u3002-2\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-06-29T08:53:05+00:00","article_modified_time":"2025-08-11T15:34:31+00:00","author":"\u65b0, \u97f5","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u65b0, \u97f5","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"2 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8-ultra96-ultra96-v2-%e4%b8%8a%e8%bf%90%e8%a1%8c-debian-gnu-linux-%e5%b9%b6%e5%ae%89%e8%a3%85-xrt-xilinx-runtime-%e7%89%88%e6%9c%ac%e4%b8%ba2-8%e7%89%88%e3%80%82-2\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8-ultra96-ultra96-v2-%e4%b8%8a%e8%bf%90%e8%a1%8c-debian-gnu-linux-%e5%b9%b6%e5%ae%89%e8%a3%85-xrt-xilinx-runtime-%e7%89%88%e6%9c%ac%e4%b8%ba2-8%e7%89%88%e3%80%82-2\/","name":"\u5728 Ultra96\/Ultra96-V2 \u4e0a\u8fd0\u884c Debian GNU\/Linux \u5e76\u5b89\u88c5 XRT (Xilinx Runtime) \u7248\u672c\u4e3a2.8\u7248 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-06-29T08:53:05+00:00","dateModified":"2025-08-11T15:34:31+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9"},"description":"\u5173\u4e8e\u5728 Ultra96\/Ultra96-V2 \u4e0a\u8fd0\u884c Debian GNU\/Linux \u5e76\u5b89\u88c5 XRT \u7684\u6280\u672f\u6587\u7ae0","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8-ultra96-ultra96-v2-%e4%b8%8a%e8%bf%90%e8%a1%8c-debian-gnu-linux-%e5%b9%b6%e5%ae%89%e8%a3%85-xrt-xilinx-runtime-%e7%89%88%e6%9c%ac%e4%b8%ba2-8%e7%89%88%e3%80%82-2\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8-ultra96-ultra96-v2-%e4%b8%8a%e8%bf%90%e8%a1%8c-debian-gnu-linux-%e5%b9%b6%e5%ae%89%e8%a3%85-xrt-xilinx-runtime-%e7%89%88%e6%9c%ac%e4%b8%ba2-8%e7%89%88%e3%80%82-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8-ultra96-ultra96-v2-%e4%b8%8a%e8%bf%90%e8%a1%8c-debian-gnu-linux-%e5%b9%b6%e5%ae%89%e8%a3%85-xrt-xilinx-runtime-%e7%89%88%e6%9c%ac%e4%b8%ba2-8%e7%89%88%e3%80%82-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u5728 Ultra96\/Ultra96-V2 \u4e0a\u8fd0\u884c Debian GNU\/Linux \u5e76\u5b89\u88c5 XRT (Xilinx Runtime) \u7248\u672c\u4e3a2.8\u7248"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9","name":"\u65b0, \u97f5","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g","caption":"\u65b0, \u97f5"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunxin\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8-ultra96-ultra96-v2-%e4%b8%8a%e8%bf%90%e8%a1%8c-debian-gnu-linux-%e5%b9%b6%e5%ae%89%e8%a3%85-xrt-xilinx-runtime-%e7%89%88%e6%9c%ac%e4%b8%ba2-8%e7%89%88%e3%80%82-2\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/26878","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=26878"}],"version-history":[{"count":3,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/26878\/revisions"}],"predecessor-version":[{"id":111034,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/26878\/revisions\/111034"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=26878"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=26878"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=26878"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}