P4->NetFPGA-SUME 配置(Getting Started Guide)

P4->NetFPGA-SUME 配置(Getting Started Guide)

0.前言

很难受,度过了如履薄冰的实验过程,感谢西电@陈兄(没有地址只能这样了)帮助,克服了一步步的error,把第一个简单实验给跑完了。趁还记得,在这里回顾一下并记录一下,以防下次要操作的时候在遇到同样的错误。

源链接:Getting Started Guide

其实只是做一下翻译及操作过程中遇到的问题及解决方案,还是看源链接的内容,有出现类似的情况在参照这边。

1.提前准备工作

  • 获取 P4-NetFPGA-live Github 仓库 的权限

    在该链接处,提交对应的说明进行申请。(不出意外的话,一般1~2天就能获取权限)

  • 获取SDNet的license

    (这个也是最想吐槽的地方,等了一个多月还没得到对方的处理,最后通过xxx终于申请到了)

  • 操作系统设置及Vivado的安装

    系统选择 ubuntu14.04 。系统配置可参照 源链接给出的设置 ,这里笔者也只是安装了设置内部中对应的软件以及禁用了ipv6,以及安装了 Vivado 2016.4Installation of Digilent Adept Tools

  • 买一块NetFPGA-SUME板卡

  • 下载SDNet v2017.3并安装

    下载链接 ,安装过程跟上面安装Vivado的步骤可以说是一模一样~

2.实战

2.1 环境依赖安装

  • sudo apt-get install python-matplotlib
  • sudo apt-get install python-pip
  • sudo pip install ascii_graph

2.2 把 P4->NetFPGA 仓库clone下来

笔者这里是放在 ~/projects 目录下:

$ git clone https://github.com/NetFPGA/P4-NetFPGA-live.git

注意(源链接推荐我们用以下方式切到对应版本,切记一定不要执行,笔者亲自尝试,发现切过去后,很多Makefile文件发生了改变):

$ git pull --tags
$ git checkout v1.1.0

2.3 编辑P4->NetFPGA仓库对应的环境变量

1)将SUME_FOLDER路径修改为 P4->NetFPGA对应的路径

2)将P4_PROJECT_NAME修改为你要编译的P4程序

这里贴下我的

export P4_PROJECT_NAME=switch_calc 
export NF_PROJECT_NAME=simple_sume_switch
export SUME_FOLDER=${HOME}/projects/P4-NetFPGA-live
export SUME_SDNET=${SUME_FOLDER}/contrib-projects/sume-sdnet-switch
export P4_PROJECT_DIR=${SUME_SDNET}/projects/${P4_PROJECT_NAME}
export LD_LIBRARY_PATH=${SUME_SDNET}/sw/sume:${LD_LIBRARY_PATH}
export PROJECTS=${SUME_FOLDER}/projects
export DEV_PROJECTS=${SUME_FOLDER}/contrib-projects
export IP_FOLDER=${SUME_FOLDER}/lib/hw/std/cores
export CONTRIB_IP_FOLDER=${SUME_FOLDER}/lib/hw/contrib/cores
export CONSTRAINTS=${SUME_FOLDER}/lib/hw/std/constraints
export XILINX_IP_FOLDER=${SUME_FOLDER}/lib/hw/xilinx/cores
export NF_DESIGN_DIR=${P4_PROJECT_DIR}/${NF_PROJECT_NAME}
export NF_WORK_DIR=/tmp/${USER}
export PYTHONPATH=.:${SUME_SDNET}/bin:${SUME_FOLDER}/tools/scripts/:${NF_DESIGN_DIR}/lib/Python:${SUME_FOLDER}/tools/scripts/NFTest
export DRIVER_NAME=sume_riffa_v1_0_0
export DRIVER_FOLDER=${SUME_FOLDER}/lib/sw/std/driver/${DRIVER_NAME}
export APPS_FOLDER=${SUME_FOLDER}/lib/sw/std/apps/${DRIVER_NAME}
export HWTESTLIB_FOLDER=${SUME_FOLDER}/lib/sw/std/hwtestlib

2.4 全局环境标量设置

~/.bashrc里补充以下内容(以下是我个人的):

##### Vivado #####
source /opt/Xilinx/Vivado/2016.4/settings64.sh

#### P4-NetFPGA #####
source ~/projects/P4-NetFPGA-live/tools/settings.sh

#### SDNet ####
export PATH=/opt/Xilinx/SDNet/2017.1/bin:$PATH
source /opt/Xilinx/SDNet/2017.3/settings64.sh

# point to Vivado license file and SDNet license file
export XILINXD_LICENSE_FILE=2100@localhost

编辑好后,执行source ~/.bashrc

Tips:大家可能对export XILINXD_LICENSE_FILE=2100@localhost这里有疑惑,因为我们申请到的SDNet的license是Float类型的,所以记得查看源链接最下面Tips,这里面还是有点坑,多亏@陈兄帮忙,详情可以移步另一篇博文——关于SDNet Float License的导入

好处:避免每次打开一个新的终端都要重复执行以下命令,索引环境变量。

2.3 构建SUME硬件库内核和一些供软件使用的寄存器

$ cd $SUME_FOLDER/lib/hw/xilinx/cores/tcam_v1_1_0/ && make update && make

$ cd $SUME_FOLDER/lib/hw/xilinx/cores/cam_v1_1_0/ && make update && make

$ cd $SUME_SDNET/sw/sume && make

$ cd $SUME_FOLDER && make

这一步还是比较顺利(没有报error)

2.4 构建并加载SUME驱动程序

$ cd $DRIVER_FOLDER
//切换为root用户
$ sudo su
//然后在执行以下
[root@nf-test109 sume_riffa_v1_0_0]# make all
[root@nf-test109 sume_riffa_v1_0_0]# make install
[root@nf-test109 sume_riffa_v1_0_0]# modprobe sume_riffa
[root@nf-test109 sume_riffa_v1_0_0]# lsmod | grep sume_riffa

遇到错误的就是在make install有权限问题,但是也要保证make all也必须在root权限下执行,亲测。

posted @ 2017-11-23 19:31  考拉小无  阅读(2242)  评论(3)    收藏  举报