linux - ISR 内的 PCIe 读写

标签 linux fpga interrupt-handling dma pci-e

我正在修改 Linux PCIe 驱动程序以与 altera FPGA PCIe 内核配合使用。在我的驱动程序代码中, 我执行 pci_set_master(dev) 以使 PCIe 读写工作正常。

我使用 altera SG-DMA 进行 PCIe 传输,而不是使用 ARM DMA。 我需要向 FPGA DMA 写入启用位以启动传输。通过对启用位寄存器执行 pcie write(barx,offset,data) 可以完美地工作。

问题是,我需要我的系统在 I/O 中断发生时启动 PCIe FPGA DMA,但是当中断发生时,在 ISR 内部我放置了 pcie write(barx,offset,data),这导致整个 linux 卡在那里。

有人遇到过这种情况吗?请帮我。 提前致谢。

最佳答案

根据我的说法,你的问题不是FPGA,而是你的中断处理方式。您可能想要隔离此问题并使用适当的标签进行询问。不要包括 PCIe 或 FPGA,因为它们很可能不是您当前问题的一部分。

对于不同的 FPGA,您用于 SGDMA 的 PCIe 驱动程序是不同的。由于您手动调用读取和写入 PCIe-FPGA 接口(interface)的函数,看起来这部分(PCIe 驱动程序)也可能没有问题。您使用的功能不会被其他人知道,因此在您的问题中也没有必要分享该功能。

我建议您阅读有关 IO 中断处理的更多信息。尝试除轮询中断事件之外的其他操作。

关于linux - ISR 内的 PCIe 读写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16909120/

相关文章:

architecture - 是否有可能以小于 2 的系数为代价以带宽为代价将 FPGA 上的二元运算树的空间需求减少?

arm - 在 u-boot 中处理 gpio 中断

linux - smem如何计算RSS、USS和PSS?

c++ - 在 Linux 上使用 C++ 进行 arping

verilog - 当我遵循规范时,SPI 从机不起作用,当我不遵循规范时,SPI 从机也不起作用吗?

linux-kernel - 是否有任何内核工具可用于以合理的精度测量中断延迟?

linux-kernel - do_IRQ 中的中断向量和 irq 映射

mysql - 如何每小时获取 mysql 数据库的 mysql 转储

linux - 输出文件内容,每个文件之间有一个额外的换行符

python - 训练后量化权重的keras模型评估