1、淘了个卡,linux环境下xdma的验证测试




    最近淘了批板子,特别适合用来学习PCIE和GTY,本文主要记录下基于该网卡的xdma的调试。主要包括

    1、IP核的例化

    2、驱动的编译

    3、lspci的使用

    4、测试样例的使用


    芯片是ku3P,支持PCIE3.0和10g/25给的光通信



01

FPGA环境搭建


    FPGA需要做的有四步:


    1、是例化一个XDMA IP核


    2、基于这个IP核导出官方提供的例子


    3、添加点ila方便观察


    4、改下约束,然后编译


    本文主要记录下例化的IP核配置,我觉得对于想学习PCIE的朋友来说,这不是一个好例子,因为XDMA封装的太好,没有一点PCIE的影子,驱动侧太过复杂,对于做FPGA的朋友来说,太难,而且有太多非PCIE相关的知识点。所以还是得用PCIE核来学习。




1、基本的配置信息


    xdma支持Bridge、dma两种模式,Bridge与PCIE的switch没啥关系,本质还是一个EP,都是实现PCIE与AXI接口间的数据搬运。


    XDMA可以是AXI接口(memory map),也可以是AXI-Stream接口,我这里选择的AXI-Stream,不同的选择对应软件测试也有所不同。



2、ID

这一页默认即可,尤其是ID,驱动识别设备需要这个信息,如果改的不在列表里,会无法识别。



3、bar


原本EP有6个bar空间,这里xilinx给分为了三组,每组各一个。


pcie axi lite即读写bar寄存器

中间的就是用于DMA功能

DMA bypass的接口固定为AXI接口


4、MSI和DMA


这部分是设置中断和DMA通道个数,我都设置为2,XDMA支持4个sg-DMA和16个终端。


02

驱动程序的介绍


驱动程序从xilinx的git上可以获取,名字为“dma_ip_drivers”。里面还包括QDMA、XVSEC,咱们进入XDMA目录操作即可。


在“/XDMA/linux-kernel”目录下有一个readme.txt文件,介绍了文件结构、操作流程、兼容性等。

    如下是目录结构,



03

驱动程序的编译

首先需要在xdma目录下编译驱动程序,如下是xilinx提供的使用方法,我们就按这个来


第一步、驱动程序编译


    注意加sudo权限

    编译过程不一定这么顺利,尤其是新系统,得看装没装GCC、make软件,如果linux内核版本为6.5的话还得根据如下分支改一下代码,改动倒是不大


第二步、编译测试工具


如下图,可见报了一堆红色的错误,没事,不用管


第三步、加载内核驱动



    如下就是生成的设备。其实要想搞懂xdma进而从全局上掌握xdma,就需要搞懂这些内容是如何生成的,如何陷入内核实现具体功能的,进而从主设备的角度更好的理解PCIE整体架构。


如下是XDMA的测试例子和截图


1、lspci 查设备


2、执行测试



3、FPGA抓到的



4、光口检测




5、扫眼










快来扫描下方二维码关注公众号,领取站内所有相关资料,所有哦~

有建议、有需求、有疑问、联系我

<