<--------------------从USB系统架构开始记笔记-------------------------->
USB系统拓扑结构:
对于每个USB系统来说,都有一个称为Host控制器的设备,该Host控制器和一个根Hub作为一个整体。这个根Hub下可以接多级的Hub,每个Hub又可以接子Hub,每个USB设备作为一个节点接在不同级别的HUB上,每条USB总线最多可以接127个设备。
USB主控制器负责处理主机与设备之间的电气和协议层的互联。常见的USB主控制器规格有:
OHCI:主要是非PC系统上的USB芯片。
UHCI:大多是Intel和Via主板上的USB控制器芯片,他们都是USB1.1规格的。
EHCI: 是由Intel等几个厂商研发,兼容OHCI,UHCI,遵循USB2.0规范。
USB设备逻辑结构:在USB设备的逻辑组织中,包含设备,配置,接口和端点4个层次 ,设备通常有一个或多个配置,配置通常有一个或多个接口,接口有0或多个端点:
每个USB设备都可以包含一个或多个配置,不同的配置使设备表现出不同的功能组合(在探测/连接期间需从其中选定一个) ,配置由多个接口组成,在USB协议中,接口由多个端点组成,代表一个基本功能。是USB设备驱动程序控制的对象,一个功能复杂的USB设备可以具有多个接口,而接口是端口的汇集。
例:
一个USB播放器带有音频,视频功能,还有旋扭和按钮。
配置1:音频(接口)+旋扭(接口)
配置2:音频(接口)+视频(接口)+接扭(接口)
配置3:视频(接口)+旋扭(接口)
音频接口,视频接口,旋扭接口,按钮接口均需要一个驱动程序。
USB设备中唯一可寻址部分是设备端点。它是位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据。主机和设备的通讯最终作用于设备上的各个端点,它是主机与设备间通讯流的一个逻辑终端。
每个USB设备有一个唯一的地址,这个地址是在设备连上主机时,由主机分配的,而设备中的每个端点在设备内部有唯一的端点号,这个端点号是在设计设备时给定的。每个端点都是一个简单的连接点,或者支持数据流进设备,或者支持其流出设备,两者不可兼得。
基于PnP机制,设备被枚举时,它必须向主机报告各个端点的特性,包括端点号,通讯方向,端点支持的最大包大小,带宽要求等(其中端点支持的最大包大小叫做数据有效负载)。每个设备必须有端点0,它用于设备枚举和对设备进行一些基本的控制功能。除了端点0,其余的端点在设备配置之前不能与主机通信,只有向主机报告这些端点的特性并被确认后才能被激活。
当我们把USB设备插到我们的主机时,主机会自动识别出我们的USB设备类型。主机为何能自动识别出USB的设备类型:在每一个USB内部,有包含类似PCI配置寄存器这样的固定格式的数据,通过这些数据,USB主机就可以获取USB设备的类型,生产厂商等信息。这组固定格式的数据,我们就称之为USB描述符。 标准的USB设备有五种USB描述符:设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符。
一个设备只有一个设备描述符, 而一个设备描述符可以包含多个配置描述符,而一个配置描述符可以包含多个接口描述符,一个接口使用了几个端点,就有几个端点描述符。
相应的有配置描述符等在《USB总线接口开发指南.pdf》中
针对设备对系统资源需求的不同,在USB规范中规定了四种不同的数据传输方式,相应的有四个端点(等时端点,中断端点,控制端点,批量端点):
1.等时传输,该方式用来连接 对数据的正确性要求不高而对时间极为敏感的外部设备,如麦克风,音箱以及电话等。等时传输方式以固定的传输速率,连续不断地在主机与USB设备之间传输数据,在传送数据发生错误时,USB并不处理这些错误,而是继续传送新的数据。
2.中断传输,该方式传送的数据量很小,但这些数据需要及时处理,以达到实时效果,此方式主要要在键盘,鼠标,手柄等外部设备上。当USB宿主要求设备传输数据时, 中断端点会以一个固定的速率传送数据。要区别于系统中的中断,USB设备不能主动的发起传输,所有的传输只能由主机发起。中断传输理解为轮循传输更为准确。
3.控制传输,主要用来传输设备控制命令,设备状态查询及确认命令。当USB设备收到这些命令和数据后,将依据先进先出的原则,按队列方式处理到达的数据。 这种传输方式是每个USB设备都会有的。当USB插入主机时,需要用控制传输来确定USB设备类型。
4.批量传输 ,该方式用来传输要求正确无误的数据。通常打印机,扫描仪,数码相机以这种方式与主机连接。
USB包,这个包在:国嵌共享版视频\课程5(嵌入式LINUX内核驱动进阶班-下)\第7天(USB系统架构)\USB_Protocol\usb_mouse.usb,用软件“Software USBTracerTrainer”(在目录:第7天(USB系统架构)\USB协议分析软件\CATC_ALL.zip)来打开这个.usb文件,打开后,点选
,这六个键后,会显示如下内容:
USB系统拓扑结构:
![图片](https://i-blog.csdnimg.cn/blog_migrate/d8e4e814cb9f9efe67654d3ed3a6e099.jpeg)
![图片](https://i-blog.csdnimg.cn/blog_migrate/0f23ab899acc07d92b29bf46506ebbc3.jpeg)
对于每个USB系统来说,都有一个称为Host控制器的设备,该Host控制器和一个根Hub作为一个整体。这个根Hub下可以接多级的Hub,每个Hub又可以接子Hub,每个USB设备作为一个节点接在不同级别的HUB上,每条USB总线最多可以接127个设备。
USB主控制器负责处理主机与设备之间的电气和协议层的互联。常见的USB主控制器规格有:
OHCI:主要是非PC系统上的USB芯片。
UHCI:大多是Intel和Via主板上的USB控制器芯片,他们都是USB1.1规格的。
EHCI: 是由Intel等几个厂商研发,兼容OHCI,UHCI,遵循USB2.0规范。
USB设备逻辑结构:在USB设备的逻辑组织中,包含设备,配置,接口和端点4个层次 ,设备通常有一个或多个配置,配置通常有一个或多个接口,接口有0或多个端点:
![图片](https://i-blog.csdnimg.cn/blog_migrate/d18c922472b13a0a6bb651455c5c1782.jpeg)
每个USB设备都可以包含一个或多个配置,不同的配置使设备表现出不同的功能组合(在探测/连接期间需从其中选定一个) ,配置由多个接口组成,在USB协议中,接口由多个端点组成,代表一个基本功能。是USB设备驱动程序控制的对象,一个功能复杂的USB设备可以具有多个接口,而接口是端口的汇集。
例:
一个USB播放器带有音频,视频功能,还有旋扭和按钮。
配置1:音频(接口)+旋扭(接口)
配置2:音频(接口)+视频(接口)+接扭(接口)
配置3:视频(接口)+旋扭(接口)
音频接口,视频接口,旋扭接口,按钮接口均需要一个驱动程序。
USB设备中唯一可寻址部分是设备端点。它是位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据。主机和设备的通讯最终作用于设备上的各个端点,它是主机与设备间通讯流的一个逻辑终端。
每个USB设备有一个唯一的地址,这个地址是在设备连上主机时,由主机分配的,而设备中的每个端点在设备内部有唯一的端点号,这个端点号是在设计设备时给定的。每个端点都是一个简单的连接点,或者支持数据流进设备,或者支持其流出设备,两者不可兼得。
基于PnP机制,设备被枚举时,它必须向主机报告各个端点的特性,包括端点号,通讯方向,端点支持的最大包大小,带宽要求等(其中端点支持的最大包大小叫做数据有效负载)。每个设备必须有端点0,它用于设备枚举和对设备进行一些基本的控制功能。除了端点0,其余的端点在设备配置之前不能与主机通信,只有向主机报告这些端点的特性并被确认后才能被激活。
当我们把USB设备插到我们的主机时,主机会自动识别出我们的USB设备类型。主机为何能自动识别出USB的设备类型:在每一个USB内部,有包含类似PCI配置寄存器这样的固定格式的数据,通过这些数据,USB主机就可以获取USB设备的类型,生产厂商等信息。这组固定格式的数据,我们就称之为USB描述符。 标准的USB设备有五种USB描述符:设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符。
一个设备只有一个设备描述符, 而一个设备描述符可以包含多个配置描述符,而一个配置描述符可以包含多个接口描述符,一个接口使用了几个端点,就有几个端点描述符。
![图片](https://i-blog.csdnimg.cn/blog_migrate/f275b5e60d06301f0047ef05d837cd1d.jpeg)
![图片](https://i-blog.csdnimg.cn/blog_migrate/22af39b684a19d8757228f7b4ef8409f.jpeg)
相应的有配置描述符等在《USB总线接口开发指南.pdf》中
针对设备对系统资源需求的不同,在USB规范中规定了四种不同的数据传输方式,相应的有四个端点(等时端点,中断端点,控制端点,批量端点):
1.等时传输,该方式用来连接 对数据的正确性要求不高而对时间极为敏感的外部设备,如麦克风,音箱以及电话等。等时传输方式以固定的传输速率,连续不断地在主机与USB设备之间传输数据,在传送数据发生错误时,USB并不处理这些错误,而是继续传送新的数据。
2.中断传输,该方式传送的数据量很小,但这些数据需要及时处理,以达到实时效果,此方式主要要在键盘,鼠标,手柄等外部设备上。当USB宿主要求设备传输数据时, 中断端点会以一个固定的速率传送数据。要区别于系统中的中断,USB设备不能主动的发起传输,所有的传输只能由主机发起。中断传输理解为轮循传输更为准确。
3.控制传输,主要用来传输设备控制命令,设备状态查询及确认命令。当USB设备收到这些命令和数据后,将依据先进先出的原则,按队列方式处理到达的数据。 这种传输方式是每个USB设备都会有的。当USB插入主机时,需要用控制传输来确定USB设备类型。
4.批量传输 ,该方式用来传输要求正确无误的数据。通常打印机,扫描仪,数码相机以这种方式与主机连接。
USB包,这个包在:国嵌共享版视频\课程5(嵌入式LINUX内核驱动进阶班-下)\第7天(USB系统架构)\USB_Protocol\usb_mouse.usb,用软件“Software USBTracerTrainer”(在目录:第7天(USB系统架构)\USB协议分析软件\CATC_ALL.zip)来打开这个.usb文件,打开后,点选
![图片](https://i-blog.csdnimg.cn/blog_migrate/9ea3fe7a219aef02efa2ef98b8e734fd.jpeg)
![图片](https://i-blog.csdnimg.cn/blog_migrate/baa6516a008830c230bbe3a621ccc318.jpeg)
![图片](https://i-blog.csdnimg.cn/blog_migrate/85b5d323826c0c7db817fb9706f99fd1.jpeg)
上图的USB包中 ,USB的数据传递首先是基于传输( Transfer)的: Transfer分为中断传输,批量传输,同步传输,控制传输。
一次传输(