在现有驱动程序

时间:2016-05-25 04:15:32

标签: linux kernel linux-device-driver

我正在学习如何编写linux驱动程序并选择我已经存在的usb棒。有一段时间,当我插入探针功能时,我一直在努力调用探针功能。

当我拔下探针时,会调用探针,或者直到那时才调用内部的printk。然后调用断开连接功能。对/ sys / bus / usb / drivers中的驱动程序使用bind和unbind做同样的事情。

May 24 21:09:12 localhost.localdomain kernel: probed
May 24 21:09:12 localhost.localdomain kernel: usb 1-2: USB disconnect, device number 16
May 24 21:09:12 localhost.localdomain kernel: discconect usb

如果我执行rmmod uasrmmod usb-storage,请插入拇指驱动器,它会按预期工作。我猜这两个现有的模块正在引发某种问题。有没有办法让驱动器在usb-storage上使用我的驱动程序?模块uas和usb-storage似乎也是自己回来的。

1 个答案:

答案 0 :(得分:2)

有一个驱动程序已注册此设备。所以你必须要注册未注册的当前驱动程序。否则您的设备将使用注册驱动程序。

Step 1 : run 'lsmode' command will display all modules that are currently loaded in the Linux kernel.
step 2 : run 'modprobe -r  <current register driver>' - Remove the currently loaded module.
setp 3 : run 'insmod <your driver *.ko> - will register your driver.

现在连接您的设备。内核将匹配您的设备ID,如果您的驱动程序具有相同的ID。它会调用你的驱动程序探测器。

完成驱动程序并希望再次加载以前的内核驱动程序。

 step 1 : run 'rmmod <your driver module>' - will remove your driver.
 step 2 : run 'modprobe < privous driver module>' - Will load previous module.

它适用于所有司机。如果您不是root用户,请使用带有'sudo'的所有命令。