辨析 USB 的端点和管道

辨析 USB 的端点和管道

USB 端点

端点是 USB 设备上的缓冲区,端点是与硬件本身相关的术语,与主机操作系统无关。主机可以向上述缓冲区发送或接受数据。端点分为控制端点数据端点

每个 USB 设备必须至少提供一个控制端点,该端点在地址 0 处,被称为默认端点端点0。此端点是双向的,也就是说,host 可以在一次传输事务内向端点0发送并接收数据。控制传输的目的是使 host 能够获取设备信息,配置设备或执行特定于设备的控制操作。

数据端点是可选的,用于传输数据。它们是单向的,具有不同类型(控制、中断、批量、同步)和其他属性。所有这些属性都在端点描述符(参阅 USB 2.0 规范,9.6 Standard USB Descriptor Definitions)中进行了介绍。

在 USB 术语中,端点的方向(发送给或发送自某端点)是从 host 的角度定义的。因此,IN 是指 host 从设备接收数据,OUT 是指 host 发出数据给到设备。USB 设备还可以支持控制数据的双向传输。

设备上的一组端点组成功能接口,一组接口组成设备配置。有关详细信息,请参阅 "USB 描述符"。

host 可以查看端点信息,该操作可以在设备完成配置之前,或在选择备用设置期间。循环访问所有接口,然后遍历每个接口的设置列表,就可以查看每个端点的属性,或某个设置的端点集。 查看端点信息不会影响设备的配置状态。

USB 管道

管道是一个抽象概念,数据经由管道在 device 和 host 之间进行传输。管道纯粹是一个软件术语。一个管道和 device 上的端点交互,而端点具有一个唯一的地址。管道的另一端始终是 host controller。

 

一旦 device 完成配置(不管是通过选中一项配置还是选中一个接口的备用设置),和端点对应的管道就被打开了,因此它们成为  I/O 操作的对象。管道具有端点的所有属性,它处于活动状态,被用来与 host 进行通信。

经过配置的端点称为管道,否则就是一个纯粹的端点

总结

  • 端点是 device 上的硬件;管道是 host 端的软件。
  • 端点未进行过配置;管道进行了配置,用于传输。
  • host 给管道发送数据,或从管道接受数据。

USB 设备具有用于数据传输的端点。 在 host 端,端点由管道表示。

以上内容一图概括之:

原文地址:https://www.cnblogs.com/rockyching2009/p/14021322.html