我正在做一些爱好者级别的操作系统开发,对于内存映射I/O地址有些困惑。我理解整个内存映射I/O概念,但我试图弄清楚开发人员如何获得地址以操纵硬件。
这些地址是由硬件供应商指定的还是所有计算机都使用某种标准地址?例如,用于文本打印的VGA存储器的起始地址为0xB8000。这对于每台x86机器都是标准的吗?如果是,是谁设置了这个标准?如果我想与以太网卡通信,我如何知道它使用的地址或端口?
提前致谢。
这些地址是由硬件供应商指定的还是所有计算机都使用某种标准地址?例如,用于文本打印的VGA存储器的起始地址为0xB8000。这对于每台x86机器都是标准的吗?如果是,是谁设置了这个标准?如果我想与以太网卡通信,我如何知道它使用的地址或端口?
提前致谢。
arch/XXX/mach-XXX
目录中声明他们的设备。此外,QEMU 在仓库的hw/
目录中手动声明了大量的映射,虽然我不确定这些映射是否具有权威性或现实性。要获取更多信息,请查看各种总线协议,例如PCI或SCSI,以查看它们是否具有映射发现功能。 - alexgolec