我有一个 FPGA(就像大多数问这个问题的人一样),它在我的 Linux 内核进行初始 PCIe 总线扫描和枚举之后进行配置。您可以猜到,FPGA 实现了一个 PCIe 端点。
我想让 PCIe 内核重新枚举整个 PCIe 总线,这样我的 FPGA 就会显示出来,我可以加载我的驱动程序模块。我还希望能够为不同的配置交换 FPGA 负载。我的意思是我希望能够:
- 引导 Linux
- 配置 FPGA
- 枚举 PCIe 端点和加载模块
- 移除 PCIe 端点
- 重新配置 FPGA
- 重新枚举 PCIe 端点
无需重启 Linux
以下是其他地方提出的解决方案,但并未解决问题。
echo 1 > /sys/bus/pci/rescan
这似乎有效(仅有时),如果我想在首次枚举 FPGA 负载后对其进行热交换,则它不起作用。
可以使用 PCIe 的热插拔/电源管理工具来完成这项工作吗?如果是这样,是否有任何关于如何将 Hotplug 系统与 PCIe 一起使用的好资源?(LDD并没有完全覆盖它)