为 I/O 中使用的寄存器的基地址寻找 INTEL 以太网设备相关宏的宏的内核头文件

Posted

技术标签:

【中文标题】为 I/O 中使用的寄存器的基地址寻找 INTEL 以太网设备相关宏的宏的内核头文件【英文标题】:Looking for Kernel Header file for Macros of INTEL ethernet device related macros for base addresses of registers used in I/O 【发布时间】:2021-04-11 04:40:23 【问题描述】:

哪里是 Linux 头文件中 PCI 寄存器地址宏的头文件(地址在设备的内存 IO 映射中),用于 VendorID、DeviceID、CLASS 和 BASE 地址 MACRO(对于 IO 为 ins(address) outb(..address )) 用于 Debian Linux 中的 intel e1000e 设备

【问题讨论】:

还有一个宏INTEL在哪里这个和其他宏是哪个头文件? 【参考方案1】:

每个网卡都在drivers/net/ethernet/intel 下。例如,E1000 卡在https://elixir.bootlin.com/linux/v4.10.17/source/drivers/net/ethernet/intel/e1000/e1000_hw.h#L409 中列出了所有不同的型号 ID,Intel 的供应商 ID 是 8086。

PCI 地址是分配的,它们不是固定的。

【讨论】:

我已经安装了 linux 头文件,但是这个文件在我的系统上肯定不存在。怎么办,在编译安装驱动之前,下载后是否需要将这个文件包含在我的驱动文件夹中 我有 5.7.0-kali1-amd64 你要求的都是内核源代码内部的。它不在导出的标头中。 您是否正在尝试为现有的 Intel 卡编写自己的驱动程序? Linux 内核是单片的。如果包含任何内部头文件,请系好安全带。

以上是关于为 I/O 中使用的寄存器的基地址寻找 INTEL 以太网设备相关宏的宏的内核头文件的主要内容,如果未能解决你的问题,请参考以下文章

8086的寻址能力有多大?

X86 I/O端口

AVR--I/O端口寄存器

6. ioremap() 函数解析

汇编小知识

I/O 端口和 I/O 内存