我目前正在开发操作系统,并且正在尝试实现 PCI。具体来说,我正在尝试实现一个 RTL8139 驱动程序,但细节并不重要。无论如何,据我所知,我应该使用 I/O 而不是内存映射来寻址不同的寄存器,而且我在理解一件事时遇到了一些麻烦:
PCI 配置空间中的基地址寄存器为32 位宽。据我了解,x86 I/O 总线使用16 位端口号。除了配置它们并使用该地址之外,我似乎找不到如何正确使用 BAR 的解释,知道这一点,这是没有意义的。我知道需要对齐 4(对于 I/O),但我不确定如何使用这些地址。我应该只使用低 16 位吗?我还需要做一些其他的操作吗?
如果可以澄清这一点,我将不胜感激。提前致谢。