USB驱动详解Word文件下载.docx
- 文档编号:15143129
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:29
- 大小:38.24KB
USB驱动详解Word文件下载.docx
《USB驱动详解Word文件下载.docx》由会员分享,可在线阅读,更多相关《USB驱动详解Word文件下载.docx(29页珍藏版)》请在冰豆网上搜索。
2.usb系统的组成部分
usb系统一般由三个部分组成,主机,一个或多个usbhub,以及与之些hub连接的usb设备。
(1)主机
在任何的usb系统中仅有一个主机,主机系统中的usb接口即上图中的主机控制器,主机控制器可由硬件,软件或固件组成。
主机主要负责:
a.检测usb设备的连接与拆除
b.管理主机与usb设备之间的控制流
c.管理主机与usb设备之间的数据流
d.收集状态和活动的统计
e.为连接的usb设备提供电源
(2)usb设备
所有的usb设备都是通过地址来存取的,这个地址在连接或枚举时分配。
usb设备对usb系统来说是端点的集合,一组端点实现一个接口。
设备端点是usb设备中唯一可寻址的部分。
它是主机与设备之间通信流的结束点。
一系列的相互独立的端点构成了usb逻辑设备。
每个端点支持流进设备或者是流出设备。
主机与设备端点上的usb数据传输是通过管道的方式。
(3)hub
所有的usbdevice都连接在hub端口上。
3.usb传输模式
(1)控制传输模式(Control)
控制传输模式支持双向传输,用来处理从usb主机端口到usb设备端口的数据传输,用于控制指令,设备状态查询以及确认命令。
(2)等时传输方式(lsochronous
)
等时传输是一种周期性的连续性的意向传输模式,通常用于对时间有着密切关系的信息的传输,对准确性要求不高,但对时间要求极为敏感的设备,如视频,音频的传输。
(3)中断传输模式(Interrupt)
中断传输模式用于非周期性的,自然发生的,数据量小的传输,数据传输的方向是从设备到主机。
如usb键盘和鼠标
(4)批量传输模式(bulk)
批量传输模式是一种单向的,用于大量数据传输的模式,该方式用来传输正确无误的数据。
通常打印机,扫描仪,数码相机以这种方式与主机连接
4.usb设备组成
(1)一个usb设备由可以有一个或多个配置
(2)一个配置通常可以有一个或多个接口
(3)一个接口通常可以有一个或多个端点
通常所尽的usb设备驱动是指接口驱动,即一个接口对应一个驱动。
所以Linuxusb设备有四大描述符,分别为设备描述符,配置描述符,接口描述符,端点描述符。
下面看一个这几个描述符的相关数据结构:
structusb_device_descriptor
{
_u8bLength;
//此描述符的字节数
_u8
bDescriptorType;
//描述符的种类为设备
_u16bcdUSB;
//此设备与描述符兼容的usb设备说明版本号(BCD码)
bDeviceClass;
//设备类码
bDeviceSubClass;
//设备子类码
bDeviceProtocol;
//协议码
bMaxPacketSize0;
//端点0的最大包大小
_u16idVendor;
//厂商标志
_u16
idProduct;
//产品标志
_u16bcdDevice;
//设备发行号
iManufacturer;
//描述厂商的字串索引
iProduct;
//描述产品信息的字串索引
iSerialNumber;
//描述设备序列号信息的字串索引
bNumConfigurations;
//此设备支持的配置数
}_attribute_((packed));
设备类码的典型值如下:
#defineUSB_CLASS_PER_INTERFACE0
#defineUSB_CLAS_AUDIO
1
//声音设备
#defineUSB_CLASS_COMM2
//
调制解调器,网卡,ISDN连接
#defineUSB_CLASS_HID
3
//HID设备,如鼠标,键盘
#defineUSB_CLASS_PHYSICAL5//物理设备
#defineUSB_CLASS_STILL_IMAGE6//静止图像捕捉设备
#defineUSB_CLASS_PRINTER7//打印机
#defineUSB_CLASS_MASS_STORAGE//8批量存储设备
#defineUSB_CLASS_HUB9
//USBHUBS
#defineUSB_CLASS_CSCID
0x0B
//智能卡
#defineUSB_CLASS_VIDEO0X0E//视频设备,如网络摄像头
#defineUSB_CLASS_VENDOR_SPEC0xFF//厂商自定义的设备
structusb_config_descriptor{
_u8bLength;
//此描述符的字节数
_u8bDescriptorType;
//配置描述符类型
_u16wTotalLength;
//此配置信息的总长(包括配置,接口,端点和设备类型及厂商定义的描述符)
_u8bNumInterfaces;
//此配置所支持的接口数
_u8bConfigurationValue;
//在setConfiguration()请求中用作参数来选定此配置
_u8iConfiguration;
//描述此配置的字串描述符索引
_u8bmAttributes;
//电源配置特性
_u8bMaxpowe;
r//此配置下的总线电源耗电量
}_attribute_((packed));
配置描述符给出了usb设备配置信息,以及此配置下的接口数。
每个接口可能的独立操作。
structusb_interface_descriptor{
//接口描述符类
_u8bInterfacNumber;
//接口号,当前配置所支持的接口数组索引,从0开始
_u8bNumEndpoints;
//此接口用的端点数量,如果是0,说明此接口只有缺省控制通道
_u8bAlernateSetting;
//可选设备的索引值
_u8bInterfaceClass;
//类值,0值作为将来保留使用如果是0FFH,此接口由厂商说明
_u8bInterfaceSubClass;
//子类码
_u8bInterfaceProtocol;
//协议码
_u8iInterface;
//描述此接口的字串描述符索引
structusb_endpoint_descriptor{
//端点描述符类
_u8bEndpointAddress;
此描述符所描述的端点的地址
_u8bmAtrributes;
//所指定的端点的特性,如果是00=控制传送,01=等时传送,10=批传送,11=中断传送
_u8wMaxPacketSize;
//当前配置下端点能够发送与接收的最大数据包大小
_u8bInterval;
//轮询数据传送端点的时间间隙
_u8bRefresh
_u8bSynchAddress
以上给出了usb中的设备描述符,配置描述符,接口描述符和端点描述符。
5.usb设备驱动的几个重要的数据结构
usb_driver,usb_device,usb_bus.
/**
788*stru
ct
usb_driver
-identifies
U
SBinterfacedriverto
u
sbcore
789*@name:
Thedrivernameshou
ldbe
niqu
eamong
SBdrivers,
790*
andshou
ldnormallybethesameasthemodu
lename.
791*@probe:
Calledtoseeifthedriveriswillingtomanageaparticu
lar
792*
interfaceonadevice.
Ifitis,proberetu
rnszeroand
ses
793*
sb_set_intfdata()toassociatedriver-specificdatawiththe
794*
interface.
Itmayalso
se
sb_set_interface()tospecifythe
795*
appropriatealtsetting.
If
nwillingtomanagetheinterface,
796*
retu
rn-ENODEV,ifgenu
ineIOerrorsoccu
red,anappropriate
797*
negativeerrnovalu
e.
798*@disconnect:
Calledwhentheinterfaceisnolongeraccessible,
su
ally
799*
becau
seitsdevicehasbeen(orisbeing)disconnectedorthe
800*
drivermodu
leisbeing
nloaded.
801*@u
nlocked_ioctl:
sedfordriversthatwanttotalkto
serspacethrou
gh
802*
the"
sbfs"
filesystem.
Thisletsdevicesprovidewaysto
803*
exposeinformationto
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- USB 驱动 详解