初涉USB入门 - Part One Summary
来源:互联网 发布:淘宝特价秒杀群 编辑:程序博客网 时间:2024/05/18 01:44
今日刚刚拿到毕业设计的众多资料,发现自己的毕业设计牵扯到许多方面:Linux驱动程序设计;USB协议;单片机板。能同时接触这么多方面的知识确实另我很是开心,同时也感到了点压力,不知道该怎么入手,不过在复习资料中找到一份前人撰写的初涉USB让我受益匪浅。这里把文章中提到的重点内容复习一遍,提醒自己,同时方便将来查阅。
USB设备在接入主机的过程中包括三个阶段:
设备插入 --> 枚举过程 --> 数据阶段
枚举过程:主机与USB设备之间互相通信,利用STEP包达到设备识别等效果,使设备启用的过程。枚举过程中有专用的通信规范,遵从一些指定的规则,这里就不再叙述。上面提到的STEP包是专门用于枚举阶段的数据包,在后面还会简单介绍它在所有包中所处的位置。
数据阶段:主机与USB设备之间互相通信,交互数据的过程。交互数据的过程中用到的包有IN包和OUT包等。IN包用于指示后期数据传输是由USB设备到主机;OUT包用于指示后期数据传输是由主机到USB设备。也就是说IN,OUT是针对主机而言的。
下面介绍所有的USB包:
USB数据包分类:令牌包,数据包,握手包,特殊包
令牌包 包括 OUT包,IN包,STEP包等
以上许多包都已经提到其作用,包括OUT包,IN包,STEP包。下面在分别就这些包会出现的地方再做一次介绍。
一次主机与USB设备之间的对话一定要通过包的相互传递来实现,一次对话,无论发生在枚举阶段还是发生在数据阶段,都由三个阶段组成。这里的三个阶段不是USB设备接入主机的三个阶段,而是主机与USB设备之间一次交互中包含的三个阶段:
令牌阶段 --> 数据阶段 --> 握手阶段
令牌阶段:使用令牌包,即OUT包,IN包或者STEP包。这就要看这次交互处于USB设备接入主机的哪个阶段,以及主机发出什么样的命令。(从主机发出)
数据阶段:使用数据包。(从主机或USB设备发出)
握手阶段:使用握手包。(从主机或USB设备返回)
以上的所有介绍中,没有涉及对包的具体分析,即按比特位分析。这些部分的内容在将来应该有需要时会涉及到,到那时再详细记录。
摘抄:
这里捎带着说一下端点(endpoint)的概念,一般一个USB设备都会有数个端点,端点就是一个数据缓冲控制区(FIFO),每个缓冲区相当于有一个出口一个进口的池子,数据通过进口进入到池子,然后你再在固件里去用这些数据。固件往电脑写数据,也是把数据先放到池子里,然后打开出口,就可以干自己的事情,不用一个个的把数据发出了,池子的出口自动把数据流出。
一般的端口0是用来做标准请求响应用的,也就是在枚举阶段用到。我一般把端口1定义为出(OUT),端口2定义为入(IN)(注意,这个OUT和IN是相对与电脑的,也就是说OUT是数据从电脑出去到设备,IN是设备的数据进入电脑)。这些定义也是在标准请求中去告诉电脑的。
- 初涉USB入门 - Part One Summary
- 初涉USB入门 - Part Two Packets
- Windows Communication Foundation入门(Part One)
- Windows Communication Foundation入门(Part One)
- Windows Communication Foundation入门(Part One)
- Windows Communication Foundation入门(Part One)
- Summary of this part
- ONE WEEK SUMMARY--JULY
- 封装变化(Part One)
- Part One Basic Progaraming
- 虚拟语气(part one)
- Exception Handling - Part One
- Python Foundation - part one
- java_12-24-part one
- 转:Excel Web Access Web Part summary
- Computer Science Study Summary --part 3
- [Interview Summary] HTML+CSS Part I
- Self--Study Chapter One (Summary programme principle)
- 第10章 数据视图类(Item View Classes)
- Java EE 复习参考资料
- VC获取当前程序文件的路径,文件名以及路径+文件名
- delphi StringToWidestring
- 用 Cognos 中的 Data Manager 进行数据抽取
- 初涉USB入门 - Part One Summary
- jQuery 1.6发布:性能提升,同时包含破坏性的变更
- jQuery validation 1.8 with jQuery 1.6 in IE 6,7,8,9 问题解决
- 解决鼠标经过内部元素触发onmouseout事件的问题
- Source Insight 经典教程
- sed小结
- 删除运行程序本身
- 继承中应该注意的两个小问题
- Ubutun 10.04中的启动项和运行级别