一、简介
本说明文档将阐述基于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
- 使用vivado绘制bd图,基于zcu102构建最小系统,生成.xsa文件
- 构建最小系统
- 打开 creat block design
- 加入ps ;并自动连接进行基础配置
打开ps-pl连接
增加时钟向导模块分别输出100M,200M和400M,且为每个时钟增加一个复位模块
添加中断
- platform setup中需要设置的端口
自动连接,整体模块图如下所示
生成头文件(create HDL wrapper)
生成比特流
导出.xsa文件(file-Export-Export Platform)
- 把.xsa文件放入petalinux工程中进行编译生成镜像文件。
3.2 petalinux
- 创建petalinux工程
petalinux-create --type project --template zynqMP --name prXXXX
- 将.xsa复制到新建立的工程中
- 使用.XSA配置petalinux,命令如下
petalinux-config --get-hw-description=.
- 第一步、配置sd卡第二分区
选中SD卡第二分区
- 第二步
按如下配置
- 第三步、引入预先下载的(sstate-cache/downloads可在petalinux下载页面下方下载)
并导入 file:///home/ubuntu/workspace/DATA/Work_Space/opt/sstate-cache/downloads
修改为
- 第四步引入预先下载的(sstate-cache/aarch64可在petalinux下载页面下方下载)
并导入 /home/ubuntu/workspace/DATA/Work_Space/opt/sstate-cache/aarch64
更改为
保存并退出,下方显示已经顺利配置完成
- 配置user-rootfsconfig 相对路径为
打开显示
修改为
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
全部选中以下配置
保存退出
- 修改设备树
相对路径为
修改为以下代码
/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
- 在petalinux路径(petalinux/prxx/images/linux)下新建名为platform的文件夹
- 在里面新建两个文件夹
在上层linux路径下拷贝以下文件到boot中
在上层linux路径下拷贝以下文件到cd_dir中
3.3 vitis
- 新建vitis工程
命令行打开vitis --classic并连接到新建立的工程文件夹
- .xsa导入之前vivado生成的文件
- 导入配置
- 编译平台(build project)
- vitis导入vitis AI,并配置环境。
上述路径见下方
选中DPU Kernal ( Vitis ai导入的)
- 修改工程配置
- 编译工程
工程编译好之后会在以下路径生成几个文件
./zcu102/vitis/xxx_system/Hardware/package
将sd_card.img即烧录为所需要的文件
四、平台搭建流程B
平台搭建流程B仅演示按照官方搭建dpu的方法,此过程可参考官方DPU配置。
也可直接source trd.tcl文件。
4.1 vivado
- 首先添加IP,并且Run Block Automatiom
配置如图所示
最后端口连接
- 配置dpu IP
- 时钟配置
- 中断配置
DPU部分总框图
连线总框图。
- 编译生成比特流。
- 导出xsa文件。
4.2 petalinux
- 创建petalinux工程
petalinux-create --type project --template zynqMP --name prXXXX
- 将.xsa复制到新建立的工程中
- 使用.XSA配置petalinux,命令如下
petalinux-config --get-hw-description=.
- 第一步、配置sd卡第二分区
选中SD卡第二分区
配置完成
- 修改设备树
相对路径为
修改为以下代码
/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
- 打包重新生成需要的boot.bin 和image.ub文件
五、上板测试环节
5.1 连接开发板
- 镜像文件烧录至sd卡,烧录工具为balenaEtcher。
或者可以自行官网下载文件系统,并将boot.bin 和image.ub文件拷贝到BOOT分区。
- 将ZCU102开发板上的SW6拨码开关进行调整,调整至使用SD卡启动。
- 将开发板与主机连接(串口、网口)
安装zcu102 usb驱动。
连接串口,下图13为串口位置、12为网口连接位置。
- PC与开发板共享网络,在共享网络中选中以太网
选中以太网后,ipv4会自动分配ip
- 配置波特率:115200
通过命令查询开发板端口地址(ifconfig),自动分配为192.168.137.234
- 通过ssh连接,点击ok即可进入。
输入用户名和密码
成功连接
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
- 下载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)
测试2、双输入网络FADnet
- 在以下路径中找到fadnet文件夹,文件夹内容如下
.\Vitis-AI-3.0\examples\vai_library\samples\dpu_task\fadnet
- 将fadnet文件夹拷贝到开发板中
- 在终端输入 sh build.sh
运行完成后,会生成可执行文件,如上图所示。
- 在上述工程路径下,复制以下测试图片,并分别命名为; demo_fadnet_right.png demo_fadnet_left.png
- 下面展示两种模型,其他可参照readme
- 在终端中输入指令 ./demo_fadnet demo_fadnet_left.png demo_fadnet_right.png
即可在工程路径,生成以下 result_fadnet.jpg
- 在终端中输入指令
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搭建以及初步验证工作。
版权归原作者 ETGBAR 所有, 如有侵权,请联系我们删除。