技术支持您好:
我在使用IMX6SX的PCIE和FPGA通信时出现问题,IMX6SX作为RC,FPGA作为EP。系统可以识别出PCIE设备。但是系统向FPGA内存空间写入数据,在进行读出,发现数据并没有任何变化。具体的操作过程如下:
root@imx6sx_all:~# lspci
00:00.0 PCI bridge: Synopsys, Inc. Device abcd (rev 01)
01:00.0 Memory controller: Xilinx Corporation Default PCIe endpoint ID (rev 26)
root@imx6sx_all:~# lspci -vvv -s 01:0.0
01:00.0 Memory controller: Xilinx Corporation Default PCIe endpoint ID (rev 26)
Subsystem: Xilinx Corporation Default PCIe endpoint ID
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 155
Region 0: Memory at 08100000 (32-bit, non-prefetchable) [disabled] [size=1K]
使用memtool对0x08100000地址进行读写操作,数据没变
root@imx6sx_all:/unit_tests# ./memtool 08100000=12345678
Writing 32-bit value 0x12345678 to address 0x08100000
root@imx6sx_all:/unit_tests# ./memtool 08100000 1
E
Reading 0x1 count starting at address 0x08100000
0x08100000: FFFFFFFF
不知道这么操作是否正确,由于水平所限,很抱歉没能用英文描述。期待您的解答。
Hello Shiguang,
On how to use PCIe interface, we have a detailed document for linux, see the link, please!
i.MX6Q PCIe EP/RC Validation System
The usage is very similar to yours !
In additon, you can also refer to this one at the same time:
Freesclae i.MX6 Linux PCIE驱动源码分析 - 小辉辉的日志 - 网易博客
Regards,
Weidong