在 Xilinx Vivado 中映射大小大于 4MB 的 PCIe BAR 区域

Mapping PCIe BAR regions of size greater than 4MB in Xilinx Vivado

我们正在使用 Xilinx Vivado 在 VC709 FPGA 中开发带有自定义处理器、Microblaze 和一些外围设备的系统。我们在 'AXI Bridge for PCI express gen 3'.

中使用了两个 'PCIe : BARs'

我们在 PCI express 块的块配置中所做的更改没有反映在主机端。

比如我们设置BAR0为2GB,BAR1为2MB,我们得到4KB和4MB两个区域。当我们尝试改变不同的 BAR 组合时,这并没有改变。

    $lspci -vv
    0a:00.0 Memory controller: Xilinx Corporation Device 7038
    Subsystem: Xilinx Corporation Device 0007
    Physical Slot: 3
    Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR- FastB2B- DisINTx-
    Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    Interrupt: pin A routed to IRQ 16
    Region 0: Memory at fbff0000 (32-bit, non-prefetchable) [size=4K]
    Region 1: Memory at fb800000 (32-bit, non-prefetchable) [size=4M]
    Capabilities: <access denied>
    Kernel modules: riffa

如何调试它?

解决方案

我一直在使用Xilinx SDK 对FPGA 进行编程。但是 SDK 总是加载旧的比特流。我已经通过Vivado本身对FPGA进行编程解决了。

工具 > Xilinx 硬件管理器 > 打开目标 > 自动连接 > 程序设备

致谢:Mandar Datar(HPC 实验室,EE 系,IIT 孟买)