linux中的设备驱动程序检测过程

Process of device driver detection in linux

想知道如何在 Linux 中检测到设备?设备驱动在设备检测中的具体工作流程是怎样的?

检测设备是内核的工作,因为它对可用硬件具有最低级别的访问权限。当内核扫描所有可用地址时,它会维护一个供应商和设备 ID 列表。

以 PCI 总线设备为例,所有 PCI 设备都有一个 Vendor ID 和一个 Device ID。

设备驱动程序的编写方式是为了向内核识别驱动程序能够控制的设备类型。驱动程序可能会宣传他们可以处理不止一种供应商和设备类型组合。

内核会根据这些ID为每个设备分配一个驱动程序。 USB 设备也有类似的流程。遗留设备(串行端口、并行端口、ps2 mice/keyboards)等较旧的技术将具有明确的硬编码方法,用于将特定驱动程序与设备相关联。

您可以使用 Linux 命令 lsusblspci 查看系统上的可用设备和 ID。

因此,直接回答您的问题 - 设备驱动程序通常不会检测设备,至少在一开始是这样。一旦驱动程序与设备相关联(通过内核),驱动程序可能会进一步询问设备以确保它包含正确的固件或正确的硬件版本等。