USB设备数据的读写操作由总线驱动现在,我们可以直接使用总线读取到的数据,然后解析这些数据的含义、再进行相关的操作就可以了(这里需要注意的一点是USB总线驱动只提供USB设备的读写操作函数,这函数是通用的,即里面的数据的含义总线驱动并不知道)。 2、USB总线驱动分析 2.1 USB描述符的层次及定义 USB设备描述符(usb_...
usb_generic_driver 是 USB 子系统中唯一的一个设备驱动程序对象。而 USB 驱动程序则是与接口相匹配,接口是一个完成特定功能的端点的集合。 设备是如何添加到设备链表上去的? 在设备插入 USB 控制器之后,USB core 即会将设备在系统中注册,添加到 USB 设备链表上去。 USB 设备驱动程序(usb device driver)是如何...
uint8_t bLength;//Length of this descriptor.uint8_t bDescriptorType;//DEVICE descriptor type(USB_DESCRIPTOR_DEVICE). uint16_t bcdUSB;//USB Spec Release Number (BCD).uint8_t bDeviceClass;//Class code (assigned by the USB-IF). 0xFF-Vendor specific.uint8_t bDeviceSubClass;//Subclass c...
USB分为USB 主机(USB Host)和USB device(USB设备)。比如USB鼠标插入到电脑,电脑就是USB Host,鼠标就是USB device。所有的USB传输,都是从USB主机这方发起的;USB设备没有"主动"通知USB主机的能力。 2.1.3 USB的传输类型 控制传输:控制传输是双向传输,数据量通常比较小,主要指由USB总线驱动程序用来进行查询、配置...
1、在 Gadget Device 创建时,首先把 Device 加入到 udc_list 链表,然后尝试和 gadget_driver_pending_list 链表中的 Driver 进行 match(): usb_add_gadget_udc() → usb_add_gadget_udc_release() → usb_add_gadget():int usb_add_gadget(struct usb_gadget *gadget){/* (1) 将 device 加入全局链表...
(1)UHCI:Intel提供,通用主机控制接口,USB1.0/1.1; (2)OHCI:微软提供,开放主机控制接口,USB1.0/1.1; (3)EHCI:增强主机控制接口,USB2.0; 2.4 USB Device Driver USB设备驱动框架如下图所示: USB设备是由一些配置(configuration)、接口(interface)和端点(endpoint)组成,,即一个USB设备可以含有一个或多个配置,在每...
Linux USB设备驱动模型查看 1. BUS/DEV/DRV 模型 "USB接口"是逻辑上的 USB 设备,编写的 usb_driver 驱动程序,支持的是"USB 接口": USB控制器或 Hub 识别出 USB 设备后,会创建、注册 usb_device usb_device 被"driversusbcoregeneric.c" 驱动认领后,会选择、设置某个配置...
这样一对比,就能比较清晰的分析usb主机控制器驱动与usb设备驱动。 二、usb总线驱动程序分析 主机控制器中重要的数据结构: hc_driver:用于操作主机控制器的驱动,该结构体在usb_hcd 中 ohci_hcd: 是usb_hcd 结构体中的私有数据 在主机控制驱动中还是通过平台设备驱动来注册platform_device和platform_driver,然后用平台...
Linux USB 鼠标驱动程序详解 USB 总线引出两个重要的链表! 一个USB 总线引出两个重要的链表,一个为 USB 设备链表,一个为 USB 驱动链表。设备链表包含各种系统中的 USB 设备以及这些设备的所有接口,驱动链表包含 USB 设备驱动程序(usb device driver)和 USB 驱动程序(usb driver)。
PC机想访问USB总线上某个USB设备时,发出的命令都含有对应的地址(编号) USB是一种主从结构。主机叫做Host,从机叫做Device,所有的USB传输,都是从USB主机这方发起;USB设备没有"主动"通知USB主机的能力。 例子:USB鼠标滑动一下立刻产生数据,但是它没有能力通知PC机来读数据,只能被动地等得PC机来读。