1、淘了个卡,linux环境下xdma的验证测试
最近淘了批板子,特别适合用来学习PCIE和GTY,本文主要记录下基于该网卡的xdma的调试。主要包括
1、IP核的例化
2、驱动的编译
3、lspci的使用
4、测试样例的使用
芯片是ku3P,支持PCIE3.0和10g/25给的光通信
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个终端。
驱动程序的介绍
驱动程序从xilinx的git上可以获取,名字为“dma_ip_drivers”。里面还包括QDMA、XVSEC,咱们进入XDMA目录操作即可。
在“/XDMA/linux-kernel”目录下有一个readme.txt文件,介绍了文件结构、操作流程、兼容性等。
如下是目录结构,
驱动程序的编译
首先需要在xdma目录下编译驱动程序,如下是xilinx提供的使用方法,我们就按这个来
第一步、驱动程序编译
注意加sudo权限
编译过程不一定这么顺利,尤其是新系统,得看装没装GCC、make软件,如果linux内核版本为6.5的话还得根据如下分支改一下代码,改动倒是不大
第二步、编译测试工具
如下图,可见报了一堆红色的错误,没事,不用管
第三步、加载内核驱动
如下就是生成的设备。其实要想搞懂xdma进而从全局上掌握xdma,就需要搞懂这些内容是如何生成的,如何陷入内核实现具体功能的,进而从主设备的角度更好的理解PCIE整体架构。
如下是XDMA的测试例子和截图
1、lspci 查设备
2、执行测试
3、FPGA抓到的
4、光口检测
5、扫眼
快来扫描下方二维码关注公众号,领取站内所有相关资料,所有哦~
有建议、有需求、有疑问、联系我