1

我需要澄清一下。我可以直接写入以/dev/port直接访问并行端口,它工作正常(我可以打开插入端口连接器的 LED)。但是,我认为我可以对/dev/mem? (http://tldp.org/LDP/khg/HyperNews/get/devices/fake.html)。当我尝试读写时,/dev/mem我没有收到任何错误,但写入似乎从未反映在外部连接器上。我之所以这么问,是因为根据我所读到的关于写入的内容,这不是我所期望的/dev/mem

你不能通过 ioports 访问/dev/mem吗?

4

2 回答 2

2

提出一些建议(未经测试)。可能是这样...

  • 直接写入内存位置 0x378 需要处于实模式才能获得所需的效果(因为它可能会在保护模式下重新映射)。
  • 使用/dev/mem要求硬件已经进行了MMIO映射,还需要知道MMIO地址(一般不是0x378)。
于 2012-02-20T22:53:20.780 回答
2

编辑:这仅适用于 x86 处理器(也许还有其他一些处理器)。

内存映射 I/O 与 x86 处理器上的端口 I/O 并不完全相同。

jørgensen 是正确的,内存在保护模式下被重新映射——但是,I/O 端口不能以这种方式重新映射。/dev/port直接指 I/O 端口,而/dev/mem映射到(我相信)物理内存(即未重新映射),因此在这种情况下,您要使用/dev/port.

至于您提供的链接,它/dev/mem用于内存映射 I/O(同样,与 I/O 端口不同)。

于 2013-06-12T13:38:50.807 回答