Edit online

DMA 接收描述符

接收描述符 RDES4~7(RDES4状态信息,RDES5 Reserved,RDES6~7 时钟戳信息)的应用,需要设置寄存器DMA0/1_CONF的ALT_DES_SIZ = 1。

接收描述符 RDES0

1. 接收描述符 RDES0
Bit 域描述
31 RX_PRC,Receive in Process,接收进行中。
  • 0x0:DMA空闲,DMA完成当前的描述符的数据接收
  • 0x1:DMA接收进行中
30 DA_FLT,Destination Address Filter Fail,目的地址过滤失败。
  • 0x0:无效
  • 0x1:指示接收帧的目的地址过滤失败
29:16 RX_FRM_LEN,Receive Frame Length,接收到的帧的长度,此域在最后一个描述符有效,并且无异常发生。
15 RXERR_STS,Receive Error Status,接收错误状态指示位。
  • 0x0:无错误
  • 0x1:出现错误,错误源可能由于RDES0的BIT14/11/7/6/4/3/1或RDES4的[4:3]相应的错误状态引起
14 RX_DES_ERR,Receive Descriptor Error,接收描述符错误,此域在最后一个描述符有效。
  • 0x0:无效
  • 0x1:由于描述符异常导致的接收中断
13 SA_FLT,Source Address Filter Fail,源地址过滤失败。
  • 0x0:无效
  • 0x1:指示接收帧的源地址过滤失败
12 RX_LEN_ERR,Receive Length Error,接收长度错误。
  • 0x0:无效
  • 0x1:指示接收长度错误,接收帧的实际长度与帧的长度域值不一致
11 RXFIFO_OF_ERR,RXFIFO Overflow Error,接收溢出错误。
  • 0x0:无效
  • 0x1:指示接收溢出错误,由于RXFIFO溢出,导致接收帧的损坏
10 VLAN_TAG,VLAN Tag,此位置1表示接收的帧位VLAN帧。
9 START_DES,Start Descriptor,第一个描述符。
  • 0x0:无效
  • 0x1:有效,表示此描述符为第一个描述符
8 END_DES,End Descriptor,最后一个描述符。
  • 0x0:无效
  • 0x1:有效,表示此描述符为最后一个描述符
7 TMSTMP_AVL/ IP_CHSM_ERR/ GNT_FRM
此位可指示三种状态:
  • TMSTMP_AVL,Timestamp Available,置1表示接收的帧已打时间戳,从RDES6~7可获得;
  • IP_CHSM_ERR,IP Checksum Error,置1表示IP校验和错误或表示接收帧位非IPv4帧;
  • GNT_FRM,Giant Frame,置1表示接收的帧位Giant Frame。
6 LT_COL_ERR,Late Collision Error,Late Collision错误。
  • 0x0:无效
  • 0x1:接收发生Late Collision错误
5 RX_FRM_TYP,Receive Frame Type,接收帧的类型。
  • 0x0:接收帧为IEEE 802.3类型的帧
  • 0x1:接收帧为以太网类型的帧
4 RX_WD_TO_ERR,Receive Watchdog Timeout Error,接收看门狗的超时错误。
  • 0x0:无效
  • 0x1:发生接收看门狗的超时错误
3 RX_ERR,Receive Error,接收过程出现RX_ERR信号。
  • 0x0:无效
  • 0x1:接收过程出现RX_ERR信号
2 Reserved
1 RX_CRC_ER,RReceive CRC Error,接收CRC错误,此域只有在最后一个描述符有效。
  • 0x0:无效
  • 0x1:接收帧出现CRC错误
0 EXT_STS_AVA/ RX_MAC_ADDR
  • EXT_STS_AVA,Extend Status Available,当时钟戳或IP校验和Offload功能使能,此位置1表示RDES4生效。
  • RX_MAC_ADDR,Rx MAC Address,当时钟戳、IP校验和Offload功能均未使能,此位置1表示接收帧的目的地址匹配MACAddress1~7之一。此位清0表示接收帧的目的地址匹配MAC Address0。

接收描述符 RDES1

2. 接收描述符 RDES1
Bit 域描述
31 DIS_COMP_INT,Disable Complete Interrupt,禁止接收完成中断的产生。0x0:未禁止0x1:禁止
30:29 Reserved
28:16 RX_BUF2_SIZ,Receive Buffer2 Size,接收缓存2的空间大小。
15 RX_END_RNG,Receive End of Ring,指示在DMA的Ring模式下,此描述为最后的描述符,完成后跳转回起始描述符。
14 RX_DMA_MOD,Receive DMA Mode,接收DMA的模式。0x0:Ring模式;0x1:Chain模式
13 Reserved
12:0 RX_BUF1_SIZ,Receive Buffer1 Size,接收缓存1的空间大小。

接收描述符 RDES2

3. 接收描述符 RDES2
Bit 域描述
31:0 BUF1_ADDRBuffer1 Address,Buffer1地址指针,Buffer1的物理地址。

接收描述符 RDES3

4. 接收描述符 RDES3
Bit 域描述
31:0 BUF2_ADDR/NXT_DES_ADDR

在DMA采用Ring模式时,这里为BUF2_ADDR,而采用Chain模式时,这里为NXT_DES_ADDR。BUF2_ADDR,Buffer2 Address,Buffer2地址指针,Buffer2的物理地址。NXT_DES_ADDR,Next Descriptor Address,下一个描述符的地址,指向下一个描述符的物理地址,从而将描述符连接起来。

接收描述符 RDES4

5. 接收描述符 RDES4
Bit 域描述
31:21 Reserved
20:18 VLAN_TAG_PRI_V,VLAN Tag Priority Value,此域内容填入接收到的包的VLAN TAG用户值域。
17 AV_TAG_PKT_RCD,AV Tagged Packet Received,此位置1表示接收到带AV标签的数据包。
16 AV_PKT_RCD,AV Packet Received,此位置1表示接收到AV包。
15 Reserved
14 TMSTMP_DRP,Timestamp Dropped,时钟戳丢失,由于RXFIFO溢出,导致时钟戳丢失。0x0:无效;0x1:时钟戳丢失
13 PTP_VER,PTP Version,PTP版本。0x0:IEEE1588;0x1:IEEE1588V2
12 RX_PTP_FRM,Received PTP Frame Type,接收到PTP帧的类型。0x0:接收到PTP报文通过UDP-IPV4或UDP-IPV6的形式传送0x1:接收到PTP报文直接通过以太网帧形式传送
11:8 PTP_RX_MSG_TYP,Received PTP Message Type,接收到的PTP消息报文类型。
  • 0x0:无PTP报文
  • 0x1:SYNC报文
  • 0x2:Follow Up报文
  • 0x3:Delay_Req报文
  • 0x4:Delay_Resp报文
  • 0x5:Pdelay_Req报文
  • 0x6:Pdelay_Resp报文
  • 0x7:Pdelay_Resp_Follow_Up报文
  • 0x8:Announce报文
  • 0x9:Management报文
  • 0xA:Signaling报文
  • 0xB~0xE:Reserved
  • 0xF:PTP Packet with Reserved message type
7 RX_IPV6_PKT,Received IPV6 Packet,接收到IPV6包。
  • 0x0:无效
  • 0x1:接收到的IP包为IPV6包
6 RX_IPV4_PKT,Received IPV4 Packet,接收到IPV4包。
  • 0x0:无效
  • 0x1:接收到的IP包为IPV4包
5 DIS_IP_CHSUM,Disable IP Checksum Function,关闭IP校验和功能。
  • 0x0:未关闭
  • 0x1:关闭IP校验和功能
4 IP_PL_ERR,IP Payload Error,IP包校验错误,接收到的IP包的TCP/UDP/ICMP的校验和错误,或长度错误。
  • 0x0:无错误
  • 0x1:出现IP包校验和错误
3 IP_HD_ERR,IP Header Error,接收到的IP包的首部校验和与计算的校验和不一致,或者IP版本与Ethernet Type域值不一致。
  • 0x0:无错误
  • 0x1:出现首部校验和错误
2:0 IP_PKT_TYP,IP Packet Type,IP包类型,此域只有在BIT6/7生效时才有效。
  • 0x0:未知类型
  • 0x1:UDP包
  • 0x2:TCP包
  • 0x3:ICMP包
  • others:Reserved

接收描述符 RDES6

6. 接收描述符 RDES6
Bit 域描述
31:0 RX_STMP_LO,Receive Timestamp Low 32bit,接收时间戳的低32位,此域由DMA自动填写,与TDES7的高32bit组成完整的时间戳。

接收描述符 RDES7

7. 接收描述符 RDES7
Bit 域描述
31:0 RX_STMP_HI,Receive Timestamp High 32bit,发送时间戳的高32位,此域由DMA自动填写,与TDES7的低32bit组成完整的时间戳。