基于Vitis-AI 3.0的DPU平台搭建的基本流程、环境搭建步骤以及工程建立方法,演示并搭建平台

慈云数据 2024-06-01 技术支持 62 0

一、简介

本说明文档将阐述基于Vitis-AI 3.0的DPU平台搭建的基本流程环境搭建步骤以及工程建立方法,演示并搭建平台,为后续的开发提供参考。

二、环境搭建

工具及下载地址:

  • ubuntu20.04 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
  • vivado2022.2 https://account.amd.com/en/forms/downloads/xef.html?filename=Xilinx_Unified_2022.2_1014_8888.tar.gz
  • petalinux2022.2 https://account.amd.com/en/forms/downloads/xef.html?filename=petalinux-v2022.2-10141622-installer.run
  • Vitis2022.2 amd - Sign In
  • petalinux 离线编译 工具

    arrch64 2022.2 https://account.amd.com/en/forms/downloads/xef.html?filename=sstate_aarch64_2022.2_10071807.tar.gz

    downloads 2022.2 https://account.amd.com/en/forms/downloads/xef.html?filename=downloads_2022.2_10071807.tar.gz

    三、平台搭建流程A

    平台搭建流程A仅演示建立最小系统调用vitis ai的方法。

    3.1 vivado

    1. 使用vivado绘制bd图,基于zcu102构建最小系统,生成.xsa文件

    ee77de7eb05f4354a31a0db2f68cc72a.png

    1. 构建最小系统
    2. 打开 creat block design
    3. 加入ps ;并自动连接进行基础配置

    4aa5e5332dbf4a08b888ae1bab6eba93.png

    打开ps-pl连接

    13890d643b1c4700a24861dd7569fab8.png

    增加时钟向导模块分别输出100M,200M和400M,且为每个时钟增加一个复位模块

    f13754b5fa774626963d6039f007bbe5.png

    添加中断

    06d11b9dccae40dfa8b2aee1e53ed81d.png

    1. platform setup中需要设置的端口

    aa63aba8354a470a87f402788eece6dd.png

    01ff43077fdd407d81e7cd33adaa3672.png

    fc0a8b9f31d943c2a86118f42fdbe8dd.png

    230b0b9b75204234934236ad81f0464c.png

    1. 自动连接,整体模块图如下所示
    1. 生成头文件(create HDL wrapper)
    2. 生成比特流
    3. 导出.xsa文件(file-Export-Export Platform)

    935f2d88d5c0430cbd51f51559d6792c.png

    e1b1508651d14b358ce1532706464b34.png

    e8780045f1dd40c5a00e9cecd7e9dea1.png

    5f0167e5549c437e9c8740ac4920c2b8.png

    ead54df4d3d34c64a9443e347e164ba3.png

    cce35480739f42c9937f5b6f32cb65d4.png

    1. 把.xsa文件放入petalinux工程中进行编译生成镜像文件。

    3.2 petalinux

    1. 创建petalinux工程

    petalinux-create --type project --template zynqMP --name prXXXX

    cc7d23bd28024f07993d7448b954eb42.png

    1. 将.xsa复制到新建立的工程中

    e94a14215a8a4f2eb28678d38196886d.png

    1. 使用.XSA配置petalinux,命令如下

    petalinux-config --get-hw-description=.

    • 第一步、配置sd卡第二分区

      c930f87446e94990923596fc616b39b2.png

      c73e9d0558f745ed83b5dbf24ecd4e5e.png

      选中SD卡第二分区

      8428bbf2c8094d16953726346b2df553.png

      • 第二步

        a9cd731528cd44a88a5ad7fba98b5f9d.png

        按如下配置

        980bc87d22a94582bb9c0f5b247243da.png

        • 第三步、引入预先下载的(sstate-cache/downloads可在petalinux下载页面下方下载)

          11965d2a00ba441ea92a5cf14090b28a.png

          并导入 file:///home/ubuntu/workspace/DATA/Work_Space/opt/sstate-cache/downloads

          65806f78dfd04ae59f9a3638df70f36f.png

          7ab879ef25ac4562a73a53bb5c6449e9.png

          修改为

          2d38ae9d99754f19891284ec86b593e8.png

          • 第四步引入预先下载的(sstate-cache/aarch64可在petalinux下载页面下方下载)

            f4de3b3bd077495ebdb8ad8090b48ab6.png

            并导入 /home/ubuntu/workspace/DATA/Work_Space/opt/sstate-cache/aarch64

            6f7cd7b3e2bd43379f56d9395de10b09.png

            43b18037eae34af3af09d4e930a3ab7e.png

            更改为

            c055423bafe54a7db956d6ec599adc33.png

            保存并退出,下方显示已经顺利配置完成

            58627533ceb842f2bc45d6ea67e54708.png

            1. 配置user-rootfsconfig 相对路径

            47d5d34f935247d79d32200f1c64392c.png

            打开显示

            6e49325047fa4cfd8cc51e6a99199008.png

            修改为

            09cf7570b6124e11bb5980ad798d1eae.png

            CONIG_gpio-demo

            CONIG_peekpoke

            CONIG_xrt

            CONFIG_dnf

            CONFIG_e2fsprogs-resize2fs

            CONFIG_parted

            CONFIG_resize-part

            CONFIG_packagegroup-petalinux-vitisai

            CONFIG_packagegroup-petalinux-self-hosted

            CONFIG_cmake

            CONFIG_packagegroup-petalinux-vitisai-dev

            CONFIG_xrt-dev

            CONFIG_opencl-clhpp-dev

            CONFIG_opencl-headers-dev

            CONFIG_packagegroup-petalinux-opencv

            CONFIG_packagegroup-petalinux-opencv-dev

            CONFIG_mesa-megadriver

            CONFIG_packagegroup-petalinux-x11

            CONFIG_packagegroup-petalinux-v4lutils

            CONFIG_packagegroup-petalinux-matchbox

            配置完成后回到petalinux工程路径下

            1. 启用选定的 rootfs 软件包在终端输入

            petalinux-config -c rootfs

            打开user packages

            ba29dfe8c5f04360b568d6bf8b76f0e2.png

            全部选中以下配置

            d48607f7f47848e898c6e05447c03ede.png

            0a66fe0caa844f77be124d3666bf92fb.png

            26e0ddf128e343d0ae8d994802e6a7fe.png

            保存退出

            1. 修改设备树

            相对路径为

            af7dac839b8b4761b628467d24a27ea7.png

            修改为以下代码

            /include/ "system-conf.dtsi"

            / {

            chosen {

            bootargs = "earlycon console=ttyPS0,115200 clk_ignore_unused root=/dev/mmcblk0p2 rw rootwait cma=512M";

            };

            };

            &sdhci1 {

            no-1-8-v;

            disable-wp;

            };

            1. 编译工程

            petalinux-build

            petalinux-build --sdk

            petalinux-package --sysyroot

            5ae3a123f9a44b4087d4294c1e61a89c.png

            af1fc6e03df04441ac5553a8470666a5.png

            1. 在petalinux路径(petalinux/prxx/images/linux)下新建名为platform的文件夹

            55562211b7184d18916fa9cda61c94b3.png

            1. 在里面新建两个文件夹

            2ac3a64ae2e94be69c3d5e6159ebb70f.png

            在上层linux路径下拷贝以下文件到boot中

            1f2709f8169a444bb722882787d9be35.png

            在上层linux路径下拷贝以下文件到cd_dir中

            7efc4a1bc1c148888a075d4cc6050b51.png

            3.3 vitis

            1. 新建vitis工程

            命令行打开vitis --classic并连接到新建立的工程文件夹

            eea482d3945046e9a761c299a5275330.png

            43dcf52ce8c74a2da17e37b6b6b7e400.png

            f5d60dcc02d94216aff2443637ec1947.png

            1. .xsa导入之前vivado生成的文件

            16c383abbc5342c2b980303ce441aa2a.png

            1. 导入配置

            5310065d75e94630b57a4bf177c9b87c.png

            fb5072fb624b4085a43815c39a363b26.png

            971c202fb97449268e3fd1fd1d654416.png

            1. 编译平台(build project)

            bc3b9fa7ce8d46939a60a35cebe17694.png

            1. vitis导入vitis AI,并配置环境。

            3ef7fc48c72f4d448017a629ffa527f0.png

            8e87d4e0e5ff40c6912cc171e9911c4e.png

            fab84fe04b394b67a575ff2eb0ba0bca.png

            57974cbaa71c489a90e9685c68639fa2.png

            f0aec09b7b7a41b9a3c5578c299b59d7.png

            上述路径见下方

            2ef42cfab37c47f991ec4cfb56c9b5e4.png

            6f0b8b00304b4b768ae0a1ec5c7d77ce.png

            选中DPU Kernal ( Vitis ai导入的)

            db2df4a8aae541f7b6f401c5442102f3.png

            1. 修改工程配置

            c454128c8a21445e8270d670cb644352.png

            1. 编译工程

            工程编译好之后会在以下路径生成几个文件

            ./zcu102/vitis/xxx_system/Hardware/package

            4fc3c2a7a3d84cf9b42f1268d2700b6a.png

            将sd_card.img即烧录为所需要的文件

            四、平台搭建流程B

            平台搭建流程B仅演示按照官方搭建dpu的方法,此过程可参考官方DPU配置。

            也可直接source trd.tcl文件。

            4.1 vivado

            3165ced099874e1898e36c614d02e2f9.png

            1. 首先添加IP,并且Run Block Automatiom

            d8beebdf515d41a180f4255de1ce89aa.png

            607db121d5b647b8b96be5be700b7e66.png

            配置如图所示

            de3982fa236247efba6cd4efc63eeaf3.png

            最后端口连接

            004b0c7f13f543a98a532d71eb669279.png

            1. 配置dpu IP

            827828938ff347e7b63dc89cba0a7745.png

            f1185ea308b04034bd42f27329b17632.png

            1. 时钟配置

            7eed0dae1b214ef58cafae27c3e5705f.png

            1. 中断配置

            2f95c520327d477f8060ae21989bec5f.png

            DPU部分总框图

            7708afb5c57d4c998378dfef4f64e88f.png

            连线总框图。

            ed975937dda44dd28254a0bbbfafd101.png

            1. 编译生成比特流。

            fc0e3f32735e4302b90a37d861319364.png

            1. 导出xsa文件。

            4.2 petalinux

            1. 创建petalinux工程

            petalinux-create --type project --template zynqMP --name prXXXX

            936648625a704040ae3fb7de65f803dc.png

            1. 将.xsa复制到新建立的工程中

            5ac77c5837a34d2486b6b11dda335b78.png

            1. 使用.XSA配置petalinux,命令如下

            petalinux-config --get-hw-description=.

            • 第一步、配置sd卡第二分区

              bf8cb826606e4ac39a1aa0dde55a2359.png

              a95d2db655bb42dd9b27182f3c77752b.png

              选中SD卡第二分区

              8e50f9d197d648b6aac6e91868b4134f.png

              配置完成

              702f4d2a6446495f92ea9b46000505b5.png

              1. 修改设备树

              相对路径为

              bf77ffb495914bb9b6df843bff47f17d.png

              修改为以下代码

              /include/ "system-conf.dtsi"

              / {

                  chosen {

                   bootargs = "earlycon console=ttyPS0,115200 clk_ignore_unused root=/dev/mmcblk0p2 rw rootwait cma=512M";

                  };

              };

              &sdhci1 {

                    no-1-8-v;

                    disable-wp;

              };

              1. 编译工程 petalinux-build

              b04be3bffc504a35abf6050d65b37008.png

              1. 打包重新生成需要的boot.bin 和image.ub文件

              73a9a60951784e5f833f68c55c27b90a.png

              五、上板测试环节

              5.1 连接开发板

              1. 镜像文件烧录至sd卡,烧录工具为balenaEtcher。

              或者可以自行官网下载文件系统,并将boot.bin 和image.ub文件拷贝到BOOT分区。

              9688f358811e449ca4ec1529f059c77f.png

              1. 将ZCU102开发板上的SW6拨码开关进行调整,调整至使用SD卡启动。

              d8cfd21d75b84ebf86096d7b9b0b95a1.png

              1. 将开发板与主机连接(串口、网口)

              安装zcu102 usb驱动

              连接串口,下图13为串口位置、12为网口连接位置。

              70db20e0b6d447cf85d1951958b50913.png

              1. PC与开发板共享网络,在共享网络中选中以太网

              559c13bc3c6f4de99f7fa4fb90b174c9.png

              选中以太网后,ipv4会自动分配ip

              d8e90a9a073d42d5b22fa943a8690761.png

              1. 配置波特率:115200

              通过命令查询开发板端口地址(ifconfig),自动分配为192.168.137.234

              5b8bc0f08f0143498f4671ed65040cc8.png

              1. 通过ssh连接,点击ok即可进入

              526a010975764e3a94506f3e8a5be402.png

              输入用户名和密码

              d43f660dfd454fdda35594fb2a796b00.png

              成功连接

              90677287f64b4f1baaca685d53be07af.png

              5.2 测试网络

              共测试两项网络,分为测试1、2。二者区别如下:

              测试1为单输入网络Resnet50,其可执行文件可直接下载。

              测试2 为双输入网络FADnet,其可执行文件需要通过build.sh重新生成。

              测试1、单输入网络Resnet50 (可参考官网教程)

              1. 将此文件拷贝并解压到目标runtime文件夹下(Quick Start Guide for Zynq™ UltraScale+™ — Vitis™ AI 3.0 documentation (xilinx.github.io))

              vitis_ai_runtime_r3.0.0_image_video.tar.gz

              1954c8526cf14eac98fc79c0be697f7f.png

              1. 下载model(下载地址:wget https://www.xilinx.com/bin/public/openDownload?filename=resnet50-zcu102_zcu104_kv260-r3.0.0.tar.gz -O resnet50-zcu102_zcu104_kv260-r3.0.0.tar.gz)
              2. 并解压复制至目标路径( cp resnet50 /usr/share/vitis_ai_library/models -r)
              3. 在目标文件夹下运行demo resnet50 (./resnet50 /usr/share/vitis_ai_library/models/resnet50/resnet50.xmodel)

              520216d0dad9479d935b240d3e532bea.png

              测试2、双输入网络FADnet

              1. 在以下路径中找到fadnet文件夹,文件夹内容如下

              .\Vitis-AI-3.0\examples\vai_library\samples\dpu_task\fadnet

              f268bc11e1fe43c38185ed5808c2d095.png

              1. 将fadnet文件夹拷贝到开发板中

              fefda04e053d43de83738d30df674001.png

              79b69b7899144e0b93742da0c61bd66b.png

              1. 在终端输入 sh build.sh

              994080592dd54eebae815cf18fc5b210.png

              运行完成后,会生成可执行文件,如上图所示。

              1. 在上述工程路径下,复制以下测试图片,并分别命名为; demo_fadnet_right.png demo_fadnet_left.png

              86f17545ef9640378784ad9880e3918d.png

               

               

              1. 下面展示两种模型,其他可参照readme
              • 在终端中输入指令 ./demo_fadnet demo_fadnet_left.png demo_fadnet_right.png

                即可在工程路径,生成以下 result_fadnet.jpg

                e1ff2c5058ca4f8c9f023555f51694ae.png

                 

                • 在终端中输入指令

                  env FADNET_MODEL_0=/usr/share/vitis_ai_library/models/FADNet_pruned_0_pt/FADNet_pruned_0_pt.xmodel FADNET_MODEL_1=/usr/share/vitis_ai_library/models/FADNet_pruned_1_pt/FADNet_pruned_1_pt.xmodel FADNET_MODEL_2=/usr/share/vitis_ai_library/models/FADNet_pruned_2_pt/FADNet_pruned_2_pt.xmodel ./demo_fadnet demo_fadnet_left.png demo_fadnet_right.png

                  即可在工程路径,生成以下 result_fadnet.jpg

                  至此已完成基于vitis3.0 的dpu搭建以及初步验证工作。

                   

                   

                   

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon