我在看USB驱动,有一个问题很是迷茫,而且看代码也觉得没找到答案。
描述:
以 USB鼠标为例子:
static struct usb_driver usb_mouse_driver = {
.name = "usbmouse",
.probe = usb_mouse_probe,
.disconnect = usb_mouse_disconnect,
.id_table = usb_mouse_id_table,
};
但是我一直比较纳闷,我查了代码,也没有见到有哪个地方与这个usb mouse 有匹配的地方,既然没有为什么当插入鼠标的时候,就能知道是对于的是这个驱动呢而不是去调用其他的驱动呢??
看了 enum 也没看出个道来啊。 怎么回事
------解决方案--------------------
你需要看一下usb的设备描述符,各种设备都是通过描述符来进行枚举的!
你百度一下“usb设备描述符”就明白了!
------解决方案--------------------
在硬件接入时,系统会收到硬件的描述符,系统根据描述符中的PID和UID查找到相应的驱动,如果有多个PID和UID都符合的,系统会让你选择。