【发布时间】:2016-01-24 09:44:20
【问题描述】:
想知道如何在 Linux 中检测到设备?设备检测中设备驱动的工作流程到底是怎样的?
【问题讨论】:
想知道如何在 Linux 中检测到设备?设备检测中设备驱动的工作流程到底是怎样的?
【问题讨论】:
检测设备是内核的工作,因为它对可用硬件具有最低级别的访问权限。当内核扫描所有可用地址时,它会维护一个供应商和设备 ID 列表。
以 PCI 总线设备为例,所有 PCI 设备都有一个 Vendor ID 和一个 Device ID。
设备驱动程序的编写方式是为了向内核识别驱动程序能够控制哪些类型的设备。驱动程序可能会宣传他们可以处理多个供应商和设备类型的组合。
内核将根据这些 ID 为每个设备分配一个驱动程序。 USB 设备也有类似的过程。旧设备(串行端口、并行端口、ps2 鼠标/键盘)等较旧的技术将具有将特定驱动程序与设备关联的明确硬编码方法。
您可以使用 Linux 命令 lsusb 和 lspci 来查看系统上的可用设备和 ID。
所以直接回答您的问题 - 设备驱动程序通常不会检测设备,至少在第一个实例中是这样。一旦驱动程序与设备相关联(通过内核),驱动程序可能会进一步询问设备以确保它包含正确的固件或者是正确的硬件版本等。
【讨论】: