设备、配置、接口、端点

二,usb描述符-设备 配置 接口 端点 usb driver 阅读详情

《Linux设备驱动开发详解》本书全面而详细地讲解了Linux设备驱动开发中涉及的理论以及多种设备驱动的框架。第20章主要讲解从主机侧角度看到的USB主机控制器驱动和设备驱动。本文写的是设备、配置、接口、端点。

 设备、配置、接口、端点

在USB设备的逻辑组织中,包含设备、配置、接口和端点4个层次。

每个USB设备都提供了不同级别的配置信息,可以包含一个或多个配置,不同的配置使设备表现出不同的功能组合(在探测/连接期间需从其中选定一个),配置由多个接口组成。

在USB协议中,接口由多个端点组成,代表一个基本的功能,是USB设备驱动程序控制的对象,一个功能复杂的USB设备可以具有多个接口。每个配置中可以有多个接口,而设备接口是端点的汇集(collection)。例如USB扬声器可以包含一个音频接口以及对旋钮和按钮的接口。一个配置中的所有接口可以同时有效,并可被不同的驱动程序连接。每个接口可以有备用接口,以提供不同质量的服务参数。

端点是USB通信的最基本形式,每一个USB设备接口在主机看来就是一个端点的集合。主机只能通过端点与设备进行通信,以使用设备的功能。在USB系统中每一个端点都有惟一的地址,这是由设备地址和端点号给出的。每个端点都有一定的属性,其中包括传输方式、总线访问频率、带宽、端点号和数据包的最大容量等。一个USB端点只能在一个方向承载数据,或者从主机到设备(称为输出端点),或者从设备到主机(称为输入端点),因此端点可看作一个单向的管道。端点0通常为控制端点,用于设备初始化参数等。只要设备连接到USB上并且上电端点0就可以被访问。端点1、2等一般用作数据端点,存放主机与设备间往来的数据。\

总体而言,USB设备非常复杂,由许多不同的逻辑单元组成,如图20.2所示,这些单元之间的关系如下:

图20.2 USB设备、配置、接口和端点

l 设备通常有一个或多个配置;

l 配置通常有一个或多个接口;

l 接口通常有一个或多个设置;

l 接口有零或多个端点。

这种层次化配置信息在设备中通过一组标准的描述符来描述,如下所示。

l 设备描述符:关于设备的通用信息,如供应商ID、产品ID和修订ID,支持的设备类、子类和适用的协议以及默认端点的最大包大小等。在Linux内核中,USB设备用usb_device结构体来描述,USB设备描述符定义为usb_device_descriptor结构体,如代码清单20.1所示。

代码清单20.1  usb_device_descriptor结构体

1  struct usb_device_descriptor 
2  {
3  _ _u8  bLength; //描述符长度
4  _ _u8  bDescriptorType; //描述符类型编号
5  
6  _ _le16 bcdUSB; //USB版本号
7  _ _u8  bDeviceClass; //USB分配的设备类code
8  _ _u8  bDeviceSubClass;// USB分配的子类code
9  _ _u8  bDeviceProtocol; //USB分配的协议code
10 _ _u8  bMaxPacketSize0; //endpoint0最大包大小
11 _ _le16 idVendor; //厂商编号
12 _ _le16 idProduct; //产品编号
13 _ _le16 bcdDevice; //设备出厂编号
14 _ _u8  iManufacturer; //描述厂商字符串的索引
15 _ _u8  iProduct; //描述产品字符串的索引
16 _ _u8  iSerialNumber; //描述设备序列号字符串的索引
17 _ _u8  bNumConfigurations; //可能的配置数量
18 } _ _attribute_ _ ((packed));

l 配置描述符:此配置中的接口数、支持的挂起和恢复能力以及功率要求。USB配置在内核中使用usb_host_config结构体描述,USB配置描述符定义为结构体usb_config_descriptor,如代码清单20.2所示。

代码清单20.2  usb_config_descriptor结构体

1  struct usb_config_descriptor 
2  {
3  _ _u8  bLength; //描述符长度
4  _ _u8  bDescriptorType; //描述符类型编号
5  
6  _ _le16 wTotalLength; //配置所返回的所有数据的大小
7  _ _u8  bNumInterfaces; // 配置所支持的接口数
8  _ _u8  bConfigurationValue; //Set_Configuration命令需要的参数值
9  _ _u8  iConfiguration; //描述该配置的字符串的索引值
10 _ _u8  bmAttributes; //供电模式的选择
11 _ _u8  bMaxPower; //设备从总线提取的最大电流
12 } _ _attribute_ _ ((packed));

l 接口描述符:接口类、子类和适用的协议,接口备用配置的数目和端点数目。USB接口在内核中使用usb_interface结构体描述,USB接口描述符定义为结构体usb_interface_descriptor,如代码清单20.3所示。

代码清单20.3  usb_interface_descriptor结构体

1  struct usb_interface_descriptor 
2  {
3  _ _u8  bLength;           //描述符长度
4  _ _u8  bDescriptorType; //描述符类型
5  
6  _ _u8  bInterfaceNumber;   // 接口的编号
7  _ _u8  bAlternateSetting; //备用的接口描述符编号
8  _ _u8  bNumEndpoints;      //该接口使用的端点数,不包括端点0
9  _ _u8  bInterfaceClass;    //接口类型
10 _ _u8  bInterfaceSubClass; //接口子类型
11 _ _u8  bInterfaceProtocol; //接口所遵循的协议
12 _ _u8  iInterface; //描述该接口的字符串索引值
13 } _ _attribute_ _ ((packed));

l 端点描述符:端点地址、方向和类型,支持的最大包大小,如果是中断类型的端点则还包括轮询频率。在Linux内核中,USB端点使用usb_host_endpoint结构体来描述,USB端点描述符定义为usb_endpoint_descriptor结构体,如代码清单20.4所示。

代码清单20.4  usb_endpoint_descriptor结构体

1  struct usb_endpoint_descriptor 
2  {
3  _ _u8  bLength; //描述符长度
4  _ _u8  bDescriptorType; //描述符类型
5 _ _u8  bEndpointAddress; //端点地址:0~3位是端点号,第7位是方向(0-OUT,1-IN)
6 _ _u8  bmAttributes; //端点属性:bit[0:1] 的值为00表示控制,为01表示同步,为02表示批量,为03表示中断
7  _ _le16 wMaxPacketSize; //// 本端点接收或发送的最大信息包的大小
8  _ _u8  bInterval;//轮询数据传送端点的时间间隔
9                       //对于批量传送的端点以及控制传送的端点,此域忽略
10                     //对于同步传送的端点,此域必须为1
11                     //对于中断传送的端点,此域值的范围为1~255
12 _ _u8  bRefresh;
13 _ _u8  bSynchAddress;
14 } _ _attribute_ _ ((packed));

l 字符串描述符:在其他描述符中会为某些字段提供字符串索引,它们可被用来检索描述性字符串,可以以多种语言形式提供。字符串描述符是可选的,有的设备有,有的设备没有,字符串描述符对应于usb_string_descriptor结构体,如代码清单20.5所示。

代码清单20.5  usb_string_descriptor结构体

1 struct usb_string_descriptor 
2 {
3 _ _u8  bLength; //描述符长度
4 _ _u8  bDescriptorType; //描述符类型
5 
6 _ _le16 wData[1];/* 以UTF-16LE编码 */
7 } _ _attribute_ _ ((packed));

例如,笔者在运行Linux 2.6.15.5的系统上插入一个SanDisk U盘后,通过lsusb命令得到这个U盘相关的描述符,从中可以显示这个U盘包含了一个设备描述符、一个配置描述符、一个接口描述符以及批量输入和批量输出两个端点描述符。呈现出来的信息内容直接对应于usb_device_descriptor、usb_config_descriptor、usb_interface_descriptor、usb_endpoint_descriptor、usb_string_descriptor结构体,如下所示:

Bus 001 Device 004: ID 0781:5151 SanDisk Corp. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 Interface
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x0781 SanDisk Corp.
  idProduct          0x5151 
  bcdDevice            0.10
  iManufacturer           1 SanDisk Corporation
  iProduct                2 Cruzer Micro
  iSerial                 3 20060877500A1BE1FDE1
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1

设备、配置、接口、端点

2008-03-11 09:45 宋宝华 编著 人民邮电出版社 我要评论(0) 字号: T | T
一键收藏,随时查看,分享好友!

《Linux设备驱动开发详解》本书全面而详细地讲解了Linux设备驱动开发中涉及的理论以及多种设备驱动的框架。第20章主要讲解从主机侧角度看到的USB主机控制器驱动和设备驱动。本文写的是设备、配置、接口、端点。

AD:

20.1.2  设备、配置、接口、端点

在USB设备的逻辑组织中,包含设备、配置、接口和端点4个层次。

每个USB设备都提供了不同级别的配置信息,可以包含一个或多个配置,不同的配置使设备表现出不同的功能组合(在探测/连接期间需从其中选定一个),配置由多个接口组成。

在USB协议中,接口由多个端点组成,代表一个基本的功能,是USB设备驱动程序控制的对象,一个功能复杂的USB设备可以具有多个接口。每个配置中可以有多个接口,而设备接口是端点的汇集(collection)。例如USB扬声器可以包含一个音频接口以及对旋钮和按钮的接口。一个配置中的所有接口可以同时有效,并可被不同的驱动程序连接。每个接口可以有备用接口,以提供不同质量的服务参数。

端点是USB通信的最基本形式,每一个USB设备接口在主机看来就是一个端点的集合。主机只能通过端点与设备进行通信,以使用设备的功能。在USB系统中每一个端点都有惟一的地址,这是由设备地址和端点号给出的。每个端点都有一定的属性,其中包括传输方式、总线访问频率、带宽、端点号和数据包的最大容量等。一个USB端点只能在一个方向承载数据,或者从主机到设备(称为输出端点),或者从设备到主机(称为输入端点),因此端点可看作一个单向的管道。端点0通常为控制端点,用于设备初始化参数等。只要设备连接到USB上并且上电端点0就可以被访问。端点1、2等一般用作数据端点,存放主机与设备间往来的数据。\

总体而言,USB设备非常复杂,由许多不同的逻辑单元组成,如图20.2所示,这些单元之间的关系如下:

图20.2 USB设备、配置、接口和端点

l 设备通常有一个或多个配置;

l 配置通常有一个或多个接口;

l 接口通常有一个或多个设置;

l 接口有零或多个端点。

这种层次化配置信息在设备中通过一组标准的描述符来描述,如下所示。

l 设备描述符:关于设备的通用信息,如供应商ID、产品ID和修订ID,支持的设备类、子类和适用的协议以及默认端点的最大包大小等。在Linux内核中,USB设备用usb_device结构体来描述,USB设备描述符定义为usb_device_descriptor结构体,如代码清单20.1所示。

代码清单20.1  usb_device_descriptor结构体

1  struct usb_device_descriptor 
2  {
3  _ _u8  bLength; //描述符长度
4  _ _u8  bDescriptorType; //描述符类型编号
5  
6  _ _le16 bcdUSB; //USB版本号
7  _ _u8  bDeviceClass; //USB分配的设备类code
8  _ _u8  bDeviceSubClass;// USB分配的子类code
9  _ _u8  bDeviceProtocol; //USB分配的协议code
10 _ _u8  bMaxPacketSize0; //endpoint0最大包大小
11 _ _le16 idVendor; //厂商编号
12 _ _le16 idProduct; //产品编号
13 _ _le16 bcdDevice; //设备出厂编号
14 _ _u8  iManufacturer; //描述厂商字符串的索引
15 _ _u8  iProduct; //描述产品字符串的索引
16 _ _u8  iSerialNumber; //描述设备序列号字符串的索引
17 _ _u8  bNumConfigurations; //可能的配置数量
18 } _ _attribute_ _ ((packed));

l 配置描述符:此配置中的接口数、支持的挂起和恢复能力以及功率要求。USB配置在内核中使用usb_host_config结构体描述,USB配置描述符定义为结构体usb_config_descriptor,如代码清单20.2所示。

代码清单20.2  usb_config_descriptor结构体

1  struct usb_config_descriptor 
2  {
3  _ _u8  bLength; //描述符长度
4  _ _u8  bDescriptorType; //描述符类型编号
5  
6  _ _le16 wTotalLength; //配置所返回的所有数据的大小
7  _ _u8  bNumInterfaces; // 配置所支持的接口数
8  _ _u8  bConfigurationValue; //Set_Configuration命令需要的参数值
9  _ _u8  iConfiguration; //描述该配置的字符串的索引值
10 _ _u8  bmAttributes; //供电模式的选择
11 _ _u8  bMaxPower; //设备从总线提取的最大电流
12 } _ _attribute_ _ ((packed));

l 接口描述符:接口类、子类和适用的协议,接口备用配置的数目和端点数目。USB接口在内核中使用usb_interface结构体描述,USB接口描述符定义为结构体usb_interface_descriptor,如代码清单20.3所示。

代码清单20.3  usb_interface_descriptor结构体

1  struct usb_interface_descriptor 
2  {
3  _ _u8  bLength;           //描述符长度
4  _ _u8  bDescriptorType; //描述符类型
5  
6  _ _u8  bInterfaceNumber;   // 接口的编号
7  _ _u8  bAlternateSetting; //备用的接口描述符编号
8  _ _u8  bNumEndpoints;      //该接口使用的端点数,不包括端点0
9  _ _u8  bInterfaceClass;    //接口类型
10 _ _u8  bInterfaceSubClass; //接口子类型
11 _ _u8  bInterfaceProtocol; //接口所遵循的协议
12 _ _u8  iInterface; //描述该接口的字符串索引值
13 } _ _attribute_ _ ((packed));

l 端点描述符:端点地址、方向和类型,支持的最大包大小,如果是中断类型的端点则还包括轮询频率。在Linux内核中,USB端点使用usb_host_endpoint结构体来描述,USB端点描述符定义为usb_endpoint_descriptor结构体,如代码清单20.4所示。

代码清单20.4  usb_endpoint_descriptor结构体

1  struct usb_endpoint_descriptor 
2  {
3  _ _u8  bLength; //描述符长度
4  _ _u8  bDescriptorType; //描述符类型
5 _ _u8  bEndpointAddress; //端点地址:0~3位是端点号,第7位是方向(0-OUT,1-IN)
6 _ _u8  bmAttributes; //端点属性:bit[0:1] 的值为00表示控制,为01表示同步,为02表示批量,为03表示中断
7  _ _le16 wMaxPacketSize; //// 本端点接收或发送的最大信息包的大小
8  _ _u8  bInterval;//轮询数据传送端点的时间间隔
9                       //对于批量传送的端点以及控制传送的端点,此域忽略
10                     //对于同步传送的端点,此域必须为1
11                     //对于中断传送的端点,此域值的范围为1~255
12 _ _u8  bRefresh;
13 _ _u8  bSynchAddress;
14 } _ _attribute_ _ ((packed));

l 字符串描述符:在其他描述符中会为某些字段提供字符串索引,它们可被用来检索描述性字符串,可以以多种语言形式提供。字符串描述符是可选的,有的设备有,有的设备没有,字符串描述符对应于usb_string_descriptor结构体,如代码清单20.5所示。

代码清单20.5  usb_string_descriptor结构体

1 struct usb_string_descriptor 
2 {
3 _ _u8  bLength; //描述符长度
4 _ _u8  bDescriptorType; //描述符类型
5 
6 _ _le16 wData[1];/* 以UTF-16LE编码 */
7 } _ _attribute_ _ ((packed));

例如,笔者在运行Linux 2.6.15.5的系统上插入一个SanDisk U盘后,通过lsusb命令得到这个U盘相关的描述符,从中可以显示这个U盘包含了一个设备描述符、一个配置描述符、一个接口描述符以及批量输入和批量输出两个端点描述符。呈现出来的信息内容直接对应于usb_device_descriptor、usb_config_descriptor、usb_interface_descriptor、usb_endpoint_descriptor、usb_string_descriptor结构体,如下所示:

Bus 001 Device 004: ID 0781:5151 SanDisk Corp. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 Interface
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x0781 SanDisk Corp.
  idProduct          0x5151 
  bcdDevice            0.10
  iManufacturer           1 SanDisk Corporation
  iProduct                2 Cruzer Micro
  iSerial                 3 20060877500A1BE1FDE1
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
    MaxPower              200mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk (Zip)
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               none
        wMaxPacketSize        512
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               none
        wMaxPacketSize        512
        bInterval               1
  Language IDs: (length=4)
     0409 English(US)
iConfiguration 0 bmAttributes 0x80 MaxPower 200mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 8 Mass Storage bInterfaceSubClass 6 SCSI bInterfaceProtocol 80 Bulk (Zip) iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type none wMaxPacketSize 512 bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 2 Transfer Type Bulk Synch Type none wMaxPacketSize 512 bInterval 1 Language IDs: (length=4) 0409 English(US)

802.1AS时间同步机制深度解析:从Sync报文到多域冗余设计 本文深度解析了802.1AS时间同步机制,从Sync与Follow_Up报文的核心交互原理入手,详细阐述了其如何通过精确的时钟频率比测量、链路延迟计算和驻留时间补偿来实现微秒乃至纳秒级同步。文章进一步探讨了802.1AS-2020版本引入的多时钟域冗余设计,为构建高可靠的车载TSN网络提供了关键见解和实战配置指南。 阅读详情

相关推荐

AI原生应用在UGC内容审核中的实战经验

AI原生应用(AI-Native Application)——以机器学习模型为核心驱动力,深度整合数据、算法、工程架构的完整系统——为破解这一三角难题提供了全新范式。全链路数据驱动:从数据采集、模型训练到决策优化,形成闭环自治系统,无需人工规则干预多模态深度理解:同时处理文本、图像、音频、视频等多类型内容,理解语义而非简单匹配特征自适应进化能力:通过人机协同反馈持续学习新型违规模式,模型周级迭代成为常态审核效率提升300%:单条视频审核耗时从2.3秒降至0.7秒。

AI算力网络与通信的博客 1149

usb 端点解释

__u8 bEndpointAddress; //端点地址:0~3位是端点号,第7位是方向(0-OUT,1-IN) 端点地址:总共8位0,1,2,3四位时端点号7位时端点方向 那么由这5位可以确定32个端点地址. 其中输入端点0-15输出端点0-15 Outendpoint for all omron health devices, 所有Omron健康

cupidove的专栏 1万+

SQL Server 内存占用高分析及解决办法(超详细)

如果想让 Sql Server 主动释放 占用并空闲的内存空间,可以设置Sql Server占用内存的上限,就会让Sql server在。如执行存储过程,自定函数时,SQL Server 需要先二进制编译再运行,编译后的结果也会缓存起来,再次调用时就无需再次编译。才会释放一点占用的内存,所以很多时候,我们会发现运行SQL Server的系统内存往往居高不下这些内存一般都。缓存,以便于再次请求此页的数据的时候,直接从内存返回,就无需读取磁盘了,大大提高了速度。最后文章有啥不对,欢迎大佬在评论区指点!

2301_79080944的博客 3952

usb设备地址与端点地址概念区分

其中,端点描述符包含了每个端点的属性,如端点地址、传输类型(控制、批量、中断或等时)、最大包大小和轮询间隔(对于中断和等时端点)。枚举是USB设备连接到主机后自动进行的一个初始化过程,在这个过程中,USB主机与设备交换一系列标准请求,以确定设备的功能和配置。作用:当一个USB设备首次连接到主机时,它会默认分配一个特殊的地址(通常是0),然后通过枚举过程,主机为该设备分配一个唯一的非零地址。端点识别:通过解析端点描述符,主机了解到每个端点的具体信息,包括端点号、方向(IN/OUT)、传输类型等。

weixin_70642315的博客 1539

基于FreeRTOS与MQTT的物联网技术应用系列——步进电机控制(三)SD卡驱动、FatFS等的移植和ini配置文件读取的实现

本文实现了基于STM32F107VC的金牛开发板的基于SPI模式的SD卡驱动和FatFS的移植,以及利用minini库对ini配置信息文件进行读取。

sqshining的专栏 2137

ABB RobotStudio 和 S7-PLCSIM Advanced V5.0 搭建虚拟通信环境,实现 PLC 对机器人布尔量、数字量和模拟量的控制。

本教程详细介绍了如何利用ABB RobotStudio和S7-PLCSIM Advanced V5.0搭建虚拟通信环境,实现PLC对机器人的布尔量、数字量和模拟量控制。主要内容包括:在TIA Portal V20中配置PLC项目并编写通信程序;通过S7-PLCSIM Advanced创建虚拟PLC运行环境;在RobotStudio中设置机器人PROFINET通信;以及建立虚拟网络连接并进行功能测试。该方案适用于工业自动化虚拟调试,可显著降低现场调试风险。操作需注意软件版本兼容性、网络配置及信号映射准确性,最

CHUXUEZHE8210的博客 2515

usb中的endpoint(端点)和传输模式

端点: 端点位于USB 外设内部,所有通信数据的来源或目的都基于这些端点,是一个可寻址的FIFO。 每个USB 外设有一个唯一的地址,可能包含最多十六个端点。主机通过发出器件地址和每次数据传输的端点号,向一个具体端点(FIFO)发送数据。 每个端点的地址为0 到15,一个端点地址对应一个方向。所以,端点2-IN 与端点2-OUT 完全不同。 每个器件有一个默认的双向控制端点0,因此不存在端点...

weixin_34025151的博客 2366

Outlook邮件备份全攻略:从导出到导入的完整流程(附常见问题解决)

本文提供了一份详尽的Outlook邮件备份全攻略,涵盖从导出到导入的完整流程。重点解析了经典桌面版Outlook的.pst文件备份方法、进阶的智能筛选备份策略,以及如何通过导入恢复和工具验证确保备份可用。同时,文章还介绍了构建自动化备份体系与异地容灾的最佳实践,并附有常见问题解决方案,帮助用户建立可靠的邮件数据安全防线。

weixin_29248611的博客 891

接口(Interface)和端点(Endpoint)的区别

接口是一个更宽泛的术语,它描述了系统、组件或服务之间相互交互的一个明确界面或约定。这不仅限于Web服务,也适用于软件库、框架、硬件设备等之间的交互。

程序新视界 1043

【NAS系统】DSM7.2部署SVN服务

早期的群晖版本可以在套件中心找到SVN Server直接安装,然后配置仓库和用户。但‌2提到DSM7.0之后套件中心没有SVN了,得用Docker。

qq_38350004的博客 4849

〖进阶篇1〗YAML参数解析:从nav2_params.yaml看机器人导航调优

本文深入解析了ROS2 Nav2导航系统中关键的nav2_params.yaml文件,提供了从定位、行为树、运动控制到环境感知等核心模块的参数调优实战指南。文章通过具体场景案例,如狭窄走廊、动态仓库和高精度对接,详细阐述了如何调整AMCL粒子数、控制器权重、代价地图膨胀半径等参数,以解决机器人导航中的犹豫、碰撞和精度问题,帮助开发者实现从“能用”到“好用”的进阶。

m9n0o的博客 417

【USB笔记】端点描述符Endpoint Descriptor

USB笔记 端点描述符 (Endpoint Descriptor) 端点描述符 (Endpoint Descriptor)描述了USB规范定义的端点信息,包含有端点的带宽等信息。每一个端点都有自己的端点描述符。主机端获取端点描述符 (Endpoint Descriptor),总是作为配置描述符(Configuration Descriptor)的一部分返回,不能直接用Get Descriptor或者Set Descriptor请求访问。 Endpoint Descriptor Offset Fiel

1万+

如何使用JMeter进行大模型的压力测试?

使用JMeter进行大模型的压力测试,核心是通过模拟高并发请求,测试大模型在极限负载下的性能表现(如响应时间、吞吐量、错误率、资源瓶颈等)。通过以上步骤,可系统性评估大模型在高压下的性能极限,为优化模型(如量化、蒸馏)、扩容硬件(增加GPU)或调整接口限流策略提供数据依据。)、请求方式(POST)、认证方式(API Key放在Header)、请求参数(作用:避免瞬间高压压垮系统,更精准找到瓶颈点。等)、响应格式(同步/流式)。需获取:API地址(如。通过CSV文件引入不同。

alankuo的专栏 790

从零开始学USB(七、端点、管道、接口、配置、设备)

端点(endpoint):端点是USB设备的唯一可识别部分,其是主机和设备之间的通信流的终点。它是一个USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据。每个USB逻辑设备由一组独立的端点组成。每个逻辑设备都有一个由系统在设备连接时分配的唯一地址。设备上的每个端点在设计时都会得到一个唯一的设备确定的标识符,称为端点号。每个端点都有一个设备确定的数据流方向。设备地址,端点号和方向的组合允许唯一地引用每个端点。每个端点都是一个单一连接,支持一个方向的数据流:输入(in)(从设备到主机)或输出(o

u010783226的专栏 8293

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Linux USB子系统(2) 设备、配置、接口、端点

linux usb子系统 设备 配置 接口 设置 端点

3611

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

设备 配置 接口 端点

设备通常包含 一个或多个配置 配置通常包含 一个或多个接口 接口通常包含 零个或多个端点

技术学习 532

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

USB设备描述符、配置、接口、端点解析

USB设备硬件由多个功能模块组成,每个模块对应一个接口(usb_interface)。设备描述符是USB设备的"身份证",包含厂商ID、产品ID等基本信息。一个设备可以有多种配置,每个配置包含多个接口,主机根据需求激活特定配置。接口代表具体功能(如打印、扫描),包含多个端点作为数据传输通道。端点分为控制、中断、批量、等时四种类型,通过唯一地址和方向进行通信。简单设备可能只有2-4个端点缓冲区,复杂设备可达16-32个。驱动开发时只需通过设备描述符获取端点信息,调用内核接口即可使用。

zhuzewennamoamtf的博客 1580

USB的端点与管道以及设备、配置、接口、端点

1、端点的引入 2、端点与管道 3、特殊端点 4、USB端点的四种类型 5、USB逻辑设备

qingkongyeyue的博客 4391

usb设备配置接口端点

在 USB 设备的逻辑组织中,包含设备、配置、接口和端点4 个层次。每个 USB 设备都提供了不同级别的配置信息,可以包含一个或多个配置,不同的配置使设备表现出不同的功能组合(在探测/连接期间需从其中选定一个),配置由多个接口组成。            在 USB 协议中,接口由多个端点组成,代表一个基本的功能,是USB 设备驱动程序控制的对象,一个功能复杂的USB 设备可以具有多个接口。每...

小小城御园的博客 1621

USB设备 配置、接口和端点

在USB设备的逻辑组织中,包含设备、配置、接口和端点4个层次。 每个USB设备都提供了不同级别的配置信息,可以包含一个或多个配置,不同的配置使设备表现出不同的功能组合(在探测/连接期间需从其中选定一个),配置由多个接口组成。 在USB协议中,接口由多个端点组成,代表一个基本的功能,是USB设备驱动程序控制的对象,一个功能复杂的USB设备可以具有多个接口。每个配置中可以有多个接口,而设备接口是端点的...

eydj2008的专栏 9932

【转】USB--设备、配置、接口、端点

转过来谁的,不记得的。在此感谢。仔细看看,还很模糊。 在USB设备的逻辑组织中,包含设备、配置、接口和端点4个层次。 每个USB设备都提供了不同级别的配置信息,可以包含一个或多个配置,不同的配置使设备表现出不同的功能组合(在探测/连接期间需从其中选定一个),配置由多个接口组成。 在USB协议中,接口由多个端点组成,代表一个基本的功能,是USB设备驱动程序控制的对象,一个功能复杂的USB设

anna的专栏 2926

探讨 USB 设备 配置 接口 设置 端点 描述符

文章目录参考目的综述详细介绍USB Device Framework标准 USB 描述符定义1. 设备描述符 (struct usb_device_descriptor)2. 配置描述符(struct usb_config_descriptor)3. 联合接口描述符(struct usb_interface_assoc_descriptor)4. 接口描述符(struct usb_interfac...

u012849539的博客 2921

USB 设备 配置 接口 端点描述符 速记

设备截断    ==设备 配置 接口 端点

gtkknd的专栏 922

USB基础---设备、配置、接口、端点和字符串描述符

在USB系统中每一个端点都有唯一的地址,这是由设备地址和端点号给出的。一个USB端点只能在一个方向上承载数据,从主机到设备(输出端点)或者从设备到主机(输入端点),因此端点可以看作是一个单向的管道,端点0通常为控制端点,用于设备初始化参数等。USB描述符信息存储在USB设备中,在枚举过程中,USB主机会向USB设备发送GetDescriptor请求,USB设备在收到这个请求之后,会将USB描述符信息返回给USB主机,USB主机分析返回来的数据,判断出该设备是哪一种USB设备,建立相应的数据链路通道。

Liudengdeng_的博客 1164

usb设备 配置 接口 端点

在USB设备的逻辑组织中,包含设备、配置、接口和端点4个层次。每个USB设备都提供了不同级别的配置信息,可以包含一个或多个配置,不同的配置使设备表现出不同的功能组合(在探测/连接期间需从其中选定一个),配置由多个接口组成。在USB协议中,接口由多个端点组成,代表一个基本的功能,是USB设备驱动程序控制的对象,一个功能复杂的USB设备可以具有多个接口。每个配置中可以有多个接口,而设备接口是端点的汇集...

weixin_30855099的博客 237
上一篇: Linux环境下USB的原理、驱动和配置
下一篇: Android 4.0 事件输入(Event Input)系统
tron
博客等级 码龄17年 123粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值