利用PCItree工具完成上位机与FPGA的通信测试

近期在zynq7100芯片上调试PCIe,用到了xdma核,工程设计是将上位机BAR0空间的命令通过xdma核的AXI-Lite接口传输到PS端的Slave接口,然后在PS端解析控制命令。
由于查阅了好多资料,没有找到关于PCItree的使用具体说明,在这里记录一下我使用的过程。

1.PCItree介绍

这个工具可以省去上位机驱动,直接对PCIe的寄存器空间进行读写,对我们在工程调试初期有很大的帮助。
利用PCItree工具完成上位机与FPGA的通信测试

这是PCItree软件的界面,左侧是检测到的外设设备,双击上图左侧左侧列表中的pcie设备,可以打开以下界面:
利用PCItree工具完成上位机与FPGA的通信测试
在这里可以看到详细的设备ID,BAR空间大小及其基地址,以及系统ID信息。

第一幅图右侧的config space dump中,双击BAR空间就可以对其进行内容的读写。
利用PCItree工具完成上位机与FPGA的通信测试
在左侧显示的是bar空间的地址,可以点选某个地址或一系列地址,所选范围的第一个地址的值会在右侧edit memory界面编辑框中显示,编辑框右侧显示的是我们所选地址的实际物理地址和dwords的数量。修改编辑框中的值,点击write memory就可以将数据写入这个地址。这个界面有几个选项要注意的:

auto read memory: 在列表中选择了地址会自动读取该地址的内容
loop on/off: 连续循环访问所选的地址范围
toggle: 每隔一秒写入一个dword
count: 计数,记录每个地址写的dword的数量,方便下一次的写访问

2. 在vivado界面观察数据变化

在pcitree工具上选定地址后可以写入数据,这时我们在xdma核的axi-lite接口加几个探测信号,在wvalid设置上升沿出发,在写数据的时候能够在vivado界面观察到地址和数据的变化,与我们在pcitree上设置的一致。那就可以认为上位机与xdma核的通信成立。
利用PCItree工具完成上位机与FPGA的通信测试
在0x00000014地址写入数据0xffffffff,抓取信号的地址与pcitree上的地址一致,可以看出来,在pcitree工具上显示的地址已经是映射地址了,而其实际的物理地址在编辑框右侧显示。所以对ddr通过pcie读写时的地址与pcitree上显示的地址是一致的。