Linux的USB驱动程序:探测已经插入的设备

Linux的USB驱动程序:探测已经插入的设备

问题描述:

我正在写一个USB驱动程序,我有一个问题。 当我用先前插入的设备对驱动程序进行insmod时,不会调用探测功能。只有在断开设备并再次插入设备后才会调用它。 我想使它在我的电脑开启时已经插入设备。Linux的USB驱动程序:探测已经插入的设备

有人能帮我吗?

+0

在内核启动后插入设备,然后加载驱动程序与在引导时加载驱动程序(已插入设备)之间存在差异。这两种情况都不起作用吗?如果您在插入设备后加载模块,AFAIK将无法工作。 – Bandan 2010-06-17 19:55:54

从文档/驱动程序模型/ binding.txt:

在添加新设备时,驱动程序的总线的列表遍历 找到一个支持它。为了确定该设备的设备ID必须与驱动程序 支持的其中一个设备ID匹配。用于比较ID的格式和语义是总线特定的。

来自同一来源:

的过程是当添加了新的驱动器,用于几乎相同。 总线的设备列表被迭代以找到匹配。已经有驱动程序的设备 被跳过。所有设备重复执行 ,以将尽可能多的设备绑定到驱动程序。

因此,看起来您在ID匹配方面存在问题,即您的USB总线特定情况,请参阅drivers/usb/core/driver.c中的usb_device_match函数。

或者您的设备可能已经被绑定到拔下设备时被卸载的设备(您可以通过控制是否在相应的/ sys/bus/usb/xxxxx目录)

“或者可能是您的设备已经绑定到拔下设备时卸载的设备(您可以通过控制是否在相应的/ sys/bus/usb/xxxxx目录)“

如果有符号链接?

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