内核中具有多个设备的 PCIe
PCIe with multiple devices in kernel
使用带有多个设备的 PCIe 时(例如:串口、canbus、i2c 等):
是否有一个单内核 pci 驱动程序 可以处理所有这些设备?
还是应该使用多个pci设备驱动来实现,每个都使用相同的DEVICE_ID和VENDOR_ID?
如果我们使用第一种方法:
这是否意味着我们需要而不是调用“request_region
”,因为不同的驱动程序使用相同的资源?
如果我们使用上面的第二种方法:
中断例程怎么样?它是所有这些设备的单个中断例程吗?
任何人都可以参考内核源代码树中的示例吗?
根据您的其他问题之一,我假设您正在谈论带有通过 PCIe 连接到 ARM CPU 复合体的自定义 IP 块的 FPGA。
PCIe 驱动程序不处理任何这些设备。这些 IP 块的内存 map/space 将通过 PCIe 公开。当这些外围设备中的任何一个触发 IRQ 时,IRQ 将成为 PCIe MSI IRQ 并提供给相应外围设备驱动程序的 IRQ 处理程序。
不会有多个PCIe设备驱动。
查看我对您的另一个问题的回复 。
使用带有多个设备的 PCIe 时(例如:串口、canbus、i2c 等):
是否有一个单内核 pci 驱动程序 可以处理所有这些设备?
还是应该使用多个pci设备驱动来实现,每个都使用相同的DEVICE_ID和VENDOR_ID?
如果我们使用第一种方法:
这是否意味着我们需要而不是调用“request_region
”,因为不同的驱动程序使用相同的资源?
如果我们使用上面的第二种方法:
中断例程怎么样?它是所有这些设备的单个中断例程吗?
任何人都可以参考内核源代码树中的示例吗?
根据您的其他问题之一,我假设您正在谈论带有通过 PCIe 连接到 ARM CPU 复合体的自定义 IP 块的 FPGA。
PCIe 驱动程序不处理任何这些设备。这些 IP 块的内存 map/space 将通过 PCIe 公开。当这些外围设备中的任何一个触发 IRQ 时,IRQ 将成为 PCIe MSI IRQ 并提供给相应外围设备驱动程序的 IRQ 处理程序。
不会有多个PCIe设备驱动。
查看我对您的另一个问题的回复