USB从插上到使用所需走的路

在一个USB设备连接上电脑时,主要要经过检测和传输两个过程。其检测过程主要经历六个步骤,连接、开机、默认、地址、配置和挂机;其传输主要是应用软件使用USB主机驱动与USB设备进行数据交换。其检测过程使用控制传输,传输过程使用中断、批量和实时传输。

检测:

连接:在一个USB设备连接至USB主机系统上,但是主机系统尚未开机,也没有对从机系统供电。此时,USB从机和主机之间未有任何的检测和数据交换。

开机:主机已开机,用时主机对从机提供供电。USB的主机检测从机D-和D+上的电压,当USB从机为低速模式时,D-连接1.5K的上拉电阻;当USB从机为全速和高速模式时,D+连接1.5K的上拉电阻,USB主机检测信号线电压来确定是否有USB设别连接上。

默认:主机已确定从机工作的模式,从机和主机在默认地址交换数据。在此期间主机会发送Set-Port-Feature请求,要求集线器重置端口。主机在着期间发送Get-Port-Status来证明设别离开重置状态,当设备准备好之后响应端点0的默认管道上的控制传输,使用默认地址00h与主机通信。主机通过Get-Descriptor来了解默认管道的最大信息包的大小。

地址:对从机地址重置,主机对从机指定一个唯一的地址,在这个地址上主机与从机进行数据交换。主机控制器送出一个Set-Address要求来指定设备的一个唯一地址,新地址会持续到设备移除、重置或者系统关机。

配置:主机与从机在唯一地址上进行配置的交换,主机通过送出一个Get-Descriptor来了解新地址上设备的描述符。

传输:

传输主要分为应用软件、USB设备驱动程序、USB总线驱动程序和USB从机。

应用软件:应用软件主要负责原始数据的采集和发送,为使用者所能操作的部分。

USB设备驱动程序:USB设备驱动程序主要是连接应用软件和USB总线驱动程序,使其两部分能够通信。

USB总线驱动程序:USB总线驱动主要包括USB主控制器驱动和跟集线器驱动。主要为USB设备的管理以及USB原始数据进行配置、封装处理。

USB从机:从机主要是为主机提供数据。

对于一个普通使用者来说,USB设备就是插上,等待系统安装驱动,接下来就是正常使用了。但是作为一个开发者其系统开发不可谓不艰难。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-15 03:13:05

USB从插上到使用所需走的路的相关文章

android解锁界面,插上USB弹出打开USB存储设置界面,按HOME键/返回键直接回到launcher,而非滑动锁屏界面

1)如果将setting-->开发者选项-->USB调试  disable掉,表示当前是用户模式,锁屏界面下插上USB,AMS就会叫起UsbStorageActivity"打开USB存储设备"这个界面. 2)UsbStorageActivity界面在onCreate()中设置了如下属性: getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); if (Environment.isExte

软件定制开发,给你的idea插上腾飞的翅膀

软件定制开发,给你的idea插上腾飞的翅膀 2017互联网创业项目都有哪些?创业意识及其能力是这个时代发展的引擎,因而很多实事与理论指出知识经济的时代即创业的时代. 知识经济时代你的一个好的想法也能给你创造价值.创业就是从你的一个想法出来的. 创业的魅力也许就在于这个神秘的Idea变成现实的过程.Idea是创业成功中最核心.最关键的.最没规律可循的一个环节.当你有了一个好的idea后,你会如何去实现它呢? 这时候你就得找专业的人去帮你出谋划策,最近有一个互联网平台专门做将客户的idea变成具有商

黑客玩法,插上你的专有U盘才能开机

这个玩法的效果是这样的: 1.插上你的专有U盘,按电脑开机按钮,电脑正常启动运行: 2.如果不插专有优U盘,按电脑开机按钮,进入桌面后1秒钟电脑自动关机,无法使用.也就是说,没有优U盘将无法使用你的电脑. 下面教你如何实现上面的玩法: 第一步:在自己的U盘(假设是F盘)里,新建一个文本文件,内容可以为空,另存为"密码U盘.txt"文件. 第二步:在电脑的D盘里,新建一个文本文件,编辑该文本文件,文本文件内容如下: @echo off if not exist F:\密码U盘.txt s

QT使用WOL实现远程一键开机(局域网,需要目标电脑的主板支持,并且插上网线)

功能:让关机的电脑一键开机,需要目标电脑的主板支持,并且插上网线: 效果:相当于手动按了一下目标电脑的开关机按钮. 没啥技术含量,简单开说... 1.获取目标机MAC地址 QByteArray sMacAddr("00-1f-16-26-d5-73"); 2.封装魔法包chMagicPacket char chMacAddr[9];//应该是6个字符,但是如果写6个字符,下面sscanf_s会报错,所以写大点 char chMagicPacket[104]; const char *l

我的LG 22MP67HQ 插VGA线文字就会有阴影,而插上HDMI之后,清晰的不能再清晰了

由于公司已经搬到民众镇政府附近了,宿舍还未搬,昨天下班回到宿舍之后,就没有网了,早上一起来,担心是显卡驱动的问题,就尝试用2G网络去下载R9 系列的驱动,238MB左右,但是老是失败.... 时间一下子就到了上午10点,和王叔.同事,三个人,三辆自行车,后来上午是去老李(我应该叫李叔的)那里吃饭,中午吃的是牛肚,黄瓜炒虾,虾,大头菜皮蛋瘦肉汤,排骨,煎鱼腊肉.在下午14:00左右就出来找房子,在工作的地方范围200M的地方找房子,但是目前很少人出租房子了,特别是3房一厅的.在下午15:40就打道

装x玩法:插上你的专有U盘才能开机

玩法的效果是这样的: 1.插上你的专有U盘,按电脑开机按钮,电脑正常启动运行: 2.如果不插专有优U盘,按电脑开机按钮,进入桌面后1秒钟电脑自动关机,无法使用.也就是说,没有优U盘将无法使用你的电脑. 实现上面的玩法的步骤: 第一步: 在自己的U盘(假设是F盘)里,新建一个文本文件,内容可以为空,另存为"密码U盘.txt"文件. 第二步: 在电脑的D盘里,新建一个文本文件,编辑该文本文件,文本文件内容如下: @echo off if not exist F:\密码U盘.txt shut

XCode4.5.6,iOS6.1下测试 判断当前设备,及其联网状态等; 关于设备插上后XCode检测不出的情况的说明

目录[-] 一.判断设备 二.判断网络连接状态 三.设备不显示的解决办法 一.判断设备 01 //设备名称 02 return [UIDevice currentDevice].name; 03   04 //设备型号,只可得到是何设备,无法得到是第几代设备 05 return [UIDevice currentDevice].model; 06   07 //系统版本型号,如iPhone OS 08 return [UIDevice currentDevice].systemVersion;

How To:Linux下如何通过命令检查网卡是否插上网线

主要工具为ethtool来检查,主要关注的字段为"Link detected",注意如下的输出,其中em4实际物理上并未插上网线,而em1是插上网线的: # ethtool em4 Settings for em4: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Suppor

android 监听 USB 拔插广播消息

Java: 1 package com.example.communication; 2 3 import android.content.BroadcastReceiver; 4 import android.content.Context; 5 import android.content.Intent; 6 import android.widget.Toast; 7 8 public class USBBroadcastReceiver extends BroadcastReceiver