1.RK3399 USB
下图是RK3399 SOC的框图。RK3399包含了2个USB2.0 Host控制器;两个USB3.0 OTG控制器,同时兼容USB2.0。USB3.0使用的是Synopsys公司的IP,驱动也使用Synopsys的dwc3 USB驱动。
2.USB3.0 OTG Controller简介
USB3.0 OTG控制器可以作为主机(Host)、设备(Device),或者根据从USB2.0 PHY和DFP/UFP/Data Role Swap输入的ID状态确定是USB2.0/3.0 OTG A设备和B设备。可以以Super-Speed/High-Speed/Full-Speed/Low-Speed的速度在主机与设备之间进行数据传输。USB3.0 OTG控制器支持如下的特性:
1)通用特性
-
兼容规范
-
Universal Serial Bus 3.0 Specification, Revision 1.0
-
Universal Serial Bus Specification, Revision 2.0
-
eXtensible Host Controller Interface for Universal Serial Bus (xHCI), Revision 1.1
-
-
支持控制、批量(包括流)、中断、等时传输
-
USB3.0模式时可以同时输入输出,最大可达8Gbps的带宽
-
在高延迟的系统中使用描述符缓存和数据预取改善系统性能
-
USB2.0支持链接电源管理协议(LPM);USB3.0支持U0、U1、U2、U3四种状态
-
端点的动态FIFO内存分配
-
低速(LS)模式下支持Keep-Alive特性,高速和全速(HS/FS)模式下支持(micro-)SOFs特性
-
低MIPS(Million Instructions Per Second)支持
- 驱动程序只需要在传输建立时和高等级错误恢复时参与其中
- 硬件自动将数据打包并路由到明确的管道(pipe)中
(2)应用程序接口特性
- AHB 从机(Slave)接口
- AXI 主机(Master)接口
- 可编程的burst lengths,最大可设置到16
- 可处理固定burst address对齐
- 可编程数量的未完成读/写请求(outstanding read/write requests)最多16个
- 并发读/写以获得最佳USB3.0双工操作性能
(3)USB3.0设备特性
- 7个输入(IN)端点,包括端点0
- 6个输出(OUT)端点,包括端点0
- 13个端点传输资源,每个端点对应一个
- 灵活的端点配置,适用于多种应用/USB配置模式
- 硬件自动处理ERDY和burst
- 基于流(Stream-based)的批量端点可以自动控制启动数据移动
- 在数据缓冲区中使用等时数据的等时端点
- 灵活的描述符,具有丰富的功能集,以支持缓冲区中断调节,多次传输,同步,控制和分散的缓冲支持
(4)USB特定类设备特性
- UASP(USB Attached SCSI Protocol)应用程序的流支持
- 分散数据包聚合以支持虚拟USB以太网
- 非中断调度多以太网数据包
- 每端点的FIFO缓冲区分配可变
- 对于等时传输的应用,每个微帧的变长度有效载荷可以调度
- 高精度的同步传输微帧调度
- 可配置的端点类型选择和动态 FIFO 分配,以促进多功能/复合设备实现在set-config或alternate-setting过程中,设备资源被重新配置以满足配置或alternate设置的要求
(4)USB3.0 xHCI控制器特性
- 最多支持64个设备
- 拥有一个interrupter
- 拥有1个USB2.0 port和1个Super-Speed port
- 拥有xHCI调试能力
- USB3.0/USB2.0并发传输,最大达8.48Gbps的带宽
- 支持标准或开源的xHCI和类驱动程序
(5)USB 3.0 Dual-Role Device (DRD) 特性
- 静态设备操作
- 静态主机操作
- 基于ID的USB3.0/USB2.0 OTG A设备和B设备
3.USB3.0 OTG Controller硬件框图
从下面的硬件框图中可以看出,USB3.0 OTG控制器内部的USB2.0和USB3.0的PHY和MAC是独立的,各自使用自己的硬件。因此USB2.0和USB3.0的带宽也是独立计算的,USB2.0的带宽并不会占用USB3.0的带宽。USB3.0 OTG控制器由以下几部分组成:
- Bus Interface/List Management: Register Interface/Data and Descriptors DMA management
- HS/FS/LS MAC : USB2.0 part logic
- SS MAC : SS part logic(USB3.0)
- USB2.0 PHY: UTMI+ interface USB2.0 PHY
- TypeC PHY: Pipe Interface Super-Speed PHY