作为工程师,通常我们在开发板上开发usb device驱动比较多。比如说我们开发板通过usb连接一个usb摄像头。在这种情况下,我们的开发板中有一个usb host controller,简称UHC。开发板充当了usb host角色。这个时候我们在开发板中开发的usb 摄像头等usb设备驱动,称之为usb device驱动。

linuxusb驱动程序设计(一分钟带你了解usb)(1)

那么有没有可能使得我们的开发板作为一个usb设备呢?比如在实际应用场景中,开发板A没有网卡,开发板B有网卡。开发板A想上网,只能通过usb连接开发板B,让开发板B共享自己的网卡资源.这个时候开发板A是host角色。开发板B是device角色,它里面有usb device controller,简称UDC。这个时候很明显我们需要在开发板B开发一个驱动,使得它自己可以作为一个usb网卡设备被A识别并使用。那么,开发板B中的驱动,我们称之为usb gadget驱动。常见的usb gadget驱动有RNDIS(usb 网卡),file_storage(比如安卓手机插到电脑可以当u盘),adb(开发过安卓的应该都知道是啥)

linuxusb驱动程序设计(一分钟带你了解usb)(2)

相信大家已经明白了usb device驱动及usb gadget驱动的区别了。那么,我们平时把手机通过usb线接到电脑上面当u盘使用,我们的手机中需要usb gadget驱动还是usb device驱动呢?欢迎大家将你们的答案写在留言区。

,