在 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 孟买)
我们正在使用 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 孟买)