XDMA linux平台调试过程记录

本文详细介绍了PCIe基础知识,包括数据链路与拓扑结构,重点讲解了Xilinx PCIe IP核的配置,如数据宽度、链路速度的选择。此外,文章还探讨了如何使用Xilinx XDMA IP核的示例工程,分析了配置流程、仿真过程和DMA数据传输。在Linux环境下,文章阐述了驱动安装、设备节点、中断配置以及性能测试的方法,并提供了内存读写的测试步骤和时序分析。

PCIe学习笔记系列:

  1. PCIe基础知识及Xilinx相关IP核介绍
    概念了解:简单学习PCIe的数据链路与拓扑结构,另外看看有什么相关的IP核。
  2. 【PG054】7 Series Integrated Block for PCI Express IP核的学习
    基础学习:关于Pcie IP核的数据手册,学习PCIe相关的IP核的配置参数及其对应的含义。
  3. Xilinx PCIe IP核示例工程代码分析与仿真
    基础学习:关于PCIe IP核的仿真,学习PCIe的配置流程以及应用过程。
  4. Xilinx XDMA 例程代码分析与仿真结果
    应用学习:关于Xilinx PCIe DMA IP核的仿真,学习 PCIe DMA 的配置过程以及具体的数据传输流程。
  5. XDMA linux平台调试过程记录
    应用学习:关于XDMA的实际调试过程,可在此基础上定制自己的需求。


Xilinx XDMA 例程代码分析与仿真结果分析了对XDMA IP核的读写过程,现在进行实际测试。

1 需要的资料

以调通为目的,需要的准备有:

  1. 65444 - Xilinx PCI Express DMA Drivers and Software Guide
    Xilinx官网的一个问答,以前叫Answer65444,最近几天网页好像重新排版,统一只有数字代号了。
    其中包含Linux和Windows平台下面的XDMA驱动。

    • Linux平台驱动
    • Windows平台驱动
      我是在Linux下面进行调试的,Windows也试过了,但是驱动时好时坏,本来工程也是linux平台就暂时不测Windows平台了。
  2. 驱动中描述的硬件环境
    官方描述支持的环境:

    • 系统架构: 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.4 LTS3, 18.04.5 LTS 20.04 LTS, 20.04.1 LT

实测基于ubuntu18.04.4的 国产优化过的操作系统 ubuntukylin-18.04.4-enhanced-amd64 也都是支持的。

2 打开示例工程

2.1 IP核的配置

简单描述一下我的配置:

page1:Basic

在这里插入图片描述

lane width,硬件决定
line speed、AXI DATA WIDTH与AXI Clock Frequency是有制约关系的,这个很好理解,在一定的链路速率下,数据位宽越大,数据对应的时钟就越慢。实际应用再满足链路速率的条件下,选择较小的时钟以满足时序收敛。

下面关于勾选的的全取消,满足功能的前提下越简单越好。

page2:PCIe ID
在这里插入图片描述

如果要使用Xilinx提供的驱动,供应商ID(Vender ID)不可以改,因为驱动与XIlinx供应商(0x10ee)对应。
Device ID可以改。
其余默认。

【20220117补充】:关于Device ID有效值的问题,可以在“dma_ip_drivers-master\XDMA\linux-kernel\readme.txt”文件中找到答案。
“dma_ip_drivers-master\dma_ip_drivers-master\XDMA\linux-kernel\xdma\xdma_mod.c”文件中通过以下格式来定义此驱动可识别的Device ID:{ PCI_DEVICE(0x10ee, 0x8038), },。我们要新增可识别的Device ID,在代码中加上即可,比如我需要增加Device ID为8030的设备,则在xdma_mod.c中pci_ids数组增加代码:{ PCI_DEVICE(0x10ee, 0x8030), },。注意更改源文件后要重新make编译驱动文件。
所有支持的Device ID如下:

static const struct pci_device_id pci_ids[] = {
	{ PCI_DEVICE(0x10ee, 0x9048), },
	{ PCI_DEVICE(0x10ee, 0x9044), },
	{ PCI_DEVICE(0x10ee, 0x9042), },
	{ PCI_DEVICE(0x10ee, 0x9041), },
	{ PCI_DEVICE(0x10ee, 0x903f), },
	{ PCI_DEVICE(0x10ee, 0x9038), },
	{ PCI_DEVICE(0x10ee, 0x9028), },
	{ PCI_DEVICE(0x10ee, 0x9018), },
	{ PCI_DEVICE(0x10ee, 0x9034), },
	{ PCI_DEVICE(0x10ee, 0x9024), },
	{ PCI_DEVICE(0x10ee, 0x9014), },
	{ PCI_DEVICE(0x10ee, 0x9032), },
	{ PCI_DEVICE(0x10ee, 0x9022), },
	{ PCI_DEVICE(0x10ee, 0x9012), },
	{ PCI_DEVICE(0x10ee, 0x9031), },
	{ PCI_DEVICE(
评论 29
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChipWeaver

觉得有用的话点个赞吧 :)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值