旧式PCI探测

时间:2012-08-28 05:20:12

标签: linux driver pci

从Linux内核3.0开始,pci探测是自动的:pci_register_driver(&pci_driver);

Linux内核2.6及更早版本,程序员必须创建一个字符设备,并遍历PCI列表,选择合适的PCI并使用它。你能告诉我这个过程的步骤,为什么在使用PCI驱动程序之前需要初始化字符设备,以及为什么不再需要注册字符驱动程序。

1 个答案:

答案 0 :(得分:1)

我认为你指的是linux 2.4或更早版本。当前具有总线,设备和驱动程序的内核设备模型一直是2.6系列的一部分。

你的问题到底是什么?

在启动时制作PCI设备列表。然后,当注册驱动程序时,pci_driver结构id_table字段用于匹配 使用总线上的设备。然后使用指向匹配的设备结构的指针调用pci_driver探测函数。

  • pci_driver已注册
  • 对于总线上的每个设备,将设备的id元素(产品ID和供应商ID)与pci_driver提供的id_table中的id元素进行比较
  • 如果匹配,则调用pci_driver探测函数,在此探测函数中,您可以注册char设备或块设备等。

所以它与2.4没有什么不同,除了所有的探测,匹配的驱动程序和设备等......都由“设备核心”处理,而不是由pci驱动程序处理。

有关详细说明,请参阅this PDFthis page