P4->NetFPGA-SUME 配置(Getting Started Guide)
P4->NetFPGA-SUME 配置(Getting Started Guide)
0.前言
很难受,度过了如履薄冰的实验过程,感谢西电@陈兄(没有地址只能这样了)帮助,克服了一步步的error,把第一个简单实验给跑完了。趁还记得,在这里回顾一下并记录一下,以防下次要操作的时候在遇到同样的错误。
其实只是做一下翻译及操作过程中遇到的问题及解决方案,还是看源链接的内容,有出现类似的情况在参照这边。
1.提前准备工作
-
获取 P4-NetFPGA-live Github 仓库 的权限
在该链接处,提交对应的说明进行申请。(不出意外的话,一般1~2天就能获取权限)
-
获取SDNet的license
(这个也是最想吐槽的地方,等了一个多月还没得到对方的处理,最后通过xxx终于申请到了)
-
操作系统设置及Vivado的安装
系统选择 ubuntu14.04 。系统配置可参照 源链接给出的设置 ,这里笔者也只是安装了设置内部中对应的软件以及禁用了ipv6,以及安装了 Vivado 2016.4 和 Installation of Digilent Adept Tools 。
-
买一块NetFPGA-SUME板卡
-
下载SDNet v2017.3并安装
下载链接 ,安装过程跟上面安装Vivado的步骤可以说是一模一样~
2.实战
2.1 环境依赖安装
sudo apt-get install python-matplotlibsudo apt-get install python-pipsudo 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权限下执行,亲测。
浙公网安备 33010602011771号