在USB体系架构中,经常会混用USB端点和USB管道的概念,包括本人也经常混用。但严格来说它们是两个不同的概念,具体表现在:

  • 端点是USB设备端的概念,是真实的特理设备上的概念,其特性是通过端点描述符来描述的。而管道是USB主机端的上软件的概念,其概据USB的设备端点信息建立的数据软件数据通道。

  • 端点不需要配置,其是真真切切的物理存在;而管道是需要配置的,方可进行数据传输。管道属于主机软件层,可动态销毁和创建,在使用管道进行数据传输前,需要配置。

  • USB主机端是通过管道进行数据的收发。USB设备端通过端点进行数据的收发。

USB端点

USB设备端的端点的一个重要组成部分是端点缓冲区。USB主机端通过发送USB数据到USB设备端的缓冲区实现数据的收到功能。USB端点按功能可分为控制端点和数据端点。

控制端点在USB设备端就是通过0地址端点。每个USB设备都必须包括一个USB控制端点,并且这个控掉端点是双向的。控制端点的数据传输使用控制传输方式,其主要功能使主机实现对设备的配置如设备描述符配置描述符和字符串描述的获取和对设备的配置(如设备地址的设置等)。

USB 0端点是双向的,其他端点都是单向的。

数据端点从理论上来讲是可选的。数据端点用于数据的传输,传输的类型(控制传输中断传输批量传输,同步/等时传输)等属性。这些属性信息是通过端点描述符来描述符。

在USB体系中,数据的传输方向永远是以主机为参考对象的。向主机发送数据叫做IN,从主机发出数据叫OUT.USB设备还可以支持双向传输控制数据。

USB设备的端点按组进行分类,这个组在USB主语中叫做USB接口,通过接口描述符来描述。一般一个USB接口代表一个USB功能,但也有一些复杂设备是通过多个接口的联合来实现的,如UVC摄像头和UAC音频。

复杂设备的接口关联通过接口关联描述符(IAD)来描述的。

USB主机在进行设备配置前,是需要获取USB的配置描述符。第二次获取的配置描述包含了USB设备的所有接口,端点信息。USB主机通过遍历USB设备描述符中所有的设备接口及转换接口信息,并且查看分析各接口下对应的USB端点信息。

查看端点信息不会影响设备的配置状态。只有对设备进行配置如选择配置,选择接口才会设备的工作状态。

USB管道

USB主机和设备使用管道进行数据通讯。管道是USB主机在软件层面上的一个抽象.管道可以理解为USB主机端对USB端点的软件抽象,所以它包括USB设备端点的所有信息。由于USB数据的收发都是由主机发起的,所以我们可以理解为USB主机通过对USB设备提供的端点进行软件抽象成管道,在主机端通过管道与USB设备的端点进行数据通讯。

USB主机通过选择USB配置或USB接口(转换接口)实现对USB管道的“打开”。当USB管道“打开”后它们是活动的,可以进行数据通讯。

未配置的端点称为端点,而配置的端点称为管道。

USB 端点和管道的区别的更多相关文章

  1. xargs命令详解,xargs与管道的区别

    为什么要用xargs,问题的来源 在工作中经常会接触到xargs命令,特别是在别人写的脚本里面也经常会遇到,但是却很容易与管道搞混淆,本篇会详细讲解到底什么是xargs命令,为什么要用xargs命令以 ...

  2. 【转】xargs命令详解,xargs与管道的区别

    为什么要用xargs,问题的来源 在工作中经常会接触到xargs命令,特别是在别人写的脚本里面也经常会遇到,但是却很容易与管道搞混淆,本篇会详细讲解到底什么是xargs命令,为什么要用xargs命令以 ...

  3. [转帖]xargs命令详解,xargs与管道的区别

    xargs命令详解,xargs与管道的区别 https://www.cnblogs.com/wangqiguo/p/6464234.html 之前一直说要学习一下 xargs 到现在为止也没学习.. ...

  4. [百家号]雷电3和USB Type-C究竟有什么区别?

    雷电3和USB Type-C究竟有什么区别? https://baijiahao.baidu.com/s?id=1617271490773519582&wfr=spider&for=p ...

  5. [转]xargs命令详解,xargs与管道的区别

    为什么要用xargs,问题的来源 在工作中经常会接触到xargs命令,特别是在别人写的脚本里面也经常会遇到,但是却很容易与管道搞混淆,本篇会详细讲解到底什么是xargs命令,为什么要用xargs命令以 ...

  6. Linux命令:xargs命令详解,xargs与管道的区别

    阅读目录 为什么要用xargs,问题的来源 xargs是什么,与管道有什么不同 xargs的一些有用的选项 回到顶部 为什么要用xargs,问题的来源 在工作中经常会接触到xargs命令,特别是在别人 ...

  7. Linux下xargs命令详解及xargs与管道的区别

    在工作中经常会接触到xargs命令,特别是在别人写的脚本里面也经常会遇到,但是却很容易与管道搞混淆,本篇会详细讲解到底什么是xargs命令,为什么要用xargs命令以及与管道的区别.为什么要用xarg ...

  8. usb端点(endpoint)知识详解

    stsw-stm32121库中: 把数据copy到对应端点的发送缓冲区后,使能发送状态编码STAT_TX=VALID,这时候usb的该端点就可以发送数据了 ----->即先调用usb_sil.c ...

  9. linux下xargs和管道的区别

    管道将前面的标准输出作为后面的标准输入,xargs则将标准输入作为命令的参数 一.简介 1.背景 之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了x ...

  10. xargs与管道的区别

    一.直观感受 echo '--help' | cat echo的输出通过管道定向到cat的输入, 然后cat从其标准输入中读取待处理的文本内容, 输出结果: --help echo '--help' ...

随机推荐

  1. 【.bat】IISExpress配置通过IP访问程序

    本页只记录便携运行方式脚本 详细IISExpress配置方法请看: VS的IISExpress配置通过IP访问程序 网络信息:192.168.1.45:8378 Run.bat :: run as a ...

  2. 微服务:gateway

    网关路由: 1.创建新模块 2.引入网关依赖 <!--网关--> <dependency> <groupId>org.springframework.cloud&l ...

  3. 【SpringCloud】Nacos集群部署(Centos平台)

    一.前提环境准备 Nacos 下载 https://github.com/alibaba/nacos/releases 或者使用其它博主备份的 https://blog.csdn.net/weixin ...

  4. gym库中类FilterObservation(ObservationWrapper)的理解

    filter_observation.py模块中类 FilterObservation(ObservationWrapper) 的理解. 代码: import copy from gym import ...

  5. 硬盘测速工具中的队列深度是个什么东西——CrystalDiskMark中的Q32T16是什么意思

    ================================ 最近有使用CrystalDiskMark给自己的硬盘做测速,发现有个名词自己不是很理解,就是像Q32T16这样的词: 在网上找了好久, ...

  6. 中电信翼康济世数据中台基于Apache SeaTunnel构建数据集成平台经验分享

    作者 | 中电信翼康工程师 代来编辑 | Debra Chen 一. 引言 Apache SeaTunnel作为一个高性能.易用的数据集成框架,是快速落地数据集成平台的基石.本文将从数据中台战略背景. ...

  7. Ruoyi-Cloud 启动失败的坑,关于 selectConfigList

    刚才编辑了一堆,不知道为啥加了个英文单词,当前页面刷新自动搜索了单词,之前的内容总的就是现在都要会SpringCloud,高并发,几个真正懂高并发的,问题一般项目也没有啥高并发.自己之前的项目遇到过高 ...

  8. Java基础之数值类型之间的转换

    经常需要将一种数值类型转换为另一种数值类型.下图 给出了数值类型之间的合法 转换. 在图中有 6 个实心箭头,表示无信息丢失的转换:有 3 个虚箭头, 表示可能有精度 损失的转换. 例如,123 45 ...

  9. 零基础学习人工智能—Python—Pytorch学习(四)

    前言 接续上一篇的optimizer的学习. optimizer 代码和上一篇文章的一样,如下: import torch import numpy as np import torch.nn as ...

  10. logback日志级别动态切换的四种方案 荐

    生产环境中经常有需要动态修改日志级别. 现在就介绍几种方案 方案一:开启logback的自动扫描更新 配置如下 <?xml version="1.0" encoding=&q ...