首页 > 系统相关 >linux usb端点

linux usb端点

时间:2022-10-01 11:45:09浏览次数:46  
标签:传送 USB 主机 端点 linux usb 格式 设备

前言

端点在实际的USB通讯过程种的具体作用与含义十分重要,但是有些难以理解,自己整理一些知识作为备忘。

(注:1、文中的EP表示Endpoint;

一、端点概念。

端点(Endpoint),是主机与设备之间通讯数据的接收或来源。主机与设备之间通信时最终会总用于设备上的各个端点,它是主机与设备间通信流的一个逻辑终端。一系列相互独立的端点在一起构成了USB逻辑设备,在系统结构中,位于下方红色方框内:

image

二、端点的分类

每个USB设备都有一个唯一的设备地址,设备地址是设备连接上主机时由主机分配的,主机主要依靠这个设备地址对USB设备进行访问。但是在设备内部地址会被分的更细,设备会分出一些端点来,每个端点在设备都会有唯一的端点号,这个端点号是设计设备时给定的。如端点0,端点1等。一个设备最多可以包含16个端点,每个端点的地址为0-15。(网上也有说几十个的,有待考究)

其中每个端点地址对应一个方向。例如端点3-IN,端点3-OUT,这两个含义完全不同。但是需要注意其中的一个特殊端点--端点0,每个USB设备必须要有一个端点0,其作用为对设备枚举和对设备进行一些基本的控制功能,端点0也被称为控制端点。并且它与其他的端点还有一个不同之处在于端点0的数据传输方向是双向的,即端点0既可以给主机发送数据,也可以接收主机发送过来的数据,而其它端点均为单向。

虽然有16个端点,但通常我们只用到3个,如下:

1)、EP0:做传输配置和控制信息;

2)、EP1:做数据输入IN_EP;

3)、EP2:做数据输出OUT_EP。

注意:除了端点0,其余的端点在设备配置之前不能与主机通信,只有向主机报告这些端点的特性并被确认后才能被激活。

三、端点的特性

一个端点的特性决定了它与客户软件进行传送的类型。一个端点具有以下一些特性:

  • 端点的总线访问频率要求
  • 端点的总线延迟要求
  • 端点的带宽要求
  • 端点的端点号
  • 对错误处理的要求
  • 端点能接收或发送的包的最大长度
  • 端点的传送类型
  • 端点与主机的数据传送方向

四、端点描述符

USB设备中端点描述符描述了端点信息,端点描述符格式如下:

typedef struct _USB_ENDPOINT_DESCRIPTOR_
{
    BYTE        bLength,
    BYTE        bDescriptorType,
    BYTE        bEndpointAddress,
    BYTE        bmAttributes,
    WORD      wMaxPacketSize,
    BYTE        bInterval
}USB_ENDPOINT_DESCRIPTOR;

各变量具体释义如下:

bLength : 描述符大小.固定为0x07.

bDescriptorType : 接口描述符类型.固定为0x05.

bEndpointType : USB设备的端点地址.Bit7,方向,对于控制端点可以忽略,1/0:IN/OUT.Bit6-4,保留.BIt3-0:端点号.

bmAttributes : 端点属性.Bit7-2,保留.BIt1-0:00控制,01同步,02批量,03中断.

wMaxPacketSize : 本端点接收或发送的最大信息包大小.

bInterval : 轮训数据传送端点的时间间隔.对于批量传送和控制传送的端点忽略.对于同步传送的端点,必须为1,对于中断传送的端点,范围为1-255。

五、端点与管道

1、管道的概念

管道是主机软件(数据缓存区),和USB设备各各端点之间的数据传输连接,他是两者之间通信流的抽象(实际上数据传输是USB总线接口完成)。管道与USB设备中的端点逐个对应,并且各个管道的数据传输是相互独立的。

2、管道的格式分类

管带的通信格式分为两种,一种为流,另一种为消息,这两种通信格式不同且互斥。

1)、“流”指不具有USB定义格式的数据流,流通道中的数据是流的形式,也就是该数据内容不具有USB要求的结构。数据从流通道一端流进的顺序与它们从流通道另一端流出时的顺序是一样的(先进先出),并且流通道中的通信流总是单向的。

2)、“消息”指具有某种USB定义格式的数据流。消息通道与端点的关系同流通道与端点的关系是不同的。首先,主机向USB设备发出一个请求;接着,就是数据的传送;最后,是一个状态阶段(这部分即一次命令请求的过程)。为了能够容纳请求/数据/状态的变化,消息通道要求数据有一个格式,此格式保证了命令能够被可靠地传送和确认。消息通道允许双方向的信息流。

六、端点的传输类型

一个具体的端点只能属于四个传输模式下中的一种。数据传输类型分为四种分别是:控制传输、批量传输、同步传输和中断传输。一般情况下,通常把工作在什么模式下的端点就叫什么端点,例如:控制端点、批量端点、同步端点和中断端点。    端点0,是设备的默认控制端点,在设备上电后就存在并可以使用,在Set Config之前所有的传输都是通过端点0传输的。

标签:传送,USB,主机,端点,linux,usb,格式,设备
From: https://www.cnblogs.com/linhaostudy/p/16746984.html

相关文章

  • Linux时间日期类
    Linux时间日期类date指令:显示当前日期基本语法date功能描述:显示当前时间date+%Y功能描述:显示当前年份date+%m功能描述:显示当前月份date+%d功能描述:......
  • Linux实用指令1
    Linux实用指令指定运行级别基本介绍0关机1单用户找回丢失密码2多用户状态没有网络服务3多用户状态有网络服务4系统未使用保留给用户5图形界面6系统重启......
  • Windows下编译linux程序. 1. outguess
    outguess编译使用cygwin。运行终端后。进入outguess目录。./configuremake直接报个错checkingwhethermakesets${MAKE}..../configure:eval:line868:unexp......
  • linux grep、sed、awk 实操备忘
    前提#声明x,y,z,默认字符串连接[cmd]x=1[cmd]declare-pxdeclare--x="1"[cmd]y=1[cmd]z=$x+$y&&echo$z1+1[cmd]declare-iz[cmd]dec......
  • linux学前知识
    linux体系liunx特点自由开放,安全性高可移植,灵活性高多任务,多用户,多线程,网络功能丰富liunx学习阶段    linux学习内容    linux就业方......
  • 最小 Linux 发行版 Tiny Core Linux 7.1 发布
    TinyCore Linux 是一个极度简约但是也高度可扩展的GNU/Linux发行版,其之精简甚至可以小到只有10MB大小。昨天5月23日刚刚发布的TinyCoreLinux7.1也仅仅只有......
  • 信迈AM5728 CAN总线测试及SDK升级,linux can 调试命令
    一、AM5728CAN总线测试开发板文件系统下执行如下指令,配置CAN0总线(软件上的CAN0对应为硬件上的CAN1)比特率为1MHz,并启动CAN总线:Target#canconfigcan0bitrate10000......
  • TI AM5728 SDK升级之 linux设备树解析,以网口cpsw为例
    如果一个结点描述的设备有地址,则应该给出@unit-address。多个相同类型设备结点的name可以一样,只要unit-address不同即可,如本例中含有cpu@0、cpu@1以及serial@101f0000与seri......
  • 如何加入linux开源项目-GNOME Project Listing
    GNOMEProjectListing找到项目官网找到项目创始人email联系不过通常都可以通过网站直接去的联系然后提交你的工作成果或者提交bug,提交你的补丁之类。​......
  • Linux华为云Huawei Cloud EulerOS 系统 配置.Net6运行环境
    1.创建华为云HuaweiCloudEulerOS 2.0标准版64位.设置服务器登录密码,最后确认,然后稍等几分钟就可以看到申请的服务器处于运行状态就可以了.   2.远程登录服务......