简单分析USB设备驱动框架(秒懂~)

2022年09月27日18:51:10 科技 1709

在生活、工作中经常会接触到USB设备,如鼠标、键盘、摄像头、可移动硬盘、扫码枪等。这些设备通过USB接口连接到电脑上后,电脑会立刻提示“检测到新硬件...”、安装驱动等。这里需要强调下USB设备使用的是USB总线,window或Linux内核中都会自带usb总线驱动,所以接上USB设备后,主机能够立刻检测到,提醒需要安装设备驱动是指安装USB设备驱动。

USB设备驱动使用USB总线,所以很多操作由USB总线驱动帮我们完成了,我们只需要的按照总线、设备、驱动框架来实现USB设备的驱动既可。USB设备数据的读写操作由总线驱动现在,我们可以直接使用总线读取到的数据,然后解析这些数据的含义、再进行相关的操作就可以了(这里需要注意的一点是USB总线驱动只提供USB设备的读写操作函数,这函数是通用的,即里面的数据的含义总线驱动并不知道)。

USB设备驱动的框架图下,具体的代码可以参考内核中的/drivers/hid/usbhid/usbmouse.c

分配/设置usb_driver结构体,填充里面的.id_table、.probe、.disconnect成员。
调用usb_register把usb_driver结构体注册到内核中。

static struct usb_driver usbtouch_driver = {
	.name		= "myusb",
	.probe		= usbtouch_probe,
	.disconnect	= usbtouch_disconnect,
	.id_table	= usbtouch_devices,
};
 
static int __init usbtouch_init(void)
{
	return usb_register(&usbtouch_driver);
}
 
static void __exit usbtouch_cleanup(void)
{
	usb_deregister(&usbtouch_driver);
}

struct usb_driver中的id_table成员是用与和usb设备进行匹配的选项,表示这个驱动支持的设备。

.probe成员为函数指针,就是在设备和驱动匹配成功的时候执行。

.disconnect成员也为函数指针,在设备和驱动关联成功后再断开执行,如拔了USB设备或卸载USB设备驱动。


更多linux内核视频教程文档资料免费领取后台私信【内核】自行获取.

简单分析USB设备驱动框架(秒懂~) - 天天要闻

简单分析USB设备驱动框架(秒懂~) - 天天要闻

简单分析USB设备驱动框架(秒懂~) - 天天要闻

科技分类资讯推荐

获巨额云计算合同!甲骨文股价创新高 - 天天要闻

获巨额云计算合同!甲骨文股价创新高

智通财经APP获悉,甲骨文(ORCL.US)表示,该公司已签署一项年收入高达300亿美元的单一云计算服务合同,这一金额已超过其当前整个云基础设施业务的规模。受该消息推动,甲骨文股价周一早盘一度上涨8.6%,创下盘中历史新高,收盘涨近4%。今年以来,甲骨文股价已累计上涨约32%。甲骨文在周一提交的一份监管文件中披露,这笔收入...
中金:运营商配合意愿亟待提升 eSIM热度有望重启 - 天天要闻

中金:运营商配合意愿亟待提升 eSIM热度有望重启

智通财经APP获悉,中金发布研报称,根据GSMA Intelligence预测,至2025年底,全球预计将有约10亿eSIM智能手机连接,2030年将增长至69亿,随着消费电子轻薄化、可穿戴设备以及物联网终端漫游需求增加,eSIM的应用有望在2025年加速。但eSIM的应用落地仍面临运营商配合意愿度不高的阻力,支持终端数量有限。eSIM卡具备小尺寸、...
网易腾讯发布暑期限玩日历:未成年人每周限玩3小时 - 天天要闻

网易腾讯发布暑期限玩日历:未成年人每周限玩3小时

随着暑期来临,未成年人网络使用需求显著上升。为防止未成年人沉迷游戏,6月30日,网易游戏、腾讯游戏分别发布了2025年暑期未成年人限玩日历(7月1日-8月31日),两家企业均采取严格时段限制措施,规则基本一致。
“闪灯即推+边推边开”!太原机场开启高效运行新模式 - 天天要闻

“闪灯即推+边推边开”!太原机场开启高效运行新模式

近日,东航MU5273航班在T2站坪顺利完成“闪灯即推+边推边开”新流程操作,这标志着航空器地面高效运行新模式在太原国际机场有限责任公司正式投入应用。资料图 据介绍,太原机场公司二跑道预计在2025年底正式投运。经模拟机测算,航空器地面滑行距离、滑行时间将显著增加。不仅直接冲击航班正常性,也将极大影响机场整体运行...