USB设备架构
USB设备,分为3层:1.底层为传送和接受数据的总线接口;2.中间层处理总线和不同端点的数据传输;3.最高层由串行总线设备提供。主要研究中间层。
USB设备状态,主要研究外部可见状态。
1,连接态-->USB设备可从Host上连接或者断开。
2,加电态-->设备对电源的支持能力是通过配置描述表来反映的。
3,缺省态-->加电后尚未复位之前不应对总线相应,在接收到复位信号后,设备在缺省地址处可寻址。
4,编址态-->设备由主机分配一个唯一的地址后,就保持这个地址。
5,配置态-->在使用设备之前,设备必须要先被配置好。从设备的角度说,配置包括用一个非零值进行SetConfiguration()要求。配置会使得与之有关的结点(endpoint)被设成缺省值。
6,挂起态-->设备在检测不到总线传输时候进入挂起状态,并保持内部状态不变,包括地址和配置。
==========================================================
总线标识 (Bus Enumeration)
当USB设备接上或从USB设备移开的时候,主机启动一个被称作总线标识的过程,来标识并管理设备状态的改变。
当一个USB设备连上一个带电端口时,系统将进行以下操作:
1,设备通过状态改变通道报告主机由USB设备连上。此时USB设备处于加电状态,它所连接的端口无效。
2,主机询问此次连接含义。
3,主机在知道新设备连接上后将等待100ms以使得插上操作完成和设备电源稳定,然后主机使能端口并复位端口。
4,当发出reset信号后,端口已经被使能。USB设备此时处于缺省态,并可从VBUS获得不多于100mA电流。所有寄存器和状态被重置并对默认地址响应。
5,主机给设备分配唯一地址并使得USB设备进入编址态。
6,在设备接收唯一地址之前,其默认控制管道仍然可用默认地址寻址。主机通过读取设备描述符来得到USB设备默认管道可以使用的最大数据负载。
7,主机从设备读取配置信息要从配置0读取到配置n-1,其中n为配置个数。
8,基于读取来的配置信息和USB设备如何被使用,主机给设备一个配置值。设备进入配置态,所有于此有关的端点得到预先描述特性。USB设备可以得到描述符中要求的电量,从设备角度看,其已经就位。
===========================================================
通用USB设备操作 (Generic USB Device Operation)
所有的USB设备都支持一系列操作,这部分描述这些操作。
1,动态连接和断开
2,地址分配
3,配置。USB设备必须在配置后才能使用。Host通过读取设备的配置信息来决定设备功能。
4,数据传送。数据可能以4种方式在USB设备端点和主机之间进行通信。同一端点可在不同配置下以不同方式来传送数据,但是一旦配置选定,传送方式就决定了。
5,电源管理。USB设备供电需求在1个单元(100mA)以下直到被配置。一旦被挂起,那么无论之前是否被配置,供电需求要被降低。在配置后,USB设备可以需求5个单元(500mA)。USB可以通过设备描述符来向主机汇报本身远程唤醒能力。
6,请求处理。
7,请求错误。
===========================================================
USB设备请求
所有的USB设备通过缺省控制管道对Host的请求做出响应。这些请求通过控制传输做到,响应和响应参数通过setup包设置,Host设置包内的每个域的数值。每个setup包有8个字节。
1, bmRequestType,1个字节。表明了第二阶段的控制传输方向,如果wLength被设置为0的,方向位被忽略。USB spec 定义了一系列USB设备必须支持的USB标准请求。设备商也可以定义设备支持的请求。请求可以被引导到设备上或设备接口上或者设备的一个端口上。当指定的是接口或者某个端口的时候,wIndex指出了是哪些接口或端口。
2,bRequest,1个字节。这个域表明了特别的请求。bmRequestType中的Type位修改此域的含义。只有当Type位为0的时候bRequest域的含义是标准设备请求。
3,wValue,2个字节。这个域的内容取决于request,以用来传递不同参数给设备。
4,wIndex,2个字节。这个域的内容取决于request,以用来传递不同参数给设备。这个域通常用来指明一个端口或接口。
当用来指明端口时:
D15---D14---D13---D12---D11---D10---D9---D8---D7-------D6---D5---D4---D3---D2---D1---D0
|-------------保留,设置为0---------------------------|direction|保留,设置为0|---endpoint number---|
其中方向位设置为0的时候表示OUT,设置为1的时候表示IN,并且需要表明endpoint number。在控制管道的情况下,request设置方向位0但设备可以接收任意方向位的值。
当用来指明接口时:
D15---D14---D13---D12---D11---D10---D9---D8---D7-------D6---D5---D4---D3---D2---D1---D0
|-------------保留,设置为0---------------------------|---------------interface number---------------|
5,wLength,2个字节。这个域指明控制传输第二阶段的数据长度。方向由方向位指定,并且如果方向位为0则没有数据要传输。在输入请求下,设备可以返回小于等于wLength中的数据。在输出请求下,wLength总是指明要确切传输的数据。如果主机发送超过wLength的数据,则设备行为无定义。
USB设备架构的更多相关文章
- usb设备驱动描述,王明学learn
usb设备驱动 本章主要内容包含以下:USB总线介绍,USB协议分析,USB系统架构 一.USB总线介绍 1.1USB发展史 USB(Universal Serial Bus)通用串行总线,是一种外部 ...
- USB设备的基本概念
在终端用户看来,USB设备为主机提供了多种多样的附加功能,如文件传输,声音播放等,但对USB主机来说,它与所有USB设备的接口都是一致的.一个USB设备由3个功能模块组成:USB总线接口.USB逻辑设 ...
- 【转】USB协议架构及驱动架构
1. USB协议 1.1 USB主机系统 在USB主机系统中,通过根集线器与外部USB从机设备相连的处理芯片,称为USB主机控制器.USB主机控制器包含硬件.软件和固件一部分. 1.2 USB设备系统 ...
- 浅谈USB驱动架构 转载
去年,老师让我分析基于HD3系统芯片的WindowsCE USB驱动的可行性.USB驱动非常庞大,多个软件层次相互交错,以及各种协议,USB系统对于一般人很难理解,我对其也只是理解一个大概,下面,我对 ...
- RockBrain USB Server- 云计算虚拟化USB设备集中管理、远程共享解决方案(涉及银企直联)
RockBrain USB Server- 云计算虚拟化USB设备集中管理.远程共享解决方案(涉及银企直联) 技术需求: 1.企业员工的大量USB Key,需要将key接入USB Server虚拟池, ...
- Linux下的硬件驱动——USB设备(转载)
usb_bulk_msg函数 当对usb设备进行一次读或者写时,usb_bulk_msg 函数是非常有用的; 然而, 当你需要连续地对设备进行读/写时,建议你建立一个自己的urbs,同时将urbs 提 ...
- vmware 桌面虚拟化 horizon view 介绍(使用微软的RDP协议或vmware 专有的PCoIP协议,连接到虚拟桌面,并且可以使用本地的USB设备、本地存储)
虚拟化(一):虚拟化及vmware产品介绍 虚拟化(二):虚拟化及vmware workstation产品使用 虚拟化(三):vsphere套件的安装注意及使用 虚拟化(四):vsphere高可用功能 ...
- Linux自动共享USB设备:udev+Samba
一.概述 公司最近要我实现USB设备插入Ubuntu后,自动共享到网络上,能像Windows共享一样(如\\192.168.1.10)访问里面的内容,不需要写入权限.当时听完这需求,我这新人表示惊呆了 ...
- USB设备(移动硬盘、鼠标)掉电掉驱动的两种解决方案
症状: 当你发现"移动硬盘图标"经常无故消失,又自己出现时. 你可以把这个现象称之为"掉电" or "掉驱动". 遇到这种情况,相当不爽. ...
随机推荐
- 武汉科技大学ACM:1009: 华科版C语言程序设计教程(第二版)习题5.12
Problem Description 这天老师照例给小豪出了一道题目:老师给小豪一个字符串,让小豪将该字符串逆序输出. Input 第一行包括一个T,表示有多少组测试数据: 接下来T行,每行包括一个 ...
- 查找Mysql数据库连接jar包和对应的Driver和Url
以前写jdbc连接向来都是直接copy,对于连接数据库的jar包在哪下载,对应的Driver类是哪一个,数据库连接串怎么找等等都没有做过,今天从零开始整了一遍. 使用的数据库是Mysql 一.已安装了 ...
- java事件处理
1.ActionEven事件 文本框,按钮,菜单项,密码框,单选按钮都可以出发ActionEvent事件 使用 addActionListener(ActionListener listen1) 来注 ...
- haslayout和BFC
感谢CSS涛的分享,参考文章: (1)haslayout:http://aibusy.com/blog/?p=53 (2)BFC 神奇背后的原理:http://aibusy.com/blog/?p=8 ...
- The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. (关于jdbc)
The last packet sent successfully to the server was milliseconds ago. The driver has not received an ...
- gcc使用笔记
1.如何在gcc中传输宏定义? 参考如下红色部分,可以传入宏定义 gcc [-c|-S|-E] [-std=standard] [-g] [-pg] [-Olevel] [-Wwarn...] [-p ...
- 标签static
静态文本控件的功能比较简单,可作为显示字符串,图标,位图用.创建一个窗口可以使用成员函数: BOOL CStatic::Create( LPCTSTR lpszText, DWORD dwStyle, ...
- Lua 仿PHP的strtotime
由于工作原因,两周前开始研究Lua,因为之前的项目要由php改成Lua实现,而一些php里现成的东西,在Lua里就需要手写,于是就有了下面的代码.写的比较粗糙,权当做个记录吧. --[[ 获取时间戳 ...
- 2017-1-9css
2017-1-9css css border-image详解 http://www.360doc.com/content/14/1016/13/2792772_417403574.shtml 最简单的 ...
- 专门讲讲这个MYSQL授权当中的with grant option的作用
对象的owner将权限赋予某个用户(如:testuser1) grant select ,update on bd_corp to testuser1 [with grant option ]1.如果 ...