pcie 之Riffa

时间:2024-05-30 18:27:15

在调试过程中,首先要在Linux系统下安装PCIE驱动,编译代码。驱动安装和代码编译指令见下图。

pcie 之Riffa

图 riffa 驱动安装

pcie 之Riffa 

图 riffa 代码编译

)打开终端,进入riffa  驱动所在路径

   cd(空格)(riffa路径拖入 xx\riffa_2.2.2\source\driver\linux)

2)安装内核头文件

    $ sudo make setup 

这将尝试使用系统的包管理器安装内核头文件。你如果已经安装了内核头文件,可以跳过此步骤。如果内核头文件安装失败,请联网重试。如果最后提示不需要任何操作,说明内核头文件已经安装成功。

3)编译驱动和C++ 库

  $ make

or

$ make debug

4)安装驱动和库

  $ sudo make install

5 ) 替换源码中头文件

找到C/C++ 源代码路径(xx\riffa_2.2.2\source\c_c++\linux\x64\sample_app),把驱动安装时生成的 riffa.h(原本驱动的文件夹下面就有,但是在驱动安装过程中被更新、覆盖)复制到源代码路径下。并确认代码中是否包含改头文件(默认代码里是包含的)

6)建立链接库

   用- lriffa 来连接riffa库,运行指令:

$ gcc -g -c -lriffa -o test.o test.c

7)编译

  $ make 生成输出文件

  $ make clean  删除输出文件

8)验证驱动是否安装成功

   a ) 电脑关机

   b ) 插入板卡到PC的PCIE卡槽,上紧螺丝

   c ) 板卡上电,下载带有PCIE的FPGA代码

   d ) 电脑开机

   c ) 输入查询命令 lspci

命令lspci可以识别PC上所有的PCI外设,如果下面列表中没有Xilinx corporation Device说明驱动安装失败。下图中的7024是FPGA端配置IP核时候的设备ID号,根据设置不同会有差异。

 pcie 之Riffa

 

9)查看PCIE 设备信息

输入命令 ./ testutil 0 可查看外设的消息:外挂器件个数、ID号、开通的通道个数、名字、版本号和PCIE 的ID 号。

 pcie 之Riffa

10)代码调试

 

 ./ testutil 2 0 0 5000000

其中第一个参数是模式选择,2表示把收发数据个数打印出来 ;第二个参数对应外设的ID 号(上图中的id : 0);第三个参数表示当前数据传输在那个通道上,0 表示通道1 ,1表示通道2;第四个参数5000000表示本次发送数据大小,单位byte.

11) 硬件接口

在硬件方面,用户通过独立的发送和接收信号来访问接口。 信号提供事务握手,通过FIFO接口读取/写入数据,不需要了解总线地址,缓冲区大小或者PCIE数据包格式。只需在FIFO接口上发送数据并在FIFO接口上接收数据。 RIFFA不依赖于PCIE桥,因此不受网桥实现的限制。 相反,RIFFA直接使用PCIE端点,可以运行得足够快,从而使PCIE链路饱和。

PFGA的PCIE同样也使用riffa架构,FPGA不用去解析PCIE协议,只需要控制好对应fifo接口的数据即可。

pcie 之Riffa