主机 ↓ 客户软件 USB 系统软件 USB 主机控制器 实际通信流 逻辑通信流 图4一3主机的组成 USB主机在USB系统中是一个起协调作用的实体,它不仅占有特殊的物理位置,而且对于 USB以及连到USB上的设备来说,还负有特殊责任。主机控制所有的对USB的访问。一个 USB设备想要访问总线必须由主机给予它使用权。主机还负责监督USB的拓朴结构。 关于主机和它的任务的更详细、更彻底的描述,请见第9章。 4.2.2USB设备 一个USB设备的逻辑结构如图4.4所示,包括 ·USB总线接口 ·USB逻辑设备 ·应用层 物理设备 应用 USB 逻辑设备
主机 实际通信流 逻辑通信流 图 4 3 主机的组成 USB 主机在 USB 系统中是一个起协调作用的实体 它不仅占有特殊的物理位置 而且对于 USB 以及连到 USB 上的设备来说 还负有特殊责任 主机控制所有的对 USB 的访问 一个 USB 设备想要访问总线必须由主机给予它使用权 主机还负责监督 USB 的拓朴结构 关于主机和它的任务的更详细 更彻底的描述 请见第 9 章 4.2.2 USB 设备 一个 USB 设备的逻辑结构如图 4.4 所示 包括 USB 总线接口 USB 逻辑设备 应用层 物理设备 客户软件 USB 系统软件 USB 主机控制器 USB 逻辑设备 应用
USB 总线接口 实际通信流 逻辑通信流 图4-4物理设备组成 USB设备用于向主机提供一些额外的功能。USB设备提供的功能是多种多样的,但面向主 机的接口却是一致的。所以,对于所有这些设备,主机可以用同样的方式来管理它们与USB 有关的部分。 为了帮助主机辨认及确定SB设备,这些设备本身需要提供用于确认的信息。在某一些 方面的信息,所有设备都是一样的:而另一些方面的信息,由这些设备具体的功能决定。 信息的具体格式是不定的,由设备所处的设备级决定。 对USB设备更完备的描述,见第8章。 4.2.3总线的物理拓朴结构 USB系统中的设备与主机的连接方式采用的是星形连接,如图4-5。 主机 设备 根HUB 设备 复合设备 HUB HUB 设备 设备 设备 设备 图4一5USB物理总线的拓扑 图中的Hub是一类特殊的USB设备,它是一组USB的连接点,主机中有一个被嵌入的Hub 叫根Hub(root Hub)。主机通过根ub提供若干个连接点。为了防止环状连接,采用星形连 接来体现层次性,如图4-5。这种连接的形状很像一棵树。 用于提供具体功能的设备叫应用设备。许多不同功能的设备放在一起被看作一个整体, 叫包。例如,键盘和轨迹球可以被视作一个整体,在它的内部,提供具体功能的设备被永 久地 接到Hub上,而这个Hub被接到USB上。所有这些设备及这个Hub被看作一个复合设备, 而这个Hub又被看作这个复合设备的内部ub。在主机看来,这个复合设备和一个带着若干 设备的单独Hb是一样的。图中也标出了一个复合设备。 4.2.4总线逻辑拓朴结构 在物理结构上,设备通过Hub连到主机上。但在逻辑上,主机是直接与各个逻辑设备通 信的,就好像它们是直接被连到主机上一样。这个逻辑关系如图4-6所示。与之对应的物
复合设备 实际通信流 USB 总线接口 逻辑通信流 图 4-4 物理设备组成 USB 设备用于向主机提供一些额外的功能 USB 设备提供的功能是多种多样的 但面向主 机的接口却是一致的 所以 对于所有这些设备 主机可以用同样的方式来管理它们与 USB 有关的部分 为了帮助主机辨认及确定 USB 设备 这些设备本身需要提供用于确认的信息 在某一些 方面的信息 所有设备都是一样的 而另一些方面的信息 由这些设备具体的功能决定 信息的具体格式是不定的 由设备所处的设备级决定 对 USB 设备更完备的描述 见第 8 章 4 2 3 总线的物理拓朴结构 USB 系统中的设备与主机的连接方式采用的是星形连接 如图 4-5 设备 根 HUB 设备 主机 HUB HUB 设备 设备 设备 设备 图 4—5 USB 物理总线的拓扑 图中的 Hub 是一类特殊的 USB 设备 它是一组 USB 的连接点 主机中有一个被嵌入的 Hub 叫根 Hub(root Hub) 主机通过根 Hub 提供若干个连接点 为了防止环状连接 采用星形连 接来体现层次性 如图 4-5 这种连接的形状很像一棵树 用于提供具体功能的设备叫应用设备 许多不同功能的设备放在一起被看作一个整体 叫包 例如 键盘和轨迹球可以被视作一个整体 在它的内部 提供具体功能的设备被永 久地 接到 Hub 上 而这个 Hub 被接到 USB 上 所有这些设备及这个 Hub 被看作一个复合设备 而这个 Hub 又被看作这个复合设备的内部 Hub 在主机看来 这个复合设备和一个带着若干 设备的单独 Hub 是一样的 图中也标出了一个复合设备 4.2.4 总线逻辑拓朴结构 在物理结构上 设备通过 Hub 连到主机上 但在逻辑上 主机是直接与各个逻辑设备通 信的 就好像它们是直接被连到主机上一样 这个逻辑关系如图 4-6 所示 与之对应的物
理结构就是图4-5中的结构。b也是逻辑设备,但在图4-6中,为了简化起见,未被画出, 虽然USB系统中的工作都是从逻辑角度来看待的,但主机必须对物理结构有个了解。例如, 在处理ub被移去的情况时,当一个ub被移出,通过它与主机相连的设备也应一起被移 去,这是由其物理结构决定的。关于ub的更详细的讨论在第10章。 逻辑设备 主机 逻辑设备 逻辑设备 逻辑设备 G逻辑设 图4一6USB逻辑总线的拓扑 4.2.5客户软件层与应用层的关系 USB系统的物理上、逻辑上的拓朴结构反映了总线的共享性。操纵USB应用设备的客户软 件只关心设备上与它相关的接口,客户软件必须通过USB软件编程接口来操纵应用设备。 这与另一些总线如PCL,ELSA,PCMUA等不同,这些总线是直接访问内存或I/0的。在运行 中,客户软件必须独立于USB上的其它设备。这样,设备和客户软件的设计者就可以只关 心该设备与主机硬件的相互作用和主机软件的相互作用的细节问题。图4-7说明了在图4-6 的逻辑结构下,一个设备设计者看到的客户软件与相应应用的关系的视图。 客户软件 客户软件 客户软件 应用 应用 应用 图4-7客户软件和应用间的关系 4.3USB通信流 USB是为主机软件和它的USB应用设备间的通信服务的,对客户与应用间不同的交互,USB 设备对数据流有不同的要求。USB为此提供了更好的overal1总线使用,它允许各种不同的 数据流相互独立地进入一个SB设备。每种通信流都采取了某种总线访问方法来完成主机 上的软件与设备之间的通信。每个通信都在设备上的某个端点结束。不同设备的不同端点 用于区分不同的通信流。 图4-8是图4-2的扩充,它更详尽地描述了SB系统,支持了逻辑设备层和应用层间的 通信。实际的通信流要经过好几个接口边界,从第5章到第7章,刻画了机械上、电气上 以及协议上的USB接口的定义。第8章刻划了USB设备的编程接口。通过此接口,可从主 机侧对USB设备进行控制,第9章介绍了两个主机侧的通信接口: ·主机控制器的驱动程序(HCD):它位于USB主机控制器与USB系统软件之间。主机控制 器可以有一系列不同的实现,而系统软件独立于任何一个具体实现。一个驱动程序可以支 持不同的控制器,而不必特别了解这个具体的控制器。一个USB控制器的实现者必须提供 个支持它自己的控制器的主机控制器驱动器(HCD)实现
理结构就是图 4-5 中的结构 Hub 也是逻辑设备 但在图 4-6 中 为了简化起见 未被画出 虽然 USB 系统中的工作都是从逻辑角度来看待的 但主机必须对物理结构有个了解 例如 在处理 Hub 被移去的情况时 当一个 Hub 被移出 通过它与主机相连的设备也应一起被移 去 这是由其物理结构决定的 关于 Hub 的更详细的讨论在第 10 章 逻辑设备 主机 逻辑设备 逻辑设备 逻辑设备 逻辑设备 图 4—6 USB 逻辑总线的拓扑 4.2.5 客户软件层与应用层的关系 USB 系统的物理上 逻辑上的拓朴结构反映了总线的共享性 操纵 USB 应用设备的客户软 件只关心设备上与它相关的接口 客户软件必须通过 USB 软件编程接口来操纵应用设备 这与另一些总线如 PCL ELSA PCMUA 等不同 这些总线是直接访问内存或 I/O 的 在运行 中 客户软件必须独立于 USB 上的其它设备 这样 设备和客户软件的设计者就可以只关 心该设备与主机硬件的相互作用和主机软件的相互作用的细节问题 图 4-7 说明了在图 4-6 的逻辑结构下 一个设备设计者看到的客户软件与相应应用的关系的视图 客户软件 客户软件 客户软件 应用 应用 应用 图 4-7 客户软件和应用间的关系 4.3 USB 通信流 USB 是为主机软件和它的 USB 应用设备间的通信服务的 对客户与应用间不同的交互 USB 设备对数据流有不同的要求 USB 为此提供了更好的 overall 总线使用 它允许各种不同的 数据流相互独立地进入一个 USB 设备 每种通信流都采取了某种总线访问方法来完成主机 上的软件与设备之间的通信 每个通信都在设备上的某个端点结束 不同设备的不同端点 用于区分不同的通信流 图 4-8 是图 4-2 的扩充 它更详尽地描述了 USB 系统 支持了逻辑设备层和应用层间的 通信 实际的通信流要经过好几个接口边界 从第 5 章到第 7 章 刻画了机械上 电气上 以及协议上的 USB 接口的定义 第 8 章刻划了 USB 设备的编程接口 通过此接口 可从主 机侧对 USB 设备进行控制 第 9 章介绍了两个主机侧的通信接口 主机控制器的驱动程序(HCD) 它位于 USB 主机控制器与 USB 系统软件之间 主机控制 器可以有一系列不同的实现 而系统软件独立于任何一个具体实现 一个驱动程序可以支 持不同的控制器 而不必特别了解这个具体的控制器 一个 USB 控制器的实现者必须提供 一个支持它自己的控制器的主机控制器驱动器 HCD 实现
·USB驱动程序(USBD):USB系统软件与客户软件之间的接口,提供给客户软件一些方便 的使用USB设备的功能。 一个USB逻辑设备对USB系统来说就是一个端点集合。端点可以根据它们实现的接口来 分类。USB系统软件通过一个缺省的控制通道来管理设备。而客户软件用通道束管理接口。 通道束的一端为端点,一端为缓冲区。客户软件要求通信数据在主机上的一个缓冲和USB 设备上 的一个端点之间进行。主机控制器或USB设备(取决于数据传送方向)将数据打包后在USB 上传。由主机控制器(C)协调何时用总线访问在SB上传递数据。 主机 连接 物理设 备 应用 Client SW 接口 管理一个接口 接口的 到一个接! 集合 口的通道↓ 束 与接口 无 缓冲 没有USB 有关 USB格式 格式 USB USB System SW I到0号卡点的 端点 管理设备 逻辑设备 0 端点的集合 缺省通 事务 JSB帧格式 每个端 USB帧 USB 的数据 点的数 结构的 」设备 必 数据 (第 / USB USB 9章) 主机 主机 USB帧格式 接口 USB总线接口 控制 (第10章1 的数据 都 SIE USB线路 SIE 事务 机械的, 通道:两个水平实体之间连接 电气的, 的抽象。 协议 数据传递机制 (第6,7,8章) 被传递的数据的与USB相关的形式 图4-8USB主机/设备的细节图
USB 驱动程序(USBD) USB 系统软件与客户软件之间的接口 提供给客户软件一些方便 的使用 USB 设备的功能 一个 USB 逻辑设备对 USB 系统来说就是一个端点集合 端点可以根据它们实现的接口来 分类 USB 系统软件通过一个缺省的控制通道来管理设备 而客户软件用通道束管理接口 通道束的一端为端点 一端为缓冲区 客户软件要求通信数据在主机上的一个缓冲和 USB 设备上 的一个端点之间进行 主机控制器或 USB 设备(取决于数据传送方向)将数据打包后在 USB 上传 由主机控制器(HC)协调何时用总线访问在 USB 上传递数据 主机 连接 物理设 备 到一个接 口的通道 束 与接口 无 缓冲 没有USB 有关 USB格式 格式 到 0 号端点的 缺省通道 事务 USB 帧格式 每个端 USB 帧 的数据 点的数 结构的 据 数据 USB 主机 第 10 章 USB 线路 Client SW 管理一个接口 USB System SW 管理设备 USB USB 帧格式 接口 的数据 事务 主 机 控 制 器 SIE 应用 接口的 集合 接 口 X USB 逻辑设备 端点的集合 端点 0 USB 总线接口 SIE USB 设备 第 9 章 机械的 通道 两个水平实体之间连接 电气的 的抽象 协议 数据传递机制 第 6 7 8 章 被传递的数据的与 USB 相关的形式 图 4-8 USB 主机/设备的细节图
图4-9说明了数据如何在主机侧中的内存缓冲和设备中的端点中传送。在后面,将逐步 介 绍端点、通道和通信流。 主机上的软件通过一系列的通信流与逻辑设备进行通信。这一系列的通信流是由USB设 备 的软件和硬件设计者选择的,使设备能传送由USB提供的字符。 主机 客户软件 缓冲区 通道 通信流 端点 USB逻辑设备 界面 图4-9USB通信流 4.3.1设备端点 一个端点是一个可唯一识别的USB设备的Portion,它是主机与设备间通信流的一个结束 点。一系列相互独立的端点在一起构成了USB逻辑设备。每个逻辑设备有一个唯一的地址, 这个地址是在设备连上主机时,由主机分配的,而设备中的每个端点在设备内部有唯一的 端点号。这个端点号是在设备设计时被给定的。每个端点都是一个简单的连接点,或者支 持数据流进设备,或者支持其流出设备,两者不可得兼。 一个端点的特性决定了它与客户软件进行的传送的类型。一个端点有以下特性: ·端点的总线访问频率要求 ·端点的总线延迟要求 ·端点的带宽要求 ·端点的端点号 ·对错误处理的要求 ·端点能接收或发送的包的最大长度 ·端点的传送类型(详见4.4节) ·端点与主机的数据传送方向 端点号不为0的端点在被设置前处于未知状态,是不能被主机访问的
图 4-9 说明了数据如何在主机侧中的内存缓冲和设备中的端点中传送 在后面 将逐步 介 绍端点 通道和通信流 主机上的软件通过一系列的通信流与逻辑设备进行通信 这一系列的通信流是由 USB 设 备 的软件和硬件设计者选择的 使设备能传送由 USB 提供的字符 缓冲区 端点 USB 逻辑设备 通道 通信流 客户软件 主机 界面 图 4-9 USB 通信流 4.3.1 设备端点 一个端点是一个可唯一识别的 USB 设备的 Portion 它是主机与设备间通信流的一个结束 点 一系列相互独立的端点在一起构成了 USB 逻辑设备 每个逻辑设备有一个唯一的地址 这个地址是在设备连上主机时 由主机分配的 而设备中的每个端点在设备内部有唯一的 端点号 这个端点号是在设备设计时被给定的 每个端点都是一个简单的连接点 或者支 持数据流进设备 或者支持其流出设备 两者不可得兼 一个端点的特性决定了它与客户软件进行的传送的类型 一个端点有以下特性 端点的总线访问频率要求 端点的总线延迟要求 端点的带宽要求 端点的端点号 对错误处理的要求 端点能接收或发送的包的最大长度 端点的传送类型(详见 4.4 节) 端点与主机的数据传送方向 端点号不为 0 的端点在被设置前处于未知状态 是不能被主机访问的