linux如何发现和加载对应的USB对应的设备驱动 1.整体流程 加载USB设备驱动-->注册USB设备(注册的USB设备结构体包含了USB设备的vender ID和product ID) USB设备插入后,匹配到vendor ID和product ID,即调用改USB注册结构里的probe函数,开始和USB设备进行通信。 2.USB设备结构体 static struct usb_driver test_usb_driver={ .OWNER = THIS_MODULE, .name = "test USB device", .id_table = test_usb_table_id, .probe = test_usb_probe, .disconnect = test_usb_disconnect }; 3.USB设备table ID static struct usb_device_id test_usb_table_id={ {USB_DEVICE(TEST_USB_VENDOR_ID,TEST_USB_PRODUCT_ID)}; {} };

扩展: usb设备table ID对应usb_device_id i2c设备table ID对应i2c_device_id

usb设备的table id保存在USB设备内,在作为device从设备,插入host(主设备)后,host通过端口0从usb设备中读出来。 i2c设备则是定义在device tree里,kernel启动后,遍历device tree,加载对应的i2c设备驱动。