我正在尝试将驱动程序移植到 Linux,但该设备不响应在 Linux 下向其 I/O 端口范围发出的命令。它在 Windows 下正确响应,为它分配了不同的端口范围。
我怀疑一个可能的问题是它与 Linux 内核分配给它的 I/O 端口范围在某种程度上不兼容。
I/O 端口在引导期间(加载驱动程序之前)通过正常 PCI 自动配置进行配置,并反映在 PCI BAR 和lspci
中/sys/bus/pci/.../resource*
。
BIOS 设置既不会改变端口范围,也不会改变任一操作系统上的行为。
有没有办法强制 Linux PCI 子系统将特定的 I/O 端口范围分配给特定的设备?
或者至少以某种方式导致分配的端口号发生变化?
(如果您认为没有办法做到这一点,请具体说明您是如何得出这个结论的)