和菜鸟一起学linux总线驱动之初识USB系统结构

       上一篇文章中,对于USB是什么东东,想必都清楚了,她的连接方法也清楚了,那么接着学习下USB的系统结构吧。先看一下系统的拓扑结构吧。

       主机host控制器和一个根hub,然后下面可以接很多的设备,也可以继续接hub,然后hub下面还可以接设备,接下一个hub,一直往下。对于USB总线,最多只能接127个设备。

       USB的主控制器主要负责处理主机和设备之间的电气和协议层的互联。主要有OHCIUHCIusb1.0)、HCIusb2.0)。

       USB的集线器就是hub,主机就有一个自带的hub,这个称为根hub,而根hub可以接很多设备,也可以接子hub

       USB设备就是我们常说的U盘啊,USB鼠标之类的了。

       USB设备的逻辑结构由4个层次组成,分别是设备,配置,接口和端点。设备通常有一个或多个配置,配置通常有一个或多个接口,接口有零或多个端点。

       USB设备中,每个设备都可以包含一个或者多个配置,不同的配置使设备表现出不同的功能组合,配置由多个接口组成。接口由多个端点组成,代表一个基本的功能,是USB设备驱动程序控制的对象,一个功能复杂的USB设备可以具有多个接口,而接口是端点的汇集。

比如一个USB播放器,她带有视频、音频还有旋钮和按钮。那么可以有配置:音频(接口)+ 按钮(接口)+ 视频(接口) + 旋钮(接口)。其中的音频接口,视频接口,按钮接口,旋钮接口都是需要一个驱动程序来实现其功能的。

        USB设备中的唯一可以寻址的部分那便是设备端点了,她是位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据。主机和设备的通信最终作用于设备上的各个端点,她是主机和设备间通信流的一个逻辑终端。

        每个USB设备有一个唯一的地址,这个地址是在设备连上主机时,由主机分配的,而设备中的每个端点在设备内部有唯一的端点号,这个端点号是在设计设备时给定的。每个端点都是一个简单的连接点,或者支持数据流设备,或者支持其流出设备。

        在设备被枚举的时候,她必须向主机报告各个端点的特性,包括端点号,通信方向,端点支持的最大包大小,带宽要求。每个设备必须有端点0,她是用来设备枚举和对设备进行一些基本的控制功能的。除了端点0,其余的端点在设备配置之前不能与主机通信,只有向主机报告这些端点的特性并被确认后才能激活。

        有人把USB总线比喻为高速公路,收发的数据就像汽车一样,来来往往,而USB的端点,就是高速公路收费口的入口或者出口。

 

注:参照国嵌视频

原文地址:https://www.cnblogs.com/wuyida/p/6300066.html