• 和菜鸟一起学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的端点,就是高速公路收费口的入口或者出口。

     

    注:参照国嵌视频

  • 相关阅读:
    关于产品那些事
    关于“编程的本质”的探讨
    分享一款在线贝塞尔曲线调试器
    HTML、CSS、JS对unicode字符的不同处理
    HTTP Content-Disposition Explanation [ from MDN ]
    认证 (authentication) 和授权 (authorization) 的区别
    事件驱动引擎会取代多线程编程吗
    你所不知道的JSON
    都有哪些特殊而实用的的搜索引擎?
    巨头们的GitHub仓库整理
  • 原文地址:https://www.cnblogs.com/wuyida/p/6300066.html
Copyright © 2020-2023  润新知