基于OHCI的USB主机 —— OHCI(TD结构说明)
2009-12-11 17:29
387 查看
[align=center]
[align=center] [/align] [align=left] [/align] ConditionCode[/b] [align=center]
Name [/align] [/b] | [align=center]HC [/align] [/b] [align=center]Access [/align] [/b] | [align=center]Description [/align] [/b] | ||
[align=center]R [/align] | [align=center]R [/align] | bufferRounding[/b] If this bit is 0, then the last data packet to a TD from an endpoint must exactly fill the defined data buffer. If the bit is 1, then the last data packet may be smaller than the defined buffer without causing an error condition on the TD. | ||
[align=center]DP [/align] | [align=center]R [/align] | Direction/PID[/b] This 2-bit field indicates the direction of data flow and the PID to be used for the token. This field is only relevant to the HC if the D field in the ED was set to 00b or 11b indicating that the PID determination is deferred to the TD. The encoding of the bits within the byte for this field are: | ||
Code [/b] | PID Type [/b] | Data Direction [/b] | ||
00b | SETUP | to endpoint | ||
01b | OUT | to endpoint | ||
10b | IN | from endpoint | ||
11b | Reserved | |||
[align=center] [/align] | [align=center] [/align] | |||
[align=center]DI [/align] | [align=center]R [/align] | DelayInterrupt[/b] This field contains the interrupt delay count for this TD. When a TD is complete the HC may wait for DelayInterrupt[/b] frames before generating an interrupt. If DelayInterrupt[/b] is 111b, then there is no interrupt associated with completion of this TD. | ||
[align=center]T [/align] | [align=center]R/W [/align] | DataToggle[/b] This 2-bit field is used to generate/compare the data PID value (DATA0 or DATA1). It is updated after each successful transmission/reception of a data packet. The MSb of this field is ‘0’ when the data toggle value is acquired from the toggleCarry[/b] field in the ED and ‘1’ when the data toggle value is taken from the LSb of this field. | ||
[align=center]EC [/align] | [align=center]R/W [/align] | ErrorCount[/b] For each transmission error, this value is incremented. If ErrorCount[/b] is 2 and another error occurs, the error type is recorded in the ConditionCode[/b] field and placed on the done queue. When a transaction completes without error, ErrorCount[/b] is reset to 0. | ||
[align=center]CC [/align] | [align=center]R/W [/align] | ConditionCode[/b] This field contains the status of the last attempted transaction. (See Section 0.) | ||
[align=center]CBP [/align] | [align=center]R/W [/align] | CurrentBufferPointer[/b] Contains the physical address of the next memory location that will be accessed for transfer to/from the endpoint. A value of 0 indicates a zero-length data packet or that all bytes have been transferred. | ||
[align=center]NextTD [/align] | [align=center]R/W [/align] | NextTD[/b] This entry points to the next TD on the list of TDs linked to this endpoint | ||
[align=center]BE [/align] | [align=center]R [/align] | BufferEnd[/b] Contains physical address of the last byte in the buffer for this TD |
Code [/align] [/b] | [align=center]Meaning [/align] [/b] | [align=center]Description [/align] [/b] |
0000 | NoError | General TD or isochronous data packet processing completed with no detected errors |
0001 | CRC | Last data packet from endpoint contained a CRC error. |
0010 | BitStuffing | Last data packet from endpoint contained a bit stuffing violation |
0011 | DataToggleMismatch | Last packet from endpoint had data toggle PID that did not match the expected value. |
0100 | Stall | TD was moved to the Done Queue because the endpoint returned a STALL PID |
0101 | DeviceNotResponding | Device did not respond to token (IN) or did not provide a handshake (OUT) |
0110 | PIDCheckFailure | Check bits on PID from endpoint failed on data PID (IN) or handshake (OUT) |
0111 | UnexpectedPID | Receive PID was not valid when encountered or PID value is not defined. |
1000 | DataOverrun | The amount of data returned by the endpoint exceeded either the size of the maximum data packet allowed from the endpoint (found in MaximumPacketSize[/b] field of ED) or the remaining buffer size. |
1001 | DataUnderrun | The endpoint returned less than MaximumPacketSize[/b] and that amount was not sufficient to fill the specified buffer |
1010 | reserved | |
1011 | reserved | |
1100 | BufferOverrun | During an IN, HC received data from endpoint faster than it could be written to system memory |
1101 | BufferUnderrun | During an OUT, HC could not retrieve data from system memory fast enough to keep up with data USB data rate. |
111x | Not Accessed | This code is set by software before the TD is placed on a list to be processed by the HC. |
相关文章推荐
- 基于OHCI的USB主机 —— OHCI(ED结构说明)
- 基于OHCI的USB主机 —— OHCI(TD结构)
- 3.8 基于OHCI的USB主机 —— OHCI(TD结构说明)
- 基于OHCI的USB主机 —— 寄存器层(说明)
- 基于OHCI的USB主机 —— USB设备描述符数据结构
- 3.6 基于OHCI的USB主机 —— OHCI(ED结构说明)
- 3.7 基于OHCI的USB主机 —— OHCI(TD结构)
- 基于OHCI的USB主机 —— OHCI(ED结构)
- 基于OHCI的USB主机 —— USB设备命令介绍
- 基于OHCI的USB主机 —— OHCI(HCCA)
- 基于OHCI的USB主机 —— USB标准请求
- 基于OHCI的USB主机 —— 总体构架 推荐
- 基于OHCI的USB主机 —— OHCI(端点) 推荐
- 基于OHCI的USB主机 —— 寄存器层(说明)
- 基于OHCI的USB主机 —— 中断寄存器初始化
- 基于OHCI的USB主机 —— 描述符说明
- 基于OHCI的USB主机 —— USB设备其它数据结构
- 基于OHCI的USB主机 —— OHCI(批量端口读数据)
- 2.1 基于OHCI的USB主机 —— 寄存器层(说明)
- 基于OHCI的USB主机 —— 背景介绍 推荐