PCIe学习笔记系列:
- PCIe基础知识及Xilinx相关IP核介绍
概念了解:简单学习PCIe的数据链路与拓扑结构,另外看看有什么相关的IP核。 - 【PG054】7 Series Integrated Block for PCI Express IP核的学习
基础学习:关于Pcie IP核的数据手册,学习PCIe相关的IP核的配置参数及其对应的含义。 - Xilinx PCIe IP核示例工程代码分析与仿真
基础学习:关于PCIe IP核的仿真,学习PCIe的配置流程以及应用过程。 - Xilinx XDMA 例程代码分析与仿真结果
应用学习:关于Xilinx PCIe DMA IP核的仿真,学习 PCIe DMA 的配置过程以及具体的数据传输流程。 - XDMA linux平台调试过程记录
应用学习:关于XDMA的实际调试过程,可在此基础上定制自己的需求。
目录
Xilinx XDMA 例程代码分析与仿真结果分析了对XDMA IP核的读写过程,现在进行实际测试。
1 需要的资料
以调通为目的,需要的准备有:
-
65444 - Xilinx PCI Express DMA Drivers and Software Guide
Xilinx官网的一个问答,以前叫Answer65444,最近几天网页好像重新排版,统一只有数字代号了。
其中包含Linux和Windows平台下面的XDMA驱动。- Linux平台驱动
- Windows平台驱动
我是在Linux下面进行调试的,Windows也试过了,但是驱动时好时坏,本来工程也是linux平台就暂时不测Windows平台了。
-
驱动中描述的硬件环境
官方描述支持的环境:- 系统架构: 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(

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

被折叠的 条评论
为什么被折叠?



