寄存器的设置及初始化
来源:网络收集 点击: 时间:2024-05-08首先,这个16-位寄存器标识一个硬件制造商,每个 Intel 设备都标有相同的供应商号, 0x8086,这样的号有一个全球的注册,由 PCI 特别利益体所维护,并且供应商必须申请有一个唯一的分配给它们的号。

然后,这是另一个16-位寄存器,由供应商选择,对于这个设备 ID 没有要求官方的注册. 这个 ID 常常和 供应商 ID 成对出现来组成一个唯一的 32-位 标识符给一个硬件设备. 我们使用词语签名来指代供应商和设备 ID 对. 一个设备驱动常常依靠签名来标识它的设备; 你可在硬件手册中找到对于目标设备要寻找的值。

然后,每个外设都属于一个类. 类寄存器是一个 16-位 值, 它的高 8 位标识基类(或者群). 例如, ethernet和token ring是 2 个类都属于network群, 而serial和parallel属于communication群. 一些驱动可支持几个类似的设备, 每个都有一个不同的签名但是都属于同样的类; 这些驱动可依赖类寄存器标识它们的外设。

然后,这些字段可用来进一步标识一个设备,如果芯片对于本地总线是一个通用接口芯片, 它常常被用在几个完全不同的地方,并且驱动必须标识出它在与之通话的实际设备,子系统标志用作此目的。使用这些不同的标识符,一个 PCI 驱动可告知内核它支持什么类型的设备。struct pci_device_id 结构被用来定义一个驱动支持的不同类型 PCI 设备的列表。这些指定一个设备的 PCI 供应商和设备 ID. 如果驱动可处理任何供应商或者设备 ID, 值 PCI_ANY_ID 应当用作这些成员上。

然后,这些指定一个设备的 PCI 子系统供应商和子系统设备 ID。如果驱动可处理任何类型的子系统 ID, 值 PCI_ANY_ID 应当用作这些成员上。这 2 个值允许驱动来指定它支持一类 PCI 类设备。 不同的 PCI 设备类( 一个 VAG 控制器是一个例子 )在 PCI 规范里被描述. 如果一个驱动可处理任何子系统 ID, 值 PCI_ANY_ID 应当用作这些字段。

最后,这个创建一个 struct pci_device_id, 它匹配一个特定的 PCI 类。这些例子创建一个 struct pci_device_id 结构的列表, 列表中最后一个是被设置为全零的的空结构. 这个 ID 的数组用在 struct pci_driver ,并且它还用来告诉用户空间这个特定的驱动支持哪个设备。

上述方法为小编整理所得,希望能够帮助到大家。
操作系统方法操作版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_713470.html