usb概念小结

1. 每个usb设备都有一个或多个接口(interface),每个interface都有多个端点(endpoint),每个端点通过管道(pipe)和 usb host(USB主机)控制器连接,usb host与pdo(Physical Device Object,物理设备对象)相连,pdo与fdo(Function Device Object,功能设备对象)相连。

usb设备——interface——endpoint-----pipe-----usb host——pdo——fdo

                                                                      USB设备、接口、端点、管道、USB主机



    端点是可唯一识别的USB设备的一部分,它是主机与设备间通信流的一个结束点。一系列相互独立的端点在一起构成了USB逻辑设备。每个设备有一个唯一的地 址,这个地址是在设备连上主机时由主机分配的,而设备中的每个端点在设备内部有唯一的端点号。这个端点号是在设备设计时给定的。每个端点都是一个简单的连 接点,或者支持数据流进设备,或者支持数据流出设备,两者不可兼得。

    USB管道是设备上的端点和上位机软件之间的联系,体现了主机上缓存和端点间传送数据的能力。


2. 管道有4种,分别为:

UsbdPipeTypeControl(控制管道) :
Specifies that this pipe is a control pipe.

UsbdPipeTypeIsochronous (同步传输管道):
Specifies that this pipe uses isochronous transfers.

UsbdPipeTypeBulk(批量传输管道) :
Specifies that this pipe uses bulk transfers.

UsbdPipeTypeInterrupt (中断管道):
Specifies that this pipe uses interrupt transfers. A value will be set in Interval to indicate how often this pipe is polled for new data.

3. FDO负责向上提供给应用程序接口,向下指定何种接口,发送何种管道。

4. endpoint0: (特殊的端点)负责传输设备的描述信息,负责传输pc与设备之间的控制码。


们先用控制传输来发起对U盘的访问,然后使用块 传输copy U盘里面的内容。键盘使用中断传输以便及时响应对键盘的敲击。 在usb 拓扑结构中,每一个usb device 都叫一个endpoint, 每个一个endpoint 都会有一个唯一的地址。每一个 endpoint 都会有其相应的传输类型,endpoint 0 只用来配置devie. 管道(Pipe) 管道是由下面几个成员构成: endpoint 的地址 数据传输的方向 数据传输的类型(control, interrupt, bulk, isochronous) 描述符大致可以分为四类: 设备描述符(device descriptor):     对应的结构体为 usb_config_descriptor, 里面放了有一个设备最general的信息, 比如 product ID, vendor ID. 配置描述符:     对应的结构体为usb_config_descriptor, 里面放着不同的配置模式,比如是bus powered, 还是 self-powered.  接口描述符:     正是这个描述符使得USB device 可以支持多种功能,它对应的结构体为usb_interface_descriptor. Endpoint 描述符:     对应的结构体为usb_endpoint_descriptor, 用来描述最终的endpoint. 枚举过程主要分这么几个步骤: 1.当一个usb device 插入的时候,usb hub 就会检测到状态的变化,然后它就会去唤醒khubd. 2. khubd 解析到是哪个port 有新的device 插入。 3.khubd从1到127中选择一个地址分配给它。 4, khubd 从endpoint 0 抓到它的描述符。 5.khubd 请求usb core 将这个device 绑定到合适的driver上面。 当枚举结束并且device和相应的驱动绑定之后, khubd 调用这个driver 的 probe函数。 接口、是设备的一种描述符之一,同时也是端点的集合,用于开启且保存端点。

相关文章
相关标签/搜索