【问题标题】:multiple devices, single driver多个设备,单个驱动程序
【发布时间】:2014-11-27 07:53:31
【问题描述】:

我已经为 PCI-e fpga 卡开发了一个 linux 设备驱动程序,它正在工作。 现在,假设我想在同一台电脑上安装两个(相等的)这些 pci-e 卡。 它是如何工作的?我试图安装驱动程序,我期待一个“双重探测”回调,但事实并非如此。那么,我该如何处理这种情况呢?按次要号码?有人可以帮我吗?

ps pci卡是fpga开发板,所以它们实际上是“相同”的卡,也许我必须在硬件中区分一些东西?

【问题讨论】:

  • 驱动如何识别卡?如果有可能同时存在几张相同的卡,驱动程序应该查看它是否已经初始化了自己并跳过任何已经启用的卡。它可以注册以接收多个 IRQ(例如)并映射多个内存区域以供访问。 ISR 做的最简单的事情是扫描所有启用的寄存器,看看是否有任何事情要做。
  • 卡片根据插槽进行区分。您的 PCI 驱动程序的 .probe 回调应该被调用两次。

标签: linux-kernel kernel kernel-module pci


【解决方案1】:

如果您的驱动程序是内置的而不是要加载的内核模块,情况会有所不同。尝试将其编译为内置驱动程序,并确保您的卡都已开机。这样,您的两张卡都将被枚举,然后由同一个驱动程序进行探测。

您安装驱动程序的事实,在这种情况下,它依赖于代码本身和您编写驱动程序的方式。如果你能分享驱动程序,我会很有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多