作者| sigmastar_项文强
本期技术专题将介绍在设备端配置 UVC 的方法以及设备端相关应用的实现方法。
1. 概述
本文将介绍在设备端配置 UVC 的方法以及设备端相关应用的实现方法。
2. 关键词介绍
EP
EP代表Endpoint,即端点,usb 传输协议中重要的概念。在USB通信中,数据的传输是通过端点来进行的。一个USB设备可以包含一个或多个端点,每个端点都有唯一的端点地址,用于在设备和主机之间进行数据传输。其中端点的传输方式主要分为控制传输(Control)、批量传输(Bulk )、终端传输(Interrupt )、等时传输(Isochronous )。
interval
在USB传输中,数据传输是以帧为单位进行传输的,interval 也就是帧间隔,是用来描述两个连续的数据传输之间时间间隔的一个参数。
maxpacket
USB 设备是通过 endpoint 进行数据传输的,而 endpoint 进行传输的时候是以包(packet)的形式进行传输的,maxpacket 就定义了对应 endpoint 最大包的大小,单位为字节。
burst
在 USB 通信中,数据传输被分为帧(frame),每个帧都包含一个特定数量的数据包(packet)。Burst 就是在一个帧周期内,USB 主机或设备发送或接收多个数据包的过程。由于 USB 的带宽是有限的,使用 Burst 可以提高数据传输的速度,从而提高设备的性能。
mult
代表一次传输可以发送多少maxpacket的数量,取决于其EP下的硬件FIFO深度。
isoc
isoc传输是一种基于时间的传输方式,它提供了一种实时传输的机制,用于传输音频和视频等实时数据。isoc传输的特点是固定带宽和数据传输速率,但是对数据包的重传和丢失不作任何处理,因此不适合传输对数据传输延迟和数据完整性要求较高的数据。
bulk
bulk传输是一种面向传输的传输方式,它提供了一种高效的机制,用于传输大量数据。bulk传输的特点是不保证数据传输速率,但是对于数据包的重传和丢失进行了处理,因此适合传输对数据传输延迟和数据完整性要求不高的数据。
PU
PU(Processing Unit)是用于描述视频处理单元的描述符,它包含了视频处理单元的各种属性和控制选项。
XU
XU(Extension Unit)是用于描述扩展单元的描述符,它允许设备厂商定义和支持自定义的功能和控制选项,以扩展设备的功能。
ConfigFs
ConfigFs(Configuration Filesystem)是一个在 Linux 内核中实现的虚拟文件系统,用于配置和管理设备和驱动程序的运行时参数。它通过将设备和驱动程序的配置参数表示为文件和目录的形式,使得用户可以通过修改这些文件和目录来配置和控制设备的行为。
3. 硬件端点说明
端点作为USB传输的唯一实体,设备和主机之间的通信都是由端点来完成,不同的端点配置会对设备的传输速率产生影响,所以下文会对端点配置如何对传输速率的影响有所介绍。此外在使用UVC设备同时可能会复合其他功能,例如RNDIS、DFU,因为每一个硬件端点的资源有限,如果端点参数配置不合理可能会造成EP端点分配不到的情况。
Ispahan系列EP信息 该系列chip只有usb2.0,使用udc-msb250x.ko
Pudding系列EP信息 该系列chip有usb2.0,使用udc-msb250x.ko,也有usb3.0,使用dwc3.ko。
使用udc-msb250x.ko的,EP为:
使用dwc3.ko的,EP为:
Tiramisu系列EP信息,同Pudding系列
Muffin系统EP信息 该系列chip有usb2.0,使用udc-msb250x.ko,也有usb3.0,使用dwc3.ko。
使用udc-msb250x.ko的,EP为:
使用dwc3.ko的,EP为:
Maruko系列EP信息 该系列chip同时有USB2.0 device usb2.0的EP信息为:
Souffle系列EP信息 该系列chip同时有USB2.0和USB3.0 usb2.0的EP信息为:
usb3.0的EP信息为:
3.1. 带宽速度说明
说明:8000代表USB一秒内可以传输的最大次数,USB2.0协议中定义了帧和微帧的概念,每个帧长为1ms,USB高速模式下,每个帧又分为8个微帧,即每个微帧长度为125us。所以理论上1s内USB可以发送的最大次数是8000。
3.1.1. bulk mode
Interval:1-16
maxpacketsize :USB2.0协议中最大值可设置为512,USB3.0协议中最大值可设置为1024
burst:1-13 最大值视硬件情况有所改变
因为bulk的实际带宽会根据视频流的分辨率等因素变化,所以具体传输速率要根据实际Device端的端点配置和Host端的空闲带宽决定。
3.1.2. isoc mode
usb2.0–>max_loadsize = 8000/(2^(Interval-1))* maxpacketsize * mult
usb3.0–>max_loadsize = 8000/(2^(Interval-1))* maxpacketsize * mult * burst
取值范围
Interval:1-16
maxpacketsize :最大设置为1024
mult:1-3
burst:1-13 最大值视硬件情况有所改变
例:Interval=1,maxpacketsize =1024,mult=3,burst=5
USB2.0下对应其使用的EP速率为:23.4MB/s
USB3.0下对应其使用的EP速率为:117.1MB/s
3.2. EP端点分配说明
3.2.1. 常用设备EP占用
使用方向 EP占用情况
3.2.2. EP端点分配举例
若目前的USB2.0硬件EP的情况为下表:
如果使用UVC(IN)+UAC(IN)+RNDIS(bulk-IN+bulk-OUT+int-IN),会占用五个EP,如果设置的maxpacketsize为512,可以支持maxpacketsize大于等于512的EP只有四个,所以无法满足分配情况。
》》原帖地址
未完待续.
往期回顾
串口应用参数设置说明
SSD21X/22X如何支持USB转Ethernet?
RTOS下如何定位TTL屏颜色显示不对的问题?
如何搭建USB RNDIS并使用RTSP出流?
RTOS如何适配USB Host?
扫码进入论坛
原厂答疑|产品选型|官方资源
扫码咨询客服
SDK下载|芯片、开发板购买