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加速基本平台创建的更多相关文章

  1. 关于SecureCRT链接虚拟机和开发板的问题

    SecureCRT链接虚拟机后会出现汉字显示乱码问题,一下是解决方案. 点击options 再点击session options 会出现 选择: 主要改两个地方: normal  和 改完之后就可以顺 ...

  2. 电子医疗设备创新研发应该用i.MX6Q开发板吗?为医疗设备提供解决方案

    伴随医疗信息化.移动化.智能化的不断发展,居民对自身健康的关注度持续加强,全球医疗电子产业近年来持续保持快速增长态势.同时,源于庞大的人口基数以及迅速增长的老龄化人口带来持续增长的医疗服务需求,加之全 ...

  3. 移植BOA服务器到开发板

    移植BOA 服务器到GEC210 开发板 开发平台主机:VMWare--Ubuntu 10.04 LTS开发板:GEC210 / linux-2.6.35.7编译器:arm-linux-gcc-4.5 ...

  4. zedboard开发板上移植opencv代码(立体匹配)

    前言 公司要做立体匹配相关的项目,已有matlab和c++版本,可是不能做到实时显示立体信息,想要硬件实现实时,无奈本渣也是个硬件的新手,先按照实验室lyq同学的思路在zedboard开发板的纯ARM ...

  5. 芯灵思SINA33开发板怎样创建编译环境

    首先在Vmware安装好Centos,在此不再重复步骤,大家可以看以前的帖子有详细的步骤.本节主要介绍如何在Centos 搭建编译环境 Step 1 更新 CentOS 源 CentOS 由于很追求稳 ...

  6. 基于LPCXpresso54608开发板创建Embedded Wizard UI应用程序

    平台集成和构建开发环境:LPCXpresso 54608入门指南 本文主要介绍了创建一个适用于LPCXpresso54608开发板的Embedded Wizard UI应用程序所需的所有必要步骤.请一 ...

  7. 用IMX6开发板创建Android模拟器

    基于迅为IMX6开发板 在 AndroidStudio 中,单击“Tools”->“Android”->“AVD Manager”选项.弹出 如下对话框,点击红色方框中的按钮. 弹出如下所 ...

  8. STM32F407Discovery开发板使用环境搭建

    差不多4年前买了STM32F407Discovery这块开发板,也用它作为我的毕业设计的一部分,今晚整理一下东西,觉得这么不错的东西应该再次利用起来,做个智能家居系统的一部分什么的也不错,于是,记录一 ...

  9. 意法半导体STM32MP157A MPU加持,米尔科技首款ST Linux开发板MYD-YA157C评测

    ST公司去年推出了MPU系列芯片,MPU系列不同于以往产品,它既包含有ARM公司Cortex M 单片机核心,也包含有ARM公司Cortex A 应用处理器核心,以期将STM32单片机产品优势扩展到更 ...

随机推荐

  1. python对csv文件读写的两种方式 和 读写文件编码问题处理

    ''' 如果文件读取数据出错,可以考虑加一个encoding属性,取值可以是:utf-8,gbk,gb18030 或者加一个属性error,取值为ignore,例如 open(path, encodi ...

  2. hdu 1517 Multiplication Game

    题意: 用整数p乘以2到9中的一个数字.斯坦总是从p = 1开始,做乘法,然后奥利乘以这个数,然后斯坦,以此类推.游戏开始前,他们画一个整数1 < n < 4294967295,谁先到达p ...

  3. 树状数组 && 板子

    本文树状数组讲解转载于:https://www.cnblogs.com/xenny/p/9739600.html 本文新加内容为模板代码部分 1.什么是树状数组? 顾名思义,就是用数组来模拟树形结构呗 ...

  4. PowerShell多任务

    代码 foreach ($server in $servers) { $running = @(Get-Job | Where-Object { $_.State -eq 'Running' }) i ...

  5. Databricks 第11篇:Spark SQL 查询(行转列、列转行、Lateral View、排序)

    本文分享在Azure Databricks中如何实现行转列和列转行. 一,行转列 在分组中,把每个分组中的某一列的数据连接在一起: collect_list:把一个分组中的列合成为数组,数据不去重,格 ...

  6. JVM ZeroTLAB 是什么意思呢?

    ZeroTLAB 是 JVM 的一个布尔型 Flag,意思是是否将新创建的 TLAB 内的所有字节归零. 默认:false 举例:-XX:+ZeroTLAB 当分配出来 TLAB 之后,根据 Zero ...

  7. Linux内核4.19.1编译

    linux内核编译 1.1 大致步骤 下载linux内核4.19.1 官网链接: https://www.kernel.org/ 官网下载经常速度太慢,无法下载,提供另一个链接: http://ftp ...

  8. 洛谷p1637 三元上升子序列(树状数组

    题目描述 Erwin最近对一种叫"thair"的东西巨感兴趣... 在含有n个整数的序列a1,a2......an中, 三个数被称作"thair"当且仅当i&l ...

  9. sql 手注 语法

    mysql中的information_schema 结构用来存储数据库系统信息 information_schema 结构中这几个表存储的信息,在注射中可以用到的几个表.  | SCHEMATA ―― ...

  10. Code Book All In One

    Code Book All In One Jupyter Notebook Jupyter Lab https://jupyter.org/ Storybook https://storybook.j ...