PCIe驱动调试过程中遇到的问题

PCIe驱动和fpga设备调试遇到的问题解决

问题1. FPGA设备通过PCIe读取DDR内容失败

现象:观察FPGA侧的PCIe核,发现在执行一段时间后,PCIe核发出读存储器请求,不能得到内存的数据;同时系统侧通过lspci -vvv命令发现设备的UESta信息出现overflow标志(RxOF+)。

通过与正常系统上的PCIe设备的配置空间内容比较,发现我们设备的DevCtl设置了ExtTag+,当设置了这个标志位,存储器读请求TLP中的Requester ID字段会扩展一个8位的tag,表示能暂存的数据包的数量,如果PCIe设备那边没有相应的处理,则会出现溢出,所以在驱动初始化的时候关闭这个标志位,不进行暂存,则解决这个问题:

    pcie_capability_read_word(pdev, PCI_EXP_DEVCTL, &ectl);
    ectl &= ~PCI_EXP_DEVCTL_EXT_TAG;
    pcie_capability_write_word(pdev, PCI_EXP_DEVCTL, ectl);

猜你喜欢

转载自blog.csdn.net/mingtianyueni/article/details/82015726