USB软硬件知识之一:综述
来源:互联网 发布:淘宝火锅底料好吃 编辑:程序博客网 时间:2024/05/18 14:11
USB软硬件知识之一:综述
在USB接口有四根线,分别是VBUS,D-,D+,GND。其中VBUS线是HOST/HUB向USB设备供电的电源线。HOST/HUB每个端口通过VBUS提供的电流最大为500mA,电压范围是4.4V-5.5V,但是这并不是意味着设备可以无条件地使用VBUS向自己提供500mA的电流。
(1)USB供电:根据USB规范,从电源方面来讲,USB设备分为自供电和总线供电两种设备类型,设备通过枚举过程的设备描述符声明自己的电源要求。自供电设备不使用HSOT/HUB的电源,而是自身有电源供应;总线供电即指设备电源来自VBUS。如果是总线供电设备,USB规范按照设备工作时吸取的电流大小又规定了两种设备:low power和high power设备,low power设备任何情况下不得吸取超过100mA的电流,high power设备在正确配置之前不得吸取超过100mA的电流,如果已经配置,任何情况下不得吸取超过500mA的电流。如果设备进入suspend状态,low power设备任何情况下不得吸取超过500uA电流,high power设备在已经正确配置并且远程唤醒功能被主机使能的情况下不得吸取超过2.5mA的电流。
(2)USB硬件结构:USB是基于令牌的总线。类似于令牌环网络或FDDI基于令牌的总线。USB主控制器广播令牌,总线上设备检测令牌中的地址是否与自身相符,通过接收或发送数据给主机来响应。USB通过支持悬挂(suspend)/恢复(resume)操作来管理USB总线电源。USB系统采用级联星型拓扑,该拓扑由三个基本部分组成:主机(Host),集线器(Hub)和功能设备。
A,主机,也称为根,根结或根Hub,它做在主板上或作为适配卡安装在计算机上,主机包含有主控制器和根集线器(Root Hub),控制着USB总线上的数据和控制信息的流动,每个USB系统只能有一个根集线器,它连接在主控制器上。
B,集线器是USB结构中的特定成分,它提供叫做端口(Port)的点将设备连接到USB总线上,同时检测连接在总线上的设备,并为这些设备提供电源管理,负责总线的故障检测和恢复。集线可为总线提供能源,亦可为自身提供能源(从外部得到电源),自身提供能源的设备可插入总线提供能源的集线器中。
C,终端功能设备。
(3)USB软件结构:每个USB只有一个主机,它包括以下几层:
A,USB总线接口:USB总线接口处理电气层与协议层的互连。从互连的角度来看,相似的总线接口由设备及主机同时给出,例如串行接口机(SIE)。USB总线接口由主控制器实现。
B,USB系统:USB系统用主控制器管理主机与USB设备间的数据传输。它与主控制器间的接口依赖于主控制器的硬件定义。同时,USB系统也负责管理USB资源,例如带宽和总线能量,这使客户访问USB成为可能。USB系统还有三个基本组件:
1,主控制器驱动程序(HCD):这可把不同主控制器设备映射到USB系统中。HCD与USB之间的接口叫HCDI,特定的HCDI由支持不同主控制器的操作系统定义,通用主控制器驱动器(UHCD)处于软结构的最底层,由它来管理和控制主控制器。UHCD实现了与USB主控制器通信和控制USB主控制器,并且它对系统软件的其他部分是隐蔽的。系统软件中的最高层通过UHCD的软件接口与主控制器通信。
2,USB驱动程序(USBD)它在UHCD驱动器之上,它提供驱动器级的接口,满足现有设备驱动器设计的要求。USBD以I/O请求包(IRPs)的形式提供数据传输架构,它由通过特定管道(Pipe)传输数据的需求组成。此外,USBD使客户端出现设备的一个抽象,以便于抽象和管理。作为抽象的一部分,USBD拥有缺省的管道。通过它可以访问所有的USB设备以进行标准的USB控制。该缺省管道描述了一条USBD和USB设备间通信的逻辑通道。
3,主机软件:在某些操作系统中,没有提供USB系统软件。这些软件本来是用于向设备驱动程序提供配置信息和装载结构的。在这些操作系统中,设备驱动程序将应用提供的接口而不是直接访问USBDI(USB驱动程序接口)结构。
C,USB客户软件:它是位于软件结构的最高层,负责处理特定USB设备驱动器。客户程序层描述所有直接作用于设备的软件入口。当设备被系统检测到后,这些客户程序将直接作用于外围硬件。这个共享的特性将USB系统软件置于客户和它的设备之间,这就要根据USBD在客户端形成的设备映像由客户程序对它进行处理。
(4)USB数据流传输:主控制器负责主机和USB设备间数据流的传输。这些传输数据被当作连续的比特流。每个设备提供了一个或多个可以与客户程序通信的接口,每个接口由0个或多个管道组成,它们分别独立地在客户程序和设备的特定终端间传输数据。USBD为主机软件的现实需求建立了接口和管道,当提出配置请求时,主控制器根据主机软件提供的参数提供服务。
USB支持四种基本的数据传输模式:控制传输,等时传输,中断传输及数据块传输。每种传输模式应用到具有相同名字的终端,则具有不同的性质。
A,控制传输类型:支持外设与主机之间的控制,状态,配置等信息的传输,为外设与主机之间提供一个控制通道。每种外设都支持控制传输类型,这样主机与外设之间就可以传送配置和命令/状态信息。
B,等时(lsochronous)传输类型:支持有周期性,有限的时延和带宽且数据传输速率不变的外设与主机间的数据传输。该类型无差错校验,故不能保证正确的数据传输,支持像计算机-电话集成系统(CTI)和音频系统与主机的数据传输。
C,中断传输类型:支持像游戏手柄,鼠标和键盘等输入设备,这些设备与主机间数据传输量小,无周期性,但对响应时间敏感,要求马上响应。
D,数据块(Bulk)传输类型:支持打印机,扫描仪,数码相机等外设,这些外设与主机间传输的数据量大,USB在满足带宽的情况下才进行该类型的数据传输。
(5)枚举过程
当设备连接到主机时,按照以下顺序进行枚举:
1. 连接了设备的 HUB 在 HOST 查询其状态改变端点时返回对应的 bitmap,告知HOST 某个PORT状态发生了改变。
2. 主机向 HUB 查询该PORT的状态,得知有设备连接,并知道了该设备的基本特性。
3. 主机等待(至少 100mS)设备上电稳定,然后向 HUB 发送请求,复位并使能该PORT。
4. HUB执行PORT复位操作,复位完成后该PORT就使能了。现在设备进入到defalut状态,可以从Vbus获取不超过 100mA 的电流。主机可以通过 0地址与其通讯。
5. 主机通过0地址向该设备发送get_device_descriptor标准请求,获取设备的描述符。
6. 主机再次向 HUB 发送请求,复位该PORT。
7. 主机通过标准请求 set_address给设备分配地址。
8. 主机通过新地址向设备发送 get_device_descriptor标准请求,获取设备的描述符。
9. 主机通过新地址向设备发送其他 get_configuration请求,获取设备的配置描述符。
10. 根据配置信息,主机选择合适配置,通过 set_configuration请求对设备而进行配置。这时设备方可正常使用。
(6) 编码方式
USB标准采用NRZI方式(翻转不归零制)对数据进行编码。翻转不归零制(non-return to zero,inverted),电平保持时传送逻辑1,电平翻转时传送逻辑0。如下:
原文地址:http://fanqiang.chinaunix.net/adm/equip/2001-06-21/1610.shtml
- USB软硬件知识之一:综述
- USB软硬件知识之一:综述
- USB软硬件知识之五:WINCE USB设备驱动程序导读
- USB软硬件知识之五:WINCE USB设备驱动程序导读
- USB软硬件知识之二:体系结构和元素
- USB软硬件知识之三:数据流和协议规范
- 项目管理综述之一
- HEVC综述之一
- OCS2007R2部署之一软硬件环境准备
- Arduino学习之一——软硬件准备
- USB知识
- 【知识图谱】综述
- 关于STM32软硬件兼容性相关的知识
- Netty源码阅读之一:综述
- 软件工程知识体系指南综述*
- 知识图谱构建技术综述
- 综述 | 知识图谱发展概述
- 知识图谱构建技术综述
- java中的权限修饰
- leetCode # Convert Sorted List to Binary Search Tree
- 关于设计模式
- uva 1351 区间dp
- javaScript实现动态取得不同的验证码
- USB软硬件知识之一:综述
- [Android][转]Android多线程下安全访问数据库
- bootstrap加载model以及dataTable按钮操作
- maven编码 gbk 的不可映射字符
- 参数寻优:启发式搜索方法
- UI_UIViewController_视图控制器(VC)
- Mysql 连接url中useUnicode=true&characterEncoding=UTF-8 的作用
- 初学python,正则
- 判断带头结点的单链表中是否有环