USB3.0接口——(6)Device数据传输模型

USB3.0接口系列:

USB3.0接口——(1)基础知识

USB3.0接口——(2)数据结构

USB3.0接口——(3)协议层(包格式)

USB3.0接口——(4)生产消费者模型

USB3.0接口——(5)Host数据传输模型

USB3.0接口——(6)Device数据传输模型

1.Device数据传输模型

Device模式下,IP厂商自定义实现USB3.0 Device。
数据传输机制由厂商实现,区别于xHCI标准,相对来说简单一些。
在这里插入图片描述

1.1EP命令结构

在这里插入图片描述
n:端点序号。
在这里插入图片描述

1.1.1.DEPCFG

设置EP配置。

在这里插入图片描述
在这里插入图片描述

1.1.2.DEPXFERCFG

在这里插入图片描述

1.1.3.DEPGETSTATE

1.1.4.DEPSSTALL

1.1.5.DEPCSTALL

1.1.6.DEPSTRTXFER

在这里插入图片描述

1.1.7.DEPUPDXFER

如果软件将当前使用的TRB缓冲区的HWO位由0更新为1,则必须执行Update Transfer command。硬件会使用该信息来re-cache TRB。

1.1.8.DEPENDXFER

在这里插入图片描述

软件使用该命令来请求DMA停止端点/特殊流上的TRB的传输资源索引,并且DEPCMD的ForceRM需设置为0。

1.1.9.DEPSTARTCFG

1.2.Event Buffer

1.2.1.DEPEVT

Device Endpoint-Specific Event,设备特殊端点事件。(Event[0]=0x0)
在这里插入图片描述

1.2.2.DEVT

Device-Specific Event,设备特殊事件。(Event[0]=0x1,Event[7:1]=0x00)

在这里插入图片描述
在这里插入图片描述

1.3.Device TRB数据结构

在这里插入图片描述

1.3.1.dWord 0

1.3.1.1.BPTRL

Buffer-Pointer-Low,数据buffer指针的低32位地址。(BPTR[31:0])

1.3.2.dWord 1

1.3.2.1.BPTRH

Buffer-Pointer-High,数据buffer指针的高32位地址。(BPTR[63:32])

1.3.3.dWord 2

1.3.3.1.TRBSTS

在硬件释放TRB之前更新该字段信号,用以反馈TRB状态信息。
在这里插入图片描述

1.3.3.2.SPR

如果GUCTL1[DEV_TRB_OUT_SPR_IND]为1,表示最后一个要传输处理的TRB接收到一个短包。
如果GUCTL1[DEV_TRB_OUT_SPR_IND]为0,该字段保留。

1.3.3.3.PCM1

Packect Count M1。
对于高速、高带宽的同步IN端点,Isoc First TRB中的该字段表示缓冲区描述符中的包总数减去1。

1.3.3.4.BUFSIZ

如果TRB的CHN=0和HWO=0,该字段表示缓存描述符剩余的缓存字节数(以字节为单位)。(有效值为0(16MB-1byte),即016777216 byte)

对于Link TRB,则该字段应为0。

1.3.4.dWord 3

1.3.4.1.Stream ID/SOF Number
1.3.4.1.1.Stream ID

对于bulk EP的stream管道,传输TRB的流ID是连续的。所有TRBs的流ID必须一样。

1.3.4.1.2.SOF Number

对于同步EP表示发送或接收此TRB缓冲区的最后一个数据包的帧号。

1.3.4.2.IOC

Interrupt on Complete,完成中断。
当TRB的IOC设置为1时,一旦传输buffer被处理完成,控制器会在XferInProgress event的事件状态里产生一个IOC位标志。这表示缓冲区可供软件重复使用或释放。

1.3.4.3.ISP/IMI
1.3.4.3.1.ISP(Interrupt on short packect)

对于OUT EP,当CSP=1和LSt=0时,如果ISP设置为1,表示控制器接收到短包时要产生一个XferInProgress事件。

1.3.4.3.2.IMI

对于Isochronous EP,如果该位为1,控制器产生一个XferInProgress事件来表示内部的Buffer Descriptor处于“missed isoc”状态——丢失同步数据包。
在这里插入图片描述

1.3.4.4.TRBCTL

在这里插入图片描述
注意:Control-Data——第一个TRB,控制传输data阶段。
Control-Data-2+——除第一个TRB之外,控制传输数据阶段。

1.3.4.5.CSP

Continue on Short Packect。
仅适用于当OUT EP接收到一个短包时:
如果该位设置为1,则要求控制器接收到一个短包后,继续下一个Buffer Descriptor的处理。(对于Iso EP该位必须设置为1——由于Iso EP是同步传输,是周期性的,对于接收到短包的行为,可以忽略该短包,继续下一个描述符的处理,实现同步性)
如果该位设置为0,则要求控制器接收到一个短包后产生一个XferComplete事件并且移除流。

1.3.4.6.CHN

Chain Buffers,缓存链。
应用于OUT和IN EP。
软件设置为1时,表示当前TRB与下一个TRB互相关联,用于组建TRBs链表——TD。(TRBs中的,最后一个TRB的CHN位应为0,其他TRB的CHN应为1)
一个Buffer Descriptor中表示有一个或多个TRBs。该位用于识别TRBs是否包含Buffer Descriptor。当Buffer Descriptor的最后一个TRB的LST位设置为1时,CHN位总是为0。

1.3.4.7.LST

Last TRB,最后一个TRB。
表示链表的最后一个TRB。完成传输Buffe处理后,控制器会停止EP或bulk-stream的传输,并且产生一个XferComplete事件。流会由硬件自动移除。

1.3.4.8.HWO

Hardware Owner of Descriptor,硬件拥有描述符所有权,表示当前TRB属于硬件所有。
软件创建好TRB后,设置该位为1,并且在硬件将该位清0前,软件都不能随意改变该位。
当然,OUT EP的短包和link TRBs除外。
由于硬件会自动检查该位来判断TRB条目是否有效,软件必须在准备好TRB的其他3个DWORDs的有效信息后,及时将该位置1。

1.4.Device TRB类型

1.4.1.Normal,Isochronous,Status TRB

1.4.1.1.Normal TRB

用于Bulk/Control-Data/Interrupt端点传输。
在这里插入图片描述
Example:
控制传输data stage(IN 512 Byte)

第一个TRB的控制传输data stage:
在这里插入图片描述
非第一个TRB的控制传输data stage:
在这里插入图片描述

1.4.1.2.Isochronous TRB

在这里插入图片描述
Example:
第1个Isoc-first TRB uSOF为1,CHN为0(表示未与下一个TRB关联),第2个Isoc-first TRB uSOF为2,IOC为1(产生传输完成中断),第3个为Link TRB(指示当前Ring结束,跳转到Ring开头)。
在这里插入图片描述
第1个Isoc-first TRB uSOF为1,CHN为1(表示与下一个非 Isoc-first TRB关联),第2个Isoc TRB uSOF也为1。
在这里插入图片描述

1.4.1.3.Status TRB

1.4.2.Setup,Status TRB

1.4.2.1.Setup TRB

在这里插入图片描述
Example:
在这里插入图片描述

1.4.2.2.Status TRB

在这里插入图片描述
Example:
2阶段setup传输(无data stage):
在这里插入图片描述
3阶段setup传输(有data stage):
在这里插入图片描述

1.4.3.Link TRB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值