linux内核 鼠标,usb鼠标在linux内核中使用哪些驱动程序?

我会逐一回答你的问题:

1)为了使我的模块加载(热插拔),当这个鼠标插入,我必须禁用内核中的这3个驱动程序和构建整个内核与我的驱动程序与供应商和设备ID在id_table.对?

是的,但还有一些额外的事情需要照顾.首先了解特定模块(驱动程序)如何加载.关键是MODULE_DEVICE_TABLE(usb,& my_id_table);每当特定模块“安装”(使用make modules_install)时,根据MODULE_DEVICE_TABLE中传递的id表,可以在/lib/modules/\u0026lt;your_kernel\u0026gt;/modules.usbmap和/ lib / modules /< your_kernel&gt ; /modules.dep文件(在文件中搜索字符串“usbhid”).每当检测到新的USB设备时,内核会读取这些文件以找到匹配的参数.如果找到,则从/lib/modules/\u0026lt;your_kernel\u0026gt;/modules.dep中找到的相应路径加载以下模块,该模块保存该信息.关于司机所在的路径以及它的依赖关系. 所以,现在即使从内核卸载(rmmod)usbhid,当您重新插入鼠标时,它将再次加载.为了避免这种情况发生,您需要修改这些文件,即从文件中删除条目.为此,请将usbhid驱动程序从其原始路径(通常位于/lib/modules/\u0026lt;your_kernel\u0026gt;/kernel/drivers/hid/usbhid/usbhid.ko)移到安全的位置,现在重建依赖关系,以便条目将从依赖关系文件中删除. 现在您需要创建驱动程序的条目.只需安装你的驱动程序,你很好去! 所以,总结一下:

$sudo rmmod usbhid # Unload the usb mouse driver

$cd /lib/modules/$(uname -r)/ # Move to your current kernel

$vim modules.usbmap # Check for the "usbhid" string

$vim modules.dep # Check for "usbhid.ko:" string

$sudo mv kernel/drivers/hid/usbhid/usbhid.ko ~/Desktop # Take backup of your current

usb mouse driver

$sudo depmod -a # Rebuild the dependency files

现在再次检查字符串“usbhid”的依赖关系文件.不应该在那里

$cd /path/to/your/driver

$sudo make modules_install # Install your driver into /lib/modules/$(uname -r)/extra

$sudo depmod -a # Rebuild the dependency files

在这个步骤之后,在依赖文件中搜索对应于你的模块的字符串,它应该在那里!从这一刻起,每当你插入鼠标(或从引导本身),您的驱动程序将被加载,而不是原来的.

一旦你完成了你的驱动程序的播放,你可以将原始的usbhid文件复制到它的原始目的地并重建依赖文件(sudo depmod -a)

现在我还看到您正在尝试使用供应商和设备ID来匹配您的设备,在这种情况下,驱动程序仅适用于您的鼠标.推荐的方法是使用类ids,这使您的驱动程序适用于任何usb鼠标.

2)我还阅读了关于USB核心驱动程序和USB设备驱动程序.那么这些HID驱动程序是核心驱动程序或设备驱动程序?

usbhid基本上是一个“设备驱动程序”.驱动程序的分类可以简化为:核心驱动程序,主机控制器驱动程序和设备驱动程序:

设备驱动程序:这是用于控制设备的软件.例如usb鼠标,基于pci的以太网卡,usb pendrive,基于i2c的加速度计.

主机控制器驱动程序:这是用于控制总线控制器的软件.例如USB主机控制器(EHCI,UHCI,OHCI等),PCI主机控制器,I2C主机等

核心驱动程序:这些实际上是上面讨论的驱动程序.示例是USB内核,PCI内核等.内核驱动程序提供帮助程序(API),以便设备和主机控制器驱动程序可以使用它们(模块堆栈的概念).这些是将正确的设备绑定到其驱动程序的那些.核心驱动程序提供许多其他服务.

USB设备驱动程序示例代码:

您可能会发现以下USB主机控制器驱动程序:

我认为这也是你第三个问题的答案!

希望这有帮助.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值