PCIE XDMA驱动调试常见问题
一、无法查到Xilinx xmda 设备
在Linux系统中,通过lspci
命令进行查询PCI设备时,只能查看到当前设备是memory controller
而不是series contrell
说明下载的例程不对,需按照所给例程设计IP核才能使得XDMA可被正常识别到.
二、Linux系统中XDMA驱动的安装
1.出现源代码有错误
说明当前Linux系统的版本与XDMA驱动所要求的版本不相符合.根据要求下载相对应的版本.
XDMA驱动要求的环境:
- 系统架构: x86_64 Linux
- 内核: 3.10+
- RHEL/CentOS: 7.6, 7.7, 7.8, 7.9,8.1, 8.2
Ubuntu: 16.04.5 LTS, 16.04.6 LTS 18.04.1 LTS, 18.04.2 LTS, 18.04.4LTS3, 18.04.5 LTS 20.04 LTS, 20.04.1 LT
以下是在20.04.1上进行的测试.镜像下载
2.相应命令未安装
如果出现sudo:make not found
则需要安装make,使用命令sudo apt-get install make
.
如果出现sudo :gcc not found
则需要安装gcc ,使用命令sudo apt-get install gcc
.
SSL error:02001002:system library:fopen:No such file or directory: …/crypto/bio/bss_file.c:69
SSL error:2006D080:BIO routines:BIO_new_file:no such file: …/crypto/bio/bss_file.c:76
若出现上述两个错误可忽略.
3.未能发现XDMA设备
如果在终端输入sudo ./load_drive.sh
.出现Error: The Kernel module installed correctly, but no devices were recognized.说明你的设备未被识别到. 首先使用命令
lspci`查看系统能否先检测到你的设备.
`qqqq@ubuntu:~/Downloads/dma_ip_drivers-master/XDMA/linux-kernel/tests$ lspci
00:17.1 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.2 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.3 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.4 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.5 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.6 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.7 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.0 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.1 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.2 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.3 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.4 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.5 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.6 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.7 PCI bridge: VMware PCI Express Root Port (rev 01)
02:00.0 USB controller: VMware USB1.1 UHCI Controller
02:01.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
若能查询到设备,则继续查看你的设备的详细信息,使用命令查看你的设备的详细信息lspci -s 02:01.0 -v
,此处我查询的是我列表中最后一个设备的详细.在进行查询时换成你的目标设备即可.
qqqq@ubuntu:~/Downloads/dma_ip_drivers-master/XDMA/linux-kernel/tests$ lspci -s 02:01.0 -v
02:01.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
DeviceName: Ethernet0
Subsystem: VMware PRO/1000 MT Single Port Adapter
Physical Slot: 33
Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 19
Memory at fd5c0000 (64-bit, non-prefetchable) [size=128K]
Memory at fdff0000 (64-bit, non-prefetchable) [size=64K]
I/O ports at 2000 [size=64]
Expansion ROM at fd500000 [virtual] [disabled] [size=64K]
Capabilities:
Kernel driver in use: e1000
Kernel modules: e1000
看你的设备名字是不是series controller
,kernel driver
对应的位置是不是 xdma
,若不是则按照前文一中步骤重新设计IP核.
如果你的设备名字是memory controller
,说明板卡中下载的不是XDMA的运行程序或者没有正常启动。如果你的参考时钟设计不是100MHZ,可能会出现程序下载后,板卡不能正常启动XDMA的情况。第一次测试XDMA程序时最好按照前文一中步骤重新设计IP核.