AXU2CGB开发板验证Vitis加速基本平台创建
Vitis 加速基本平台创建
1、Vivado 工程创建,硬件平台bd 图如下所示

1.1、双击Block图中ZYNQ核,配置相关参数
1.1.1、Low Speed 配置,在 I/O Configuration 窗口,配置 BANK0~BANK2 电压为 LVCMOS18, BANK3 电压为LVCMOS33。首先配置 Low Speed 管脚, 勾选 QSPI,并设置为”Single”模式, Data Mode为”x4“, 勾选 Feedback Clk

1.1.2、(AXU2CGA 开发板没有 EMMC,不需要勾选此项)勾选 SD 0,配置 eMMC。 选择 MIO13..22,Slot Type 选择 eMMC, Data Transfer Mode 为 8Bit,勾选 Reset,并选择 MIO23。

1.1.3、勾选 SD 1,配置 SD 卡。选择 MIO 46..51, Slot Type 选择 SD 2.0, Data Transfer Mode 选择4Bit,勾选 CD,用于检测 SD 卡插入,选择 MIO45

1.1.4、勾选 I2C 1,用于 EEPROM 等的 I2C,选择 MIO 32..33

1.1.5、勾选串口 UART 1,选择 MIO 42..43

1.1.6、勾选 TTC 0~TTC 3

1.1.7、High Speed 配置,在 I/O Configuration 窗口,配置 BANK0~BANK2 电压为 LVCMOS18, BANK3 电压为LVCMOS33。 首先配置 Low Speed 管脚, 勾选 QSPI,并设置为”Single”模式, Data Mode为”x4“, 勾选 Feedback Clk

1.1.8、勾选 USB 0,选择 MIO 52..63,勾选 USB 3.0,选择 GT Lane1

USB 复位选择 MIO 31

1.1.9、勾选 PCIe

1.1.10、点开 Switch To Advanced Mode,选择 PCIe Configuration,修改以下几个参数,配置为 ROOT模式

1.1.11、回到 I/O Configuration, 选择 GT Lane0, 复位选择 MIO 37; 勾选 Display Port,选择 MIO27..30, Lane Selection 选择 Dual Higher

至此,I/O部分配置完毕。
1.1.12、时钟配置,在 Clock Configuration 界面, Input Clocks 窗口配置参考时钟,其中 PSS_REF_CLOCK 为 ARM的参考时钟默认为 33.333MHz; PCIe 选择 Ref Clk0, 100MHz; Display Port 选择 Ref Clk2,27MHz; USB0 选择 Ref Clk1, 26MHz。

1.1.13、在 Output Clocks 窗口,如果不是 IOPLL,改成 IOPLL,保持一致,用同样的 PLL

1.1.14、PL 的时钟保持默认,这是给 PL 端逻辑提供的时钟。

1.1.15、Full Power 部分,其他保持默认,将 DP_VIDEO 改为 VPLL, DP_AUDIO 和 DP_STC 改为RPLL。

最下面的Interconnect修改如下

其他部分保持默认,至此,时钟部分配置完成。
1.1.16、DDR 配置,在 DDR Configuration 窗口中, Load DDR Presets 选择”DDR4_MICRON_MT40A256M16GE_083E”

AXU2CGB 开发板配置如下:

其他保持默认,点击OK,配置完成。
至此,ZYNQ核的相关配置全部完成。
1.2、BD设计中添加Clocking Wizard IP核,为了后面定义平台的使用,必须将Clocking Wizard IP核的时钟输出配置为两个以上,本BD设计配置5路时钟输出。
1.3、定义平台(PFM) 接口和属性。 在此定义 Vitis 使用的接口。单击 Vivado 菜单的 Window→Plateform Interface,迚行平台的设定。单击 Enable platform Interfaces 可设置平台。

1.3.1、更改 board 的名字,以便在 Vitis 平台上更容易理解。选择了 Platform,将下面的 Board 变更为 axu4ev


1.3.2、定义可用的接口和端口。各端口用鼠标右键单击,菜单就会出来。双击也可以切换 Enable、Disenable。在 xynq_ultra_ps_e_0 中,将下一个接口、端口设为 Enable。(除此以外是 Dienable)M AXI HPM0 FPD、 M AXI HPM1 FPD、 M AXI HPM0 LPD、 S AXI HPC0 FPD、 S AXI HPC1 FPD、 S AXIHP0 FPD、 S AXI HP1 FPD、 S AXI HP2 FPD、 S AXI HP3 FPD;对于 clk wiz 0 全部用 Enable;对于xlconcet 0,将 In 0~ In 7 设为 Enable。

1.3.3、时钟默认值。必须把某个时钟设为默认值。选择 clk out1 后,单击 Plaatform InterfaceProperties 中的 Options 标签,选择 is default。另外,把 id 必须设为 0。可以在 Vitis 中使用的默认时钟。其他时钟依次从 1 开始排列,输入完序号后按回车键确认。
1.4、然后编译生成bit文件
1.5、XRT 环境设置, 在 Tcl 控制台上输入以下命令。因为 Tcl 控制台一行一行输入下列命令。
set_property platform.design_intent.embedded true [current_project]
set_property platform.design_intent.server_managed false [current_project]
set_property platform.design_intent.external_host false [current_project]
set_property platform.design_intent.datacenter false [current_project]
set_property platform.default_output_type "sd_card" [current_project]
1.6、导出 xsa 文件,选择“Expandable”,这样可以用 vitis 做加速。

1.6.1、Platform state 选择“Pre-synthesis”,再选择“Include bitstream”

1.6.2、平台属性按下图填写

1.6.3、xsa 文件名默认,保存路径默认即可。
2、Petalinux工程
2.1、在用户目录下,创建一个工作目录,路径中“~”表示用户 home 路径,等效于/home/alinx2020
mkdir-p~/peta_prj/linxPsBase/hardware
2.2、将 vivado 导出 xsa 文件拷贝迚 hardware 文件夹下

2.3、进入工程目录
cd~/peta_prj/linxPsBase/
2.4、设置 petalinux 环境变量,运行下面命令,环境变量叧在当前终端中有效,所以后面和petalinux 相关的命令都要在当前终端中输入,关闭后需要重新运行,opt/pkg是用户自定义的petalinux安装路径。
source /opt/pkg/petalinux/settings.sh
2.5、创建 petalinux 工程, 名称为“petalinux”, 类型为“project”, 使用 zynqMP 模板
petalinux-create
-t project -n petalinux --template zynqMP
2.6、使用下面的命令进入 petalinux目录
cd~/peta_prj/linxPsBase/petalinux
2.7、配置 Petalinux 工程的硬件信息,硬件信息目录里叧能有一个
xsa 文件
petalinux-config
--get-hw-description ../hardware/
2.8、弹出工程配置项界面,如下图, 在“Auto Config Settings”选项中勾选“Device tree autoconfig”、“kernel autoconfig”“u-boot autoconfig”, 然后“Save”、接着“Exit”

2.9、等待配置完成

2.10、再一次运行如下命令,进行petalinux配置
petalinux-config
--get-hw-description ../hardware/
弹出的界面里菜单选项Image Packaging Configuration ->Root filesystem type 选择 EXT (SD/eMMC/QSPI/SATA/USB)

根文件系统路径选择至关重要,如果填错无法启动
Linux, mmcblk 代表 sd 卡和 emmc,mmcblk0p2 代表第一个 mmc 设备第二分区,
如果 emmc
和 sd 卡同时存在, 则 sd 为 mmcblk1,所以这里填写/dev/mmcblk1p2

2.11、修改./project-spec/meta-user/conf/user-rootfsconfig
文件如下
#Note:
Mention Each package in individual line
#These packages will get added into rootfs menu entry
CONFIG_gpio-demo
CONFIG_peekpoke
CONFIG_xrt
CONFIG_xrt-dev
CONFIG_zocl
CONFIG_opencl-clhpp-dev
CONFIG_opencl-headers-dev
CONFIG_packagegroup-petalinux-opencv
2.12、修改设备树文件./project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
/include/
"system-conf.dtsi"
/ {
};
/* SD */
&sdhci1 {
disable-wp;
no-1-8-v;
};
/* USB */
&dwc3_0 {
status = "okay";
dr_mode = "host";
};
&amba {
zyxclmm_drm {
compatible =
"xlnx,zocl";
status = "okay";
};
};
2.13、配置根文件系统
petalinux-config
-c rootfs
弹出界面中user packages 全部勾选

2.14、配置内核
petalinux-config
-c kernel
弹出界面中Library routines → Size in Mega Bytes 修改为
1024

2.15、编译petalinux工程
petalinux-build
注:此过程需要连接网络。因需要从github下载源代码。
2.16、构建SDK
petalinux-build
–sdk
编译完成后会在petalinux镜像文件夹中自动生成sdk.sh文件,运行该文件,安装SDK环境。记住安装路径,后面Vitis平台配置需要关联次路径。
2.17、新建一个pfm文件夹用于后面构建Vitis平台
mkdir pfm
2.18、在pfm文件夹下建立boot文件夹,然后把petalinux生成的image.ub zynqmp_fsbl.elf pmufw.elf
bl31.elf u-boot.elf 复制到boot文件夹
2.19、在boot文件夹建立linux.bif文件,内容如下, 路径需要自行修改
注:.bif 文件创建,使用命令touch name.txt 在使用命令gedit name.bif
/* linux */
the_ROM_image:
{
[fsbl_config] a53_x64
[bootloader] /home/john/peta_prj/linxPsBase/petalinux/pfm/boot/zynqmp_fsbl.elf
[pmufw_image] /home/john/peta_prj/linxPsBase/petalinux/pfm/boot/pmufw.elf
[destination_device=pl] <bitstream>
[destination_cpu=a53-0, exception_level=el-3, trustzone] /home/john/peta_prj/linxPsBase/petalinux/pfm/boot/bl31.elf
[destination_cpu=a53-0, exception_level=el-2] /home/john/peta_prj/linxPsBase/petalinux/pfm/boot/u-boot.elf
}
至此,petalinux工程全部配置完毕。
3、创建Vitis平台
3.1、进入 pfm 文件夹, 启动 vitis 软件
cd ./pfm
运行Vitis2020.1环境 路径自行修改
source /tools/Xilinx/Vitis/2020.1/setting64.sh
打开Vitis工具图形界面
vitis
-workspace wksp1
3.2、Vitis 启动后,选择 Create Platform Project。(或从菜单中选择
File→New→Platform
Project也可以), Project name 填写 axu4ev_base

3.3、接下来选择从哪里开始制作平台。因为从 XSA 制作,所以选择 Create from hardware specification(XSA),然后按 Next

3.4、指定用 Vivado 创建的 xsa
文件, Operatings system 是 Linux,
Processor 选择 psu_cortexa53。有一个标志是红色的,没关系。设定后,按 Finish。

3.5、窗口中有 linux 和 zynqmp fsbl 和 zynqmp pmufw,对于 linux,后面还需要设定。

3.6、linux on
psu_cortexa53 里面指定 bif 文件, Boot ComponentDirectory 和 Linux image Directory都指定为上面建立的
boot 目录,
LinuxRootfs指定petalinux生成的镜像文件rootfs.cpio.gz,Sysroot 可以暂时不指定, 如果要指定, 可以选择安装后的petalinux
sdk sysroots/aarch64-xilinx-linux 文件夹。 点击右上方锤子
开始编译,等待编译完成。

4、测试Vitis加速
4.1、从 Vitis 菜单中选择 File→New→Application Project。输入项目名称
hello_world,单击 Next

4.2、平台选择刚刚建立的 axu4ev_base

4.3、文件系统选择 petalinux sdk 安装后的文件系统, 点击 Next

4.4、模板就选择 Hello world, 其他模板可能丌能正常加速, 需要修改。

4.5、在锤子下拉菜单中选择 Hardware, 就在要生成在板子上运行的文件,
然后点击锤子编译,时间比较久, 要求虚拟机内存 16G 以上, 否则会出现没有原因的错误。

4.6、编译完成后把 sd_card 文件夹下文件全部复制到 sd 卡第一分区, 同时还需要把petalinux编译生成的镜像文件boot.src文件拷贝到SD卡第一分区,否则板卡启动会卡在某处无法启动,如果没有分区,请参考《SD卡根文件系统制作》

4.7、SD卡第二分区先初除所以内容,再复制 petalinux
生成的根文件系统,路径替换为自己的路径
sudo
tar xzvf /peta_prj/linuxPsBase/petalinux/images/linux/rootfs.tar.gz
-C /media/john/EXT
4.8、SD 卡插到AXUCGB板子上, 串口终端登录系统, 运行测试程序 export XILINX_XRT=/usr 是必须运行的
cd
/media/sd-mmcblk1p1
export XILINX_XRT=/usr
./hello_world vadd.xclbin
串口打印信息会出现“test passed”信息字样。
AXU2CGB开发板验证Vitis加速基本平台创建的更多相关文章
- 关于SecureCRT链接虚拟机和开发板的问题
SecureCRT链接虚拟机后会出现汉字显示乱码问题,一下是解决方案. 点击options 再点击session options 会出现 选择: 主要改两个地方: normal 和 改完之后就可以顺 ...
- 电子医疗设备创新研发应该用i.MX6Q开发板吗?为医疗设备提供解决方案
伴随医疗信息化.移动化.智能化的不断发展,居民对自身健康的关注度持续加强,全球医疗电子产业近年来持续保持快速增长态势.同时,源于庞大的人口基数以及迅速增长的老龄化人口带来持续增长的医疗服务需求,加之全 ...
- 移植BOA服务器到开发板
移植BOA 服务器到GEC210 开发板 开发平台主机:VMWare--Ubuntu 10.04 LTS开发板:GEC210 / linux-2.6.35.7编译器:arm-linux-gcc-4.5 ...
- zedboard开发板上移植opencv代码(立体匹配)
前言 公司要做立体匹配相关的项目,已有matlab和c++版本,可是不能做到实时显示立体信息,想要硬件实现实时,无奈本渣也是个硬件的新手,先按照实验室lyq同学的思路在zedboard开发板的纯ARM ...
- 芯灵思SINA33开发板怎样创建编译环境
首先在Vmware安装好Centos,在此不再重复步骤,大家可以看以前的帖子有详细的步骤.本节主要介绍如何在Centos 搭建编译环境 Step 1 更新 CentOS 源 CentOS 由于很追求稳 ...
- 基于LPCXpresso54608开发板创建Embedded Wizard UI应用程序
平台集成和构建开发环境:LPCXpresso 54608入门指南 本文主要介绍了创建一个适用于LPCXpresso54608开发板的Embedded Wizard UI应用程序所需的所有必要步骤.请一 ...
- 用IMX6开发板创建Android模拟器
基于迅为IMX6开发板 在 AndroidStudio 中,单击“Tools”->“Android”->“AVD Manager”选项.弹出 如下对话框,点击红色方框中的按钮. 弹出如下所 ...
- STM32F407Discovery开发板使用环境搭建
差不多4年前买了STM32F407Discovery这块开发板,也用它作为我的毕业设计的一部分,今晚整理一下东西,觉得这么不错的东西应该再次利用起来,做个智能家居系统的一部分什么的也不错,于是,记录一 ...
- 意法半导体STM32MP157A MPU加持,米尔科技首款ST Linux开发板MYD-YA157C评测
ST公司去年推出了MPU系列芯片,MPU系列不同于以往产品,它既包含有ARM公司Cortex M 单片机核心,也包含有ARM公司Cortex A 应用处理器核心,以期将STM32单片机产品优势扩展到更 ...
随机推荐
- Codeforces Round #652 (Div. 2) B. AccurateLee(字符串)
题目链接:https://codeforces.com/contest/1369/problem/B 题意 给出一个长 $n$ 的 二进制串,每次可以选择字符串中的一个 $10$,然后删除其中的一个字 ...
- 「LYOI2018 Summer」Hzy's Rabbit Candy----拓扑排序问题
「LYOI2018 Summer」Hzy's Rabbit Candy 题目描述 Hzy 和她的 m 只兔兔在一个 n 个点 m 条边的有向无环图上玩. 为了让兔兔们开心,Hzy 带了一些糖.Hzy ...
- Codeforces Round #570 (Div. 3) G. Candy Box (hard version) (贪心,优先队列)
题意:你有\(n\)个礼物,礼物有自己的种类,你想将它们按种类打包送人,但是打包的礼物数量必须不同(数量,与种类无关),同时,有些礼物你想自己留着,\(0\)表示你不想送人,问你在送出的礼物数量最大的 ...
- hdu4217 Data Structure?
Problem Description Data structure is one of the basic skills for Computer Science students, which i ...
- Java 窗口 小马时钟
写在前面: eclipse爽到 好多都是抄的,记不住原网址了 摸爆了 搞了一个无边框JFrame,给JFrame加入鼠标监听器实现了拖动 搞了按钮,可以关闭.最小化.始终显示在前.静音 icon是抄( ...
- 8.PowerShell DSC之Push
前言 LCM的默认mode就是push,所以对于push模式,我们直接就三步走 以下是示例: 1.编写配置 Authoring Configuration WebsiteTest { # Import ...
- 从网络I/O模型到Netty,先深入了解下I/O多路复用
微信搜索[阿丸笔记],关注Java/MySQL/中间件各系列原创实战笔记,干货满满. 本文是Netty系列第3篇 上一篇文章我们了解了Unix标准的5种网络I/O模型,知道了它们的核心区别与各自的优缺 ...
- 计算机网络 part2
一.UDP协议 1.概述 UDP提供不可靠的服务,无连接(不存在建立连接的时延),首部开销相对TCP小,没有拥塞控制,提供最大努力交付,面向报文(无论多长的报文UDP也只加一个头部就往下发:TCP面向 ...
- HDU 4049 Tourism Planning(状压DP)题解
题意:m个城市,n个人,让这n个人按固定顺序走遍m个城市.每个城市有一个单人票价pi.每个人在每个城市能获得vij的价值.如果多个人在同一城市,那么会额外获得价值,给出一张n * n价值表,额外价值为 ...
- mimikatz+procdump 提取 Windows 明文密码
0x00 原理 获取到内存文件 lsass.exe 进程 (它用于本地安全和登陆策略) 中存储的明文登录密码. 0x01 操作 Windows10/2012 以下的版本:1.上传 procdump 执 ...