/ dev / port vs / dev / mem

时间:2012-02-20 21:12:21

标签: linux linux-device-driver parallel-port

我需要澄清一下。我可以直接写入/dev/port以直接访问并行端口,它可以正常工作(我可以打开插入端口连接器的LED)。但是,我想我可以对/dev/mem做同样的事情吗? (http://tldp.org/LDP/khg/HyperNews/get/devices/fake.html)。当我尝试读写/dev/mem时,我没有错误,但写入似乎永远不会反映在外部连接器上。我只是因为这不是我所期望的,因为我读到了关于写/dev/mem的内容。

您是否可以通过/dev/mem访问ioports?

2 个答案:

答案 0 :(得分:2)

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

  • 直接写入存储器位置0x378需要处于实模式以获得所需的效果(因为它可以在保护模式下重映射)。
  • 使用/dev/mem要求硬件已经过MMIO映射,您还需要知道MMIO地址(通常不是0x378)。

答案 1 :(得分:1)

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

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

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

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

相关问题