【发布时间】:2012-08-28 15:29:34
【问题描述】:
从 Linux 内核 3.0 开始,pci 探测是自动的:pci_register_driver(&pci_driver);
Linux 内核 2.6 及更早版本,程序员必须创建一个字符设备,并遍历 PCI 列表,选择合适的 PCI 并使用它。你能告诉我这个过程的步骤是什么,为什么在使用PCI驱动之前需要初始化字符设备以及为什么不再需要注册字符驱动。
【问题讨论】:
从 Linux 内核 3.0 开始,pci 探测是自动的:pci_register_driver(&pci_driver);
Linux 内核 2.6 及更早版本,程序员必须创建一个字符设备,并遍历 PCI 列表,选择合适的 PCI 并使用它。你能告诉我这个过程的步骤是什么,为什么在使用PCI驱动之前需要初始化字符设备以及为什么不再需要注册字符驱动。
【问题讨论】:
我认为您指的是 linux 2.4 或更早版本。当前带有总线、设备和驱动程序的内核设备模型一直是 2.6 系列的一部分。
你的问题到底是什么?
在引导时会生成 PCI 设备列表。然后在注册驱动时,使用pci_driver结构id_table字段来匹配
与总线上存在的设备。然后使用指向匹配设备结构的指针调用 pci_driver 探测函数。
所以它与 2.4 没有太大区别,除了所有探测、匹配驱动程序和设备等......由“设备核心”而不是 pci 驱动程序处理。
【讨论】: