sdsoc+linux平台,SDSoC在Ubuntu上的安装配置(附带嵌入式FPGA加速参考资料导航) ......

原创内容,未经允许,不得转载!

一、 安装Ubuntu

(1)Xilinx 官方要求Ubuntu 版本号为 16.04.3。下载地址:戳这里

(2)关于制作启动盘镜像和安装 Ubuntu 的教程链接:b) 安装Ubuntu 系统:注意安装前先清理出一块磁盘,大小要自己衡量,要考虑到留一些空间作为 swap,SDSoC 安装完的大小在 35G 左右,一个工程编译后需要的空间大概在 500M。

(3)注意 swap 分区的大小设置: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,所以可以只勾选这一个型号以节省硬盘空间(至少勾选上你所用的开发板的型号)。

f4a956ab34332ff31584b3a0aeefb480.png

在这个步骤的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 的路径,用它把下面的 替换掉):

source /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)的路径,点进去后按确定:

07ebb643bf3d355529b4d929d3abaef0.png

确定后,列表中出现自定义平台:

7abe99c9c7e382f7c34888c318129186.png

选中该自定义平台(reVISION),点击 next。

设置编译选项

进入 SDSoC 界面后,可以先把 Active Build Configuration 设置为 Release,因为官方说由 Release 配置编译出来的代码经过了优化: SDSoC 顶栏--project--build configuration-set activate--release。

在左下角找到 Assistant 窗口,选中对应项目的 release,右键,选 settings。

在弹出的窗口中点击链接 edit tool settings:

690d42f1337c850592016c0e64f45109.png       在弹出的 properties settings 窗口中,根据图片找到 tool settings 标签页,这里可以对 编译器(SDSCC/SDS++)和链接器进行设置。需要进行以下设置:

(1)分别在 SDSCC Compiler 和 SDS++ Compiler 下,点击 Directories,在右侧的 include paths 中添加下面的路径:

${SYSROOT}/usr/include

留意到,这其中的 SYSROOT 就是之前打开 SDSoC 时在终端配置的环境变量(直接原样粘贴上面的路径就行,不必替换掉 SYSROOT)。

fa7d89842015fabf4e28e60c5b09b45d.png

(2)分别在 SDSCC Compiler 和 SDS++ Compiler 下,点击 Miscellaneous,在右侧的 other flags 中加入一个设置:

-hls-target 1

879b6029d25e729c1b0d360447df8662.png

(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 口,但不用开启实验板。

ba5189e75d093c4bbd59a9324c49f22b.png       一般来说,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 还是很常用的。

54fa93ede9944415227189d85dc6caa9.png

当然,关于 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.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值