USB子系统学习之基础篇一(相关术语及设备)

搞好linux usb设备驱动,吃尽linux设备都不怕 --写在前面

话说基础要打牢,莫要闲扯蛋,那好本节的usb基础入门学习,咱们就不打岔了。请听我慢慢绕来----

蛋疼的术语usb设备基础

usb设备是非常复杂的,它由许多不同的逻辑单元组成,这些逻辑单元是设备 (device)、功能(function)、配置 (configration) 、接口 (interfaces) 和端点 (End Points)。

1.设备与功能

device可以是连接到USB总线上的任何东西,比如摄像头、U盘等等。而每一个设备,又可能由多个功能单元组成,从而提供多个功能 (function) 。 每个功能单元,都可能有各自的驱动。

2.配置

设备通常具有一个或者更多的配置。

一个usb设备可以有多个配置,而且可以在配置之间切换以改变设备的状态。例如,一些允许下载固件到其他设备包含多个配置以完成这个工作,而一个时刻只能激活一个配置。Linux对多个配置的usb设备处理的不是很好,不过这种情况很少发生。

3.接口

配置经常具有一个或者更多的接口。

usb接口本身被捆绑成为配置。usb接口只处理一种usb逻辑连接,例如鼠标,键盘或者音频流。一些usb设备具有多个接口,例如usb扬声器可以包括两个接口:一个usb键盘用于按键和一个usb音频流。因为一个usb接口代表了一个基本功能,而每个usb驱动程序控制一个接口,因此,以扬声器为例,Linux需要两个不同的驱动程序来处理一个硬件设备。

4.端点

接口没有或者有一个以上的端点。

usb端点被捆绑成接口。usb通信最基本的形式是通过端点。usb端点只能往一个方向传送数据,从主机到设备(称为输出端点)或者从设备到主机(称为输入端点)。端点可以看作是单向的管道。

 

端点的四种传输模式

控制传输:

控制传输用来在对设备进行配置的时候,传输控制信息, 占用的带宽较小。 该过程中控制信息通过预先定义的命令 (Commands) 来表示,这些命令包括 GET_STATUS, SET_INTERFACE 等等, 这些命令可以在 USB 标准中查到。 Linux 内核代码中,这些命令都是预先定义的,以 USB_REQ_ 开头的变量, 位于 include/usb/ch9.h 中。 例如:

/*

 * Standard requests, for the bRequest field of a SETUP packet.

 *

 * These are qualified by the bRequestType field, so that for example

 * TYPE_CLASS or TYPE_VENDOR specific feature flags could be retrieved

 * by a GET_STATUS request.

 */

#define USB_REQ_GET_STATUS      0x00

#define USB_REQ_CLEAR_FEATURE       0x01

#define USB_REQ_SET_FEATURE     0x03

#define USB_REQ_SET_ADDRESS     0x05

#define USB_REQ_GET_DESCRIPTOR      0x06

#define USB_REQ_SET_DESCRIPTOR      0x07

USB Standard 中仅定义了所有设备都需要支持的的命令的最小集, 在此之外,厂商还可以根据自己的设备来自行添加所需的命令。

批量传输 (Bulk transfer:)

批量传输一般用于数据传输,该传输可能会占用所有的带宽。这种操作下,数据的传输必需在由总线保证的安全情况下进行, 换句话说, 一块数据必需不变地传输到目的设备上。 U 盘和扫描仪等设备都大量的使用批量传输。

中断传输 (Interrupt transfer)

中断传输与批量传输类似,但是它会定期的发生。两次中断传输的间隔,在一定的范围内,可以由驱动自行设置。

等时传输 (Isochronous transfer)

等时传输是几种传输模式中比较特殊的一种。这种模式下,数据的传输采用了一个固定的、预定义的带宽。该传输适用于需要持续的数据流,同时可以容忍偶尔的数据丢失的情况下, 比如摄像头。

 

资料准备

一个设备,一本经书,请准备好usb spec。usb系类讲解使用2.6.32.21kermel。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值