栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Linux内核中的USB鼠标使用哪些驱动程序?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux内核中的USB鼠标使用哪些驱动程序?

我会尽力回答您的问题:

1)为了在插入此鼠标时加载模块(hotplug),我必须在内核中禁用这3个驱动程序,并使用id_table中具有供应商和设备ID的驱动程序来构建整个内核。
对?

是的,但是您还需要注意一些其他事项。首先了解如何加载特定的模块(驱动程序)。这里的关键是

MODULE_DEVICE_TABLE(usb,&my_id_table);
,当特定模块“已安装”(使用
makemodules_install
),一个条目,根据传入的id表
MODULE_DEVICE_TABLE
中被创建
/lib/modules/<your_kernel>/modules.usbmap
/lib/modules/<your_kernel>/modules.dep
文件(搜索这些文件中的字符串“USBHID”)。每当检测到新的USB设备时,内核就会读取这些文件以查找匹配的参数。如果找到,则从找到
/lib/modules/<your_kernel>/modules.dep
信息的对应路径中加载以下模块。有关驱动程序所在路径及其相关性的信息。

因此,现在即使您

usbhid
从内核中卸载(rmmod),当您重新插入鼠标时也将再次加载它。为了避免这种情况的发生,您需要修改这些文件,即从文件中删除条目。为此,请将
usbhid
驱动程序从其原始路径“移动”
(通常位于
/lib/modules/<your_kernel>/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来匹配您的设备,在这种情况下,驱动程序仅对 您的
鼠标有效。推荐的方法是使用类ID,这使您的驱动程序可用于 任何 USB鼠标。


2)我还阅读了有关USB核心驱动程序和USB设备驱动程序的信息。 那么这些HID驱动程序是核心驱动程序还是设备驱动程序?

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

设备驱动程序: 这是用于控制设备的软件。例如USB鼠标,基于PCI的以太网卡,USB PenDrive,基于I2C的加速度计。

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

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

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

http://lxr.free-
electrons.com/source/drivers/hid/usbhid/usbmouse.c

您可以在以下位置找到USB主机控制器驱动程序:

http://lxr.free-electrons.com/source/drivers/usb/host/

USB Core驻留在这里:http :
//lxr.free-electrons.com/source/drivers/usb/core/

我认为这也回答了您的第三个问题!

希望这会有所帮助。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/403276.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号