0

我正在编写一个 USB 驱动程序,但我遇到了一个问题。当我在事先已经插入设备的情况下安装驱动程序时,不会调用探测函数。只有在我断开设备并重新插入后才会调用它。我想让它在我启动我的电脑并插入设备时工作。

有人可以帮我吗?

4

3 回答 3

0

“或者可能是您的设备已经绑定到在设备拔出时卸载的设备(您可以通过控制相应 /sys/bus/usb/xxxxx 目录中是否存在指向驱动程序的符号链接来检查) "

如果有符号链接?

于 2010-07-31T13:05:30.363 回答
0

这可以通过为您的设备编写适当的 udev 规则来解决。在 /etc/udev/rules.d/ 中查找示例

于 2014-05-15T23:52:41.867 回答
0

从 Documentation/driver-model/binding.txt:

添加新设备时,总线的驱动程序列表将被迭代以找到支持它的驱动程序。为了确定这一点,设备的设备 ID 必须与驱动程序支持的设备 ID 之一匹配。比较 ID 的格式和语义是特定于总线的。

来自同一来源:

添加新驱动程序时的过程几乎相同。迭代总线的设备列表以找到匹配项。已具有驱动程序的设备将被跳过。迭代所有设备,以将尽可能多的设备绑定到驱动程序。

因此,您的 ID 匹配似乎存在问题,即您的情况是特定于 USB 总线的,请参阅 drivers/usb/core/driver.c 中的 usb_device_match 函数。

或者可能是您的设备已绑定到在设备拔出时卸载的设备(您可以通过控制相应 /sys/bus/usb/xxxxx 目录中是否存在指向驱动程序的符号链接来检查)

于 2010-06-22T14:35:01.547 回答