【发布时间】:2017-11-29 17:58:38
【问题描述】:
操作系统:Centos x86_64
以太网驱动程序:E1000
root@localhost e1000]# cat /proc/ioports | grep e1000
2000-203f : e1000
[root@localhost e1000]# cat /proc/iomem | grep e1000
fd5c0000-fd5dffff : e1000
fdff0000-fdffffff : e1000
鉴于上述信息和物理卡(英特尔公司 82545EM),如何更好地了解 io_ports 或 io_mem 与英特尔公司 82545EM 卡的关系?
例如,如何知道在什么情况下使用 io_port 和 io_mem 地址?我可以使用某种类型的 API 来列出每个端口地址的用途以及如何使用它们?
io_mem 地址与 DMA 地址有何关系?
谢谢
【问题讨论】:
-
英特尔应该记录编程接口(包括哪些端口做什么);他们通常很擅长为他们的硬件记录编程接口(不像一些只提供驱动程序的供应商。尽管开源 Linux 驱动程序通常有相当不错的关于哪些端口是什么的 cmets)。
-
更一般地说,“io port”和“io mem”'port'有什么区别?
-
但是不,硬件并没有自我在那个细节级别上记录。相反,硬件供应商会发布文档(通常是在线的)。拥有一个标准的硬件 API 会增加额外的硬件复杂性,以便告诉您如何对其进行编程,并且仅知道每个 MMIO 的名称或编程的 IO 端口号不会告诉您如何使用它们的语义。
标签: linux-kernel x86-64 pci nic