我研究了一下端口映射IO和内存映射IO,并且我找出了第一个工作原理(不是第二个工作原理),所以如果你有一些很好的解释内存(我听说它是关于通过操作系统拦截页面错误将它们重新路由到设备)请让我知道。澄清谁决定内存映射和端口IO映射
无论如何,我的问题是:与内部实时时钟(RTS)通信使用I/O端口映射,您需要使用outb(byte_selected,0x70)和0x70端口上的类似函数..谁决定0x70港口?我怎么知道他们在哪里宣布?那么内存映射IO呢?谁决定哪些地址与哪些设备相关联?如果我将自己的设备添加到系统中,它的内存将如何映射?
我还有一个关于OS-HW通信很混乱..
但请注意,USB主控制器通常会使用内存映射I/O来生成这些命令。另请注意:使用'outb'的示例是基于端口的I/O,它是一种特殊的x86特性,它与内存映射I/O不同。这是一件遗留的事情,而这些映射完全是硬连线的。 – pmdj 2012-03-17 17:07:57
伟大的一点我忘了提及。 int/outb不使用内存映射,而是使用自己的16位地址空间。这是非常遗传的东西,除了x86上的基本配置外,现在还没有如此使用。再次映射是静态决定的,尽管一些非常旧的ISA卡(声卡,重力超声...)允许您使用跳线来更改它们使用的I/O端口(如IRQ和DMA)。 PCI及其自动配置使其无用(并且PCI也使用其自己的地址空间)。 – Gnurou 2012-03-18 03:28:17