【问题标题】:linux usb driver: probing already plugged deviceslinux usb驱动程序:探测已经插入的设备
【发布时间】:2010-06-13 14:49:42
【问题描述】:

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

有人可以帮帮我吗?

【问题讨论】:

  • 在内核启动后插入设备然后加载驱动程序和在启动时加载驱动程序与设备已经插入之间存在差异。这两者都不起作用案例? AFAIK 如果您在插入设备后加载模块,它将无法工作。

标签: usb linux-kernel linux-device-driver probe


【解决方案1】:

来自文档/driver-model/binding.txt:

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

来自同一来源:

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

所以看起来你的 ID 匹配有问题,在你的情况下特定于 USB 总线,请参阅 drivers/usb/core/driver.c 中的 usb_device_match 函数。

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

【讨论】:

    【解决方案2】:

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

    如果有符号链接?

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2011-02-02
        • 2011-11-04
        • 1970-01-01
        • 2015-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多