原创内容,未经允许,不得转载!
一、 安装Ubuntu
(1)Xilinx 官方要求Ubuntu 版本号为 16.04.3。下载地址:
戳这里(2)关于制作启动盘镜像和安装 Ubuntu 的教程链接:
b)
安装Ubuntu 系统:注意安装前先清理出一块磁盘,大小要自己衡量,要考虑到留一些空间作为 swap,SDSoC 安装完的大小在 35G 左右,一个工程编译后需要的空间大概在 500M。
a) 若新装 Ubuntu,要在安装时保证“实际运存+swap>10GB”,建议两者之和为 12GB 以上(当然,也可以等安装完Ubuntu 后再扩容 swap,而且个人更喜欢这种方法, 因为可以简化Ubuntu 系统的安装流程,教程见下面)。
b) 若已安装Ubuntu,可以用下面链接中的教程增加 swap 空间的大小:
c) 若电脑内存是8G以下,建议安装双系统,这样可以最大化利用实际运存,加快编译速度。
(4)安装Ubuntu 后,在 BIOS 中把电脑的启动模式改为传统模式(默认应该为安全模式),或者先设置为传统模式再安装Ubuntu。
二、 安装 SDSoC 2018.2
SDSoC 2018.2 下载地址:
戳这里 。我下载的是离线安装文件(支持Windows和Linux双版本)。
更详细的安装信息请查看文档《UG1294》。
关于操作系统
其实 SDSoC 是可以安装在 Windows 系统下的,但是安装在 Windows 下的话会不支持包含板载 Linux 系统工程的编译,因此必须装在 Linux 系统下。执行安装文件夹中的 xsetup 即可打开安装向导。
安装向导
需要注意以下几点:
(1)在安装向导中有一步可以选择所采用的实验板型号,由于我们用到的实验板是Ultrascale+ MPSoC ZCU102,所以可以只勾选这一个型号以节省硬盘空间(至少勾选上你所用的开发板的型号)。
在这个步骤的Device选项中可以只勾选Device for Custom Platform——Ultrascale+(注意不要漏了+号而选成了Ultrascale) ——MPSoC
(2)关于数据线的驱动:
我记得在上面的安装向导页面下方还有一句话,说在 Linux 系统安装 SDSoC 的话是不会帮你安装数据线驱动的,详情查看文档《UG973》第 30~31 页讲了这个问题。 所以要自己安装数据线的驱动,以 root 身份运行一个安装脚本就好了(下面的{vivado_install_dir}要根据自己的实际安装目录设置):
{vivado_install_dir}/data/xicom/cable_drivers/lin64/install_script/install_drivers /install_drivers
(3)关于 license:
使用 Xilinx 的开发工具(包括 SDSoC)和一些 IP 核时都需要 license(是一个.lic 文件)。第一次使用 SDSoC 之前需要加载 license。要想获取 license,需要注册一个 Xilinx 的账号, 创建一个 60-days evaluation license 就可以了,详情查看《UG1294》第三章,更详细的教程见《UG973》第五章。
解压 reVISION 平台
平台(platform)是创建 SDSoC 工程时需要选择的一个东西,包括了一些用于创建板载 Linux 系统、第三方库之类的东西。我们采用的是 Xilinx 提供的一个功能很齐全的自定义平 台(reVISION platform,至于怎样下载并发挥这个平台的丰富功能
请戳这里)。
现在要做的只是解压一下这个平台。以ZCU102开发板的reVISION版本为例,先解压 zcu102-rv-ss-2018-2.zip,然后进入 解压后的文件夹,再解压里面 petalinux 文件夹下的 sdk.zip。两次解压之后,把 zcu102-rv-ss-2018-2 文件夹移动到你喜欢的位置。
启动 SDSoC
注意,必须从终端(terminal)打开 SDSoC,不能通过点击图标打开。
打开终端后,配置两行命令:
(1)source 命令用于将 sdx 命令添加到系统的 PATH(注意,SDSoC 安装完后的那个 文件夹里面有一个子文件夹 SDx,SDX_INSTALL_DIR 就是 SDx 的路径,用它把下面的 <SDX_INSTALL_DIR>替换掉):
source <SDX_INSTALL_DIR>/settings64.sh
(2)export 一个环境变量 SYSROOT,这个命令是将你刚才解压得到的 reVISION 平台的路径导出到 Linux 环境变量:
export SYSROOT=/具体的存放路径/zcu102-rv-ss-2018-2/petalinux/sdk/sysroots/aarch64-xilinx-linux
事实上,发现 Ubuntu 的环境变量设置也是很有意思——用 export 命令设置的环境变 量都是临时的,意味着关闭终端后所设置的环境变量就被清除了(参考
这里)。若每次打开 SDSoC 之前都要执行上述两个命令就太麻烦了,下面是简便的方法,可以让你每次打开终 端的时候自动执行上述两条命令:
(1)进入以下目录:
cd /etc/profile.d
(2)在该目录下新建一个文件:
gedit SDSoC_souceNsysroot.sh
(3)在这个文件中添加那两条配置指令,并保存。
这样,你每次打开终端都会自动在后台执行上面的两个配置指令。
配置完启动命令后,就可以在终端中输入 sdx ,回车后就可以打开 SDSoC。
工程配置
这个跟着新建工程的引导窗口走就 ok 了。首先选择 workspace 路径,workspace 相当于一个工作台,一个workspace 可以包含多个项目。在所选的workspace 中创建项目名之类的。
直到平台的选择页面,我们要选 reVISION 平台,点击 Add Custom Platform后,导航到解压之后的 reVISION文件夹(zcu102-rv-ss-2018-2)的路径,点进去后按确定:
确定后,列表中出现自定义平台:
选中该自定义平台(reVISION),点击 next。
设置编译选项
进入 SDSoC 界面后,可以先把 Active Build Configuration 设置为 Release,因为官方说由 Release 配置编译出来的代码经过了优化: SDSoC 顶栏--project--build configuration-set activate--release。
在左下角找到 Assistant 窗口,选中对应项目的 release,右键,选 settings。
在弹出的窗口中点击链接 edit tool settings:
在弹出的 properties settings 窗口中,根据图片找到 tool settings 标签页,这里可以对 编译器(SDSCC/SDS++)和链接器进行设置。需要进行以下设置:
(1)分别在 SDSCC Compiler 和 SDS++ Compiler 下,点击 Directories,在右侧的 include paths 中添加下面的路径:
${SYSROOT}/usr/include
留意到,这其中的 SYSROOT 就是之前打开 SDSoC 时在终端配置的环境变量(直接原样粘贴上面的路径就行,不必替换掉 SYSROOT)。
(2)分别在 SDSCC Compiler 和 SDS++ Compiler 下,点击 Miscellaneous,在右侧的 other flags 中加入一个设置:
-hls-target 1
(3)在 SDS++ Linker(注意不是 SDS++ Compiler)下,点击 Miscellaneous,在右侧的 Linker Flags 中加入一个设置:
--sysroot=${SYSROOT} -Wl,-rpath-link=${SYSROOT}/lib,-rpath-link=${SYSROOT}/usr/lib
(4)按 ok 保存并结束配置。
配置 uart
uart 负责处理电脑和实验板之间的
通信,下板后,可以通过 uart 从电脑发送指令给实验板,同时接收从实验板发回来的程序信息。
首先,把实验板的 uart 端口(13 号口)用 micro USB 线连接到电脑的USB 口,但不用开启实验板。
一般来说,Ubuntu 的 USB 转 uart 端口是/dev/ttyUSB*,且一般是/dev/ttyUSB0,下面 就以/dev/ttyUSB0 为例。
打开终端,输入下面指令,修改/dev/ttyUSB0 的权限为 777:
sudo chmod 777 /dev/ttyUSB0
然后,在 SDSoC 界面,从最下方的窗口中找到 SDK terminal,点击+号,新增一个 uart 连接。在弹出的窗口中,第一个参数在下拉菜单中选择/dev/ttyUSB0(若下拉菜单是灰色的, 就是权限没有修改成功,可以重启电脑再试一次),下面的参数为波特率 115200,data bits=8,stop bits=1,parity 和 flow control 设置为 none。
最后注意一点,对于用 reVISION平台编译出来的板载 Linux 系统,下板启动后,SD 卡 里的东西被挂载在 /media/card 目录下。
三、 FPGA 电路优化
在电路优化方面,Xilinx 官方给的入门教程写得十分完美,信息冗余很少,把整个 SDSoC 开发流程特别是很多细节问题都用例子讲清楚了,建议先仔细看官方教程,下面是链接:
上面这个教程分为了三个部分,其中重点在第一部分。第二部分讲的是创建平台,由于我们可以直接用 reVISION 平台,所以可以跳过。第三部分讲的是 Xilinx 对于 OpenCV 库定 制的一个可以在 FPGA 中跑的 xfOpenCV 库,有兴趣也可以了解,毕竟OpenCV 还是很常用的。
当然,关于 FPGA 电路优化的更详细的东西还是在文档中介绍了,请参考文档《UG1235》。
而文档《UG1235》中蜻蜓点水般地提到了很多pragma,要想知道各种pragma的详细信息,就要查看文档《UG1253》。
由于把 C/C++编译成 FPGA IP 核的工作是在 HLS 中完成的,所以在文档《UG902》中也能找到很多如何编写C/C++代码使其能顺利综合出FPGA电路的提示,包括有哪些C/C++ 语句是不能综合出 FPGA电路的。
最后,回到SDSoC这个工具的使用上,更多信息可以查阅文档《UG1027》和文档《UG1146》。关于使用SDSoC的debug工具的详细信息请查阅文档《UG1282》。
Happy hacking.