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

ETGBAR 2024-10-02 14:31:01 阅读 78

一、简介

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

二、环境搭建

工具及下载地址:

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

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

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

ee77de7eb05f4354a31a0db2f68cc72a.png

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

4aa5e5332dbf4a08b888ae1bab6eba93.png

打开ps-pl连接

13890d643b1c4700a24861dd7569fab8.png

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

f13754b5fa774626963d6039f007bbe5.png

添加中断

06d11b9dccae40dfa8b2aee1e53ed81d.png

platform setup中需要设置的端口

aa63aba8354a470a87f402788eece6dd.png

01ff43077fdd407d81e7cd33adaa3672.png

fc0a8b9f31d943c2a86118f42fdbe8dd.png

230b0b9b75204234934236ad81f0464c.png

自动连接,整体模块图如下所示

生成头文件(create HDL wrapper)生成比特流导出.xsa文件(file-Export-Export Platform)

935f2d88d5c0430cbd51f51559d6792c.png

e1b1508651d14b358ce1532706464b34.png

e8780045f1dd40c5a00e9cecd7e9dea1.png

5f0167e5549c437e9c8740ac4920c2b8.png

ead54df4d3d34c64a9443e347e164ba3.png

cce35480739f42c9937f5b6f32cb65d4.png

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

3.2 petalinux

创建petalinux工程

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

cc7d23bd28024f07993d7448b954eb42.png

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

e94a14215a8a4f2eb28678d38196886d.png

使用.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

配置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工程路径下

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

petalinux-config -c rootfs

打开user packages

ba29dfe8c5f04360b568d6bf8b76f0e2.png

全部选中以下配置

d48607f7f47848e898c6e05447c03ede.png

0a66fe0caa844f77be124d3666bf92fb.png

26e0ddf128e343d0ae8d994802e6a7fe.png

保存退出

修改设备树

相对路径为

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;

};

编译工程

petalinux-build

petalinux-build --sdk

petalinux-package --sysyroot

5ae3a123f9a44b4087d4294c1e61a89c.png

af1fc6e03df04441ac5553a8470666a5.png

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

55562211b7184d18916fa9cda61c94b3.png

在里面新建两个文件夹

2ac3a64ae2e94be69c3d5e6159ebb70f.png

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

1f2709f8169a444bb722882787d9be35.png

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

7efc4a1bc1c148888a075d4cc6050b51.png

3.3 vitis

新建vitis工程

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

eea482d3945046e9a761c299a5275330.png

43dcf52ce8c74a2da17e37b6b6b7e400.png

f5d60dcc02d94216aff2443637ec1947.png

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

16c383abbc5342c2b980303ce441aa2a.png

导入配置

5310065d75e94630b57a4bf177c9b87c.png

fb5072fb624b4085a43815c39a363b26.png

971c202fb97449268e3fd1fd1d654416.png

编译平台(build project)

bc3b9fa7ce8d46939a60a35cebe17694.png

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

3ef7fc48c72f4d448017a629ffa527f0.png

8e87d4e0e5ff40c6912cc171e9911c4e.png

fab84fe04b394b67a575ff2eb0ba0bca.png

57974cbaa71c489a90e9685c68639fa2.png

f0aec09b7b7a41b9a3c5578c299b59d7.png

上述路径见下方

2ef42cfab37c47f991ec4cfb56c9b5e4.png

6f0b8b00304b4b768ae0a1ec5c7d77ce.png

选中DPU Kernal ( Vitis ai导入的)

db2df4a8aae541f7b6f401c5442102f3.png

修改工程配置

c454128c8a21445e8270d670cb644352.png

编译工程

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

./zcu102/vitis/xxx_system/Hardware/package

4fc3c2a7a3d84cf9b42f1268d2700b6a.png

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

四、平台搭建流程B

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

也可直接source trd.tcl文件。

4.1 vivado

3165ced099874e1898e36c614d02e2f9.png

首先添加IP,并且Run Block Automatiom

d8beebdf515d41a180f4255de1ce89aa.png

607db121d5b647b8b96be5be700b7e66.png

配置如图所示

de3982fa236247efba6cd4efc63eeaf3.png

最后端口连接

004b0c7f13f543a98a532d71eb669279.png

配置dpu IP

827828938ff347e7b63dc89cba0a7745.png

f1185ea308b04034bd42f27329b17632.png

时钟配置

7eed0dae1b214ef58cafae27c3e5705f.png

中断配置

2f95c520327d477f8060ae21989bec5f.png

DPU部分总框图

7708afb5c57d4c998378dfef4f64e88f.png

连线总框图。

ed975937dda44dd28254a0bbbfafd101.png

编译生成比特流。

fc0e3f32735e4302b90a37d861319364.png

导出xsa文件。

4.2 petalinux

创建petalinux工程

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

936648625a704040ae3fb7de65f803dc.png

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

5ac77c5837a34d2486b6b11dda335b78.png

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

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

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

bf8cb826606e4ac39a1aa0dde55a2359.png

a95d2db655bb42dd9b27182f3c77752b.png

选中SD卡第二分区

8e50f9d197d648b6aac6e91868b4134f.png

配置完成

702f4d2a6446495f92ea9b46000505b5.png

修改设备树

相对路径为

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;

};

编译工程 petalinux-build

b04be3bffc504a35abf6050d65b37008.png

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

73a9a60951784e5f833f68c55c27b90a.png

五、上板测试环节

5.1 连接开发板

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

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

9688f358811e449ca4ec1529f059c77f.png

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

d8cfd21d75b84ebf86096d7b9b0b95a1.png

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

安装zcu102 usb驱动。

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

70db20e0b6d447cf85d1951958b50913.png

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

559c13bc3c6f4de99f7fa4fb90b174c9.png

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

d8e90a9a073d42d5b22fa943a8690761.png

配置波特率:115200

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

5b8bc0f08f0143498f4671ed65040cc8.png

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

526a010975764e3a94506f3e8a5be402.png

输入用户名和密码

d43f660dfd454fdda35594fb2a796b00.png

成功连接

90677287f64b4f1baaca685d53be07af.png

5.2 测试网络

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

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

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

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

将此文件拷贝并解压到目标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

下载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)并解压复制至目标路径( cp resnet50 /usr/share/vitis_ai_library/models -r)在目标文件夹下运行demo resnet50 (./resnet50 /usr/share/vitis_ai_library/models/resnet50/resnet50.xmodel)

520216d0dad9479d935b240d3e532bea.png

测试2、双输入网络FADnet

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

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

f268bc11e1fe43c38185ed5808c2d095.png

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

fefda04e053d43de83738d30df674001.png

79b69b7899144e0b93742da0c61bd66b.png

在终端输入 sh build.sh

994080592dd54eebae815cf18fc5b210.png

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

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

86f17545ef9640378784ad9880e3918d.png

 

 

下面展示两种模型,其他可参照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搭建以及初步验证工作。

 

 

 



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。