我们正在开发一个通过 PCIe 连接到 Linux PC 主机的嵌入式系统。现在,在实现和调试阶段,我经常需要对设备进行断电和上电,或者尝试不同的板子。这会导致 Intel PC 上运行的 Linux(Ubuntu 或 Debian)出现问题。
通常,当我需要插入被测设备时,PC 会启动。正如预期的那样,Linux 没有找到该设备,并且软件应用程序无法与之对话。如果我执行“lspci -v”,那么它不会列出我们的设备。我们的应用程序使用 libpci(使用 -lpci 构建的程序)来访问我们设备公开的单个 BAR,然后通过执行 page_remap 的内核模块“mmap”。我们的解决方法是重启 PC,之后设备可见并启用。
我正在寻找一种解决方案,我不必经常(一天中数十次)重新启动 PC。我不能连接设备然后运行一些代码来让 Linux 内核检测并启用我们设备的 BAR 吗?我希望找到一些关于使用 PCI 支持库和示例的文档,但一直没能找到。任何指针表示赞赏。也许我可以在我的代码中执行诸如 pci_enable_device() 或 pci_find_device() 之类的调用?不过我想不通。我可以编写内核模块以及用户代码来使其工作,即,我对是否具有 root 访问权限没有任何限制。
非常感谢您的建议和指点,Guraaf