Walker.lau的个人空间 https://blog.eetop.cn/1674693 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

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

热度 7已有 8660 次阅读2019-3-31 22:21 |系统分类:芯片设计| FPGA, SDSoC, FPGA, SDSoC, FPGA, SDSoC, FPGA, SDSoC, FPGA, SDSoC, FPGA, SDSoC, FPGA, SDSoC

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

一、 安装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,所以可以只勾选这一个型号以节省硬盘空间(至少勾选上你所用的开发板的型号)。

在这个步骤的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。关于使用SDSoCdebug工具的详细信息请查阅文档《UG1282






Happy hacking.






1

点赞

刚表态过的朋友 (1 人)

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 1

    关注
  • 4

    粉丝
  • 0

    好友
  • 1

    获赞
  • 1

    评论
  • 225

    访问数

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-18 19:23 , Processed in 0.028563 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部