嵌入式Lee

文章数:196 被阅读:578672

账号入驻

基于DWC_ether_qos的以太网驱动开发-描述符格式介绍

最新更新时间:2023-09-04
    阅读数:

. 描述符格式

1.1 前言

前面我们介绍了描述符链表的工作模式,重点是了解环形链表是如何环形的,以及相关的寄存器。驱动编写就需要更进一步,了解描述符的具体内容,即 4 个描述符的每个字段的含义。

描述符包含两个缓冲区指针和长度信息 , 以及一些其他的控制信息。

下面的读取格式指的是硬件读,软件写的格式,回写格式相反。

1.2 发送描述符

读取格式

这里的读取指的硬件去读取,即软件写硬件读。


TDES0

名字

描述

31:0

BUF1AP

缓冲区 1 地址指针或 TSO 头地址指针这些位表示缓冲区 1 的物理地址。当设置以下位时,这些位指示 TSO 标头地址指针:

■ TSE bit of TDES3

■ FD bit of TDES3

TDES1

名字

描述

31:0

BUF2AP

缓冲区 2 或缓冲区 1 地址指针 . 当使用描述符环结构时,该位指示缓冲区 2 的物理地址。缓冲区地址对齐没有限制。在 40 48 位寻址模式中,这些位表示缓冲区 1 地址指针的最高有效 8 16 .

TDES2

名字

描述

31

IOC

本描述符处理完产生中断

30

TTSE/TMWD

传输时间戳启用或外部 TSO 内存写入禁用 如果 TSE 位未 置位 ,则此位启用描述符引用的传输数据包的 IEEE1588 时间戳

如果 TSE 位被 置位 并且外部 TSO 存储器被启用,则设置该位将禁用该数据包的外部 TSO 内存写入

29:16

B2L

缓冲区 2 长度 驱动程序设置此字段。设置后,此字段指示缓冲区 2 的长度。

15:14

VTIR

VLAN 标记插入或替换这些位请求 MAC 在传输数据包之前执行 VLAN 标记或取消标记。当为数据包启用 VLAN 标签插入、替换或删除时,应用程序必须适当设置 CRC 填充控制位。以下列表描述了这些位的值:

■ 2'b00: 不要添加 VLAN 标记。

■ 2'b01: 在传输之前从数据包中删除 VLAN 标签。此选项应仅用于 VLAN 数据包。

■ 2'b10 :插入一个 VLAN 标签,标签值编程在 MAC_VLAN_Incl 寄存器或上下文描述符中。

■ 2'b11 :用 MAC_VLAN_Incl 寄存器或上下文描述符中编程的标签值替换数据包中的 VLAN 标签。此选项应仅用于 VLAN 数据包。

当在配置核心时选择启用 SA VLAN 插入 Tx 选项时,这些位有效

13:0

HL B1L

标头长度或缓冲区 1 长度对于标头长度,只取位 [9:0] 。大小 13:0 仅适用于解释缓冲区 1 长度时。

如果通过 TDES3 TSE 位启用 TCP 分段卸载功能,则此字段等于标头长度。当 TSE 位在 TDES3 中设置时,报头长度包括从以太网源地址到 TCP 报头结束的长度(以字节为单位)。 TSO 功能支持的最大标头长度为 1023 字节。 TSO 功能支持的最大标头长度为 1023 字节。

如果未启用 TCP 分段卸载功能,则此字段等于缓冲区 1 长度。

TDES3

名字

描述

31

OWN

软件准备完描述符后,置位该位,表示 DMA 拥有该描述符, DMA 处理完该描述符后清零该位,此时软件拥有该描述符。

注意该位软件要在描述符准备完后最后置位。该位实际是硬件和软件的读写互斥量,硬件和软件都是 R-M-W 的操作次序。

30

CTXT

设置为 1 表示 Context 类型的描述符,正常设置为 0.

29

FD

设置为 1 表示本描述符对应的缓冲区数据是 MAC 帧的第一段。

28

LD

设置为 1 表示本描述符对应的缓冲区数据是 MAC 帧的最后段。此时 B1L B2L 不能为 0.

27:26

CPC

CRC 和填充控制

该字段控制 Tx 数据包的 CRC 填充 插入。仅当设置了第一个描述符位( TDES3[29] FD 时,此字段才有效。以下列表描述了位 [27:26] 的值:

■ 2’b00:CRC 和填充插入 MAC 在长度大于或等于 60 字节的传输数据包的末尾附加循环冗余校验( CRC )。 MAC 自动将填充和 CRC 附加到长度小于 60 字节的数据包中。

■ 2'b01:CRC 插入(禁用填充插入) MAC 在传输数据包的末尾附加 CRC ,但不附加填充。应用程序应确保从传输缓冲区传输的数据包中存在填充字节,也就是说,从传输缓冲区时传输的数据包包长大于或等于 60 字节。

■ 2’b10 :禁用 CRC 插入 MAC 不会在传输数据包的末尾附加 CRC 。应用程序应确保填充和 CRC 字节存在于从传输缓冲区传输的数据包中。

■ 2'b11:CRC 替换 MAC 用重新计算的 CRC 字节替换传输数据包的最后四个字节。应用程序应确保填充和 CRC 字节存在于从传输缓冲区传输的数据包中。

此字段仅对第一个描述符有效。注意:设置 TSE 位时, MAC 会忽略此字段,因为 CRC 填充 插入总是用于分段。

25:23

SAIC

SA MAC 地址插入控制

这些位请求 MAC 将以太网数据包中的源地址字段添加或替换为 MAC 地址 0 寄存器中给定的值。当为数据包启用 SA 插入控制时,应用程序必须适当设置 CRC 填充控制位。位 25 指定用于插入或替换源地址的 MAC 地址寄存器 1 0 )值。以下列表描述了位 [24:23] 的值:

■ 2'b0 0 :不包括源地址

■ 2'b01 : 包括或插入源地址。为了实现可靠的传输,应用程序必须提供没有源地址的帧。 ■ 2'b10 :替换源地址。为了实现可靠的传输,应用程序必须为帧提供源地址。

■ 2'b 11 :保留

当在配置核心时选择 Enable SA and VLAN Insertion on Tx (启用 SA VLAN 插入 Tx )选项并且设置了 First Segment control bit TDES3[29] )时,这些位在 EQOS-DMA EQOS-AXI EQOS-AHB 配置中有效。此字段仅对第一个描述符有效。

22:19

SOLTNUM

THL

SOLTNUM: AV 模式下的插槽号控制位

这些位指示应从 TDES0 TDES1 寻址的相应缓冲器中取出数据的时隙间隔

当提取传输描述符时, DMA 将该字段中的时隙号值与 RSN 字段 DMA_CH#_slot_Function_Control_Status 中保持的时隙间隔进行比较。只有当值匹配时,它才会从缓冲区中获取数据。这些位仅对 AV 频道有效

THL:TCP 标头长度如果设置了 TSE 位,则此字段包含 TCP 标头的长度。此字段的最小值必须为 5 。此字段仅对第一个描述符有效。

18

TSE

TCP 分段启用

当该位被设置时, DMA 对数据包执行 TCP 分段。仅当 FD 位被设置时,此位才有效

17:16

CIC/TPL

校验和插入控制或 TCP 有效负载长度这些位控制校验和计算和插入。以下列表描述了位编码:

■2'b00: 校验和插入已禁用。

■ 2'b01: 仅启用 IP 标头校验和计算和插入。 ■ 2'b10 :启用 IP 标头校验和和有效负载校验和计算和插入,但硬件中不计算伪标头校验和。

■ 2'b11:IP 报头校验和和有效载荷校验和计算和插入启用,伪报头校验和在硬件中计算。

当选择 Enable Transmit TCP/IP Checksum Offload (启用传输 TCP/IP 校验和卸载)选项并重置 TSE 位时,此字段有效。设置 TSE 位时,此字段包含 TCP 有效负载长度的高位 [17:16] 。这允许 TCP 数据包长度字段跨越 TDES3[17:0] ,以提供 256KB 的数据包长度支持。此字段仅对第一个描述符有效。

15

TPL

保留或 TCP 有效负载长度当 TSE 位被重置时,该位被保留。设置 TSE 位时,这是 TCP 有效载荷长度 [17:0] 的第 15

只有在配置核心时选择了 Enable TCP Segmentation Offloading for TCP/IP Packets (为 TCP/IP 数据包启用 TCP 分段卸载)选项时,此字段才有效。

14:0

FL/TPL

数据包长度或 TCP 有效负载长度此字段等于要传输的数据包的长度(以字节为单位)。当 TSE 位未设置时,此字段等于要发送的数据包的总长度: Ethernet Header Length + TCP /IP Header Length – Preamble Length –

SFD Length + Ethernet Payload Length TSE 位被设置时,该字段等于 TCP 有效载荷长度的低 15 位。此长度不包括以太网标头或 TCP/IP 标头长度。

回写格式

这里的回写指的硬件回写,即软件读硬件写。

注意 : 回写格式仅适用于相应数据包的最后一个描述符。 LD 位( TDES3[28] 置位的 描述符中, DMA 在描述符中回写相应传输数据包的状态和时间戳信息

TDES0

名字

描述

31:0

TTSL

传输数据包时间戳低 DMA 使用为相应传输数据包捕获的时间戳的最低有效 32 位来更新此字段。只有在数据包的第一个描述符中设置了 TDES2 TTSE 位时, DMA 才会写入时间戳。仅当描述符中的 Last Segment 位( LS )已设置并且 timestamp status TTSS )位已设置时,此字段才具有时间戳。

TDES1

名字

描述

31:0

TTSH

传输数据包时间戳高 DMA 使用为相应接收数据包捕获的时间戳的最高有效 32 位来更新此字段。只有当 TDES2 TTSE 位设置在数据包的第一个描述符中时, DMA 才写入时间戳。仅当描述符中的 Last Segment 位( LS )已设置并且 timestamp status TTSS )位已设置时,此字段才具有时间戳。

TDES2

保留

TDES3

名字

描述

31

OWN

见读取格式

30

CTXT

29

FD

28

LD

27 16

保留


17

TTSS

Tx 时间戳状态此状态位指示已捕获对应传输数据包的时间戳。当设置该位时, TDES2 TDES3 具有为传输数据包捕获的时间戳值。仅当描述符中的最后一段控制位( TDES3[28] )设置时,此字段才有效。此位仅在启用 IEEE1588 时间戳功能时有效;否则,它将被保留。

16

保留


15

ES

错误摘要 此位表示以下位的逻辑或:

■ TDES3[0]: IP Header Error

■ TDES3[14]: Jabber Timeout

■ TDES3[13]: Packet Flush

■ TDES3[12]: Payload Checksum Error

■ TDES3[11]: Loss of Carrier

■ TDES3[10]: No Carrier

■ TDES3[9]: Late Collision

■ TDES3[8]: Excessive Collision

■ TDES3[3]: Excessive Deferral

■ TDES3[2]: Underflow Error

14

JT

Jabber 超时此位表示 MAC 发送器已经历 Jabber 暂停。仅当未设置 MAC_Configuration 寄存器的 JD 位时,才设置该位。

13

FF

数据包刷新此位表示 DMA MTL 由于 CPU 给出的软件刷新命令而刷新了数据包。

12

PCE

有效负载校验和错误此位表示校验和卸载引擎出现故障,并且没有将任何校验和插入封装的 TCP UDP ICMP 有效负载中。此故障可能是由于字节不足,如 IP 标头的有效负载长度字段所示,或者 MTL 在存储和转发模式下开始将数据包转发到 MAC 发送器,但尚未计算校验和。第二种错误情况仅在传输 FIFO 深度小于正在传输的以太网数据包的长度时发生,以避免死锁, MTL FIFO 满时开始转发数据包,即使在存储和转发模式下也是如此。当未启用完全校验和卸载引擎时,保留此位

11

LOC

载波丢失该比特表示在分组传输期间发生载波丢失(即,在分组传输过程中, gmii_crs_i 信号在一个或多个传输时钟周期内不活动)。这仅对在没有冲突的情况下发送的分组有效,并且当 MAC 在半双工模式下操作时有效。

10

NC

无载波该位表示在传输期间没有断言来自 PHY 的载波感测信号

9

LC

延迟冲突该位表示由于在冲突窗口之后发生冲突而中止了分组传输(在 MII 模式中包括 Preamble 64 字节时间和在 GMII 模式中包括 Preamble Carrier Extension 512 字节时间)。如果设置了 欠流错误 ,则此位无效

8

EC

过度冲突此位表示在尝试传输当前数据包时,在连续发生 16 次冲突后,传输被中止。如果在 MAC_Configuration 寄存器中设置了 DR 位,则在第一次冲突之后设置该位,并且中止数据包的传输

7:4

CC

冲突计数此 4 位计数器值表示在传输数据包之前发生的冲突数。设置 EC 位时,计数无效。

3

ED

过度延迟此位表示如果在 MAC_Configuration 寄存器中设置了 DC 位,则由于超过 24288 位时间的过度延迟(在 1000Mbps 模式或 Jumbo Packet enabled 模式下为 155680 位时间),传输结束。

2

UF

欠流错误此位表示 MAC 中止了数据包,因为数据从系统内存延迟到达。下溢错误可能是由于以下任一情况而发生的: ■ DMA 在传输数据包时遇到空的传输缓冲区 应用程序填充 MTL Tx FIFO 的速度慢于 MAC 传输速率。传输过程进入暂停状态,并设置与 MTL_Interrupt_Status 寄存器中的队列相对应的下溢位。

1

DB

延迟位此位表示 MAC 由于载波的存在而在发送之前延迟。此位仅在半双工模式下有效。

0

IHE

IP 标头错误设置 IP 标头错误时,此位表示校验和卸载引擎检测到 IP 标头错误。此位仅在启用 Tx 校验和卸载时有效。否则,它将被保留。如果 COE 检测到 IP 标头错误,如果以太网类型字段指示 IPv4 有效负载,它仍然插入 IPv4 标头校验和。

传输上下文描述符

见手册 21.5.2

1.3 接收描述符

读取格式

在接收描述符(读取格式)中,如果缓冲区地址字段全部为 0 ,则 DWC_ether_qos 不会将数据传输到该缓冲区,并跳到下一个缓冲区或下一个描述符。

RDES0

名字

描述

31:0

BUF1AP

标题或缓冲器 1 地址指针 .

当通道的控制寄存器的 SPH 位被复位时,这些位指示缓冲器 1 的物理地址。当 SPH 位被设置时,这些位指示报头缓冲器的物理地址, Rx DMA 在该物理地址写入接收到的分组的 L2/L3/L4 报头字节。应用程序可以为该缓冲器编程一个字节对齐的地址,这意味着该字段的 LS 位可以是非零的。然而,在传输数据包的开始时, DMA 执行 RDES0[1:0] (或者在 64-/128 位配置的情况下, RDES0[2:0]/[3:0] )为零的写入操作。然而,分组数据按照缓冲区地址指针给出的实际偏移量进行移位。如果地址指针指向存储数据包中间或最后部分的缓冲区, DMA 将忽略偏移地址并写入数据宽度所指示的完整位置

RDES1

名字

描述

31:0

BUF1AP

64 位地址模式的 BUF1AP 的高 32 位, 32 位不使用

RDES2

名字

描述

31:0

BUF2AP

缓冲器 2 地址指针这些位表示缓冲器 2 的物理地址。当设置 DMA_CH#_Control 寄存器的 SPH 位时,缓冲区地址指针必须与总线宽度对齐,即 RDES2[3:0 2:0 1:0]=0 ,对应于 128 64 32 总线宽度。 LSB 在内部被忽略。当 DMA_CH#_Control 寄存器的 SPH 位复位时, RDES2 值没有限制。然而, RxDMA 仅在传输数据包的起始字节时使用指针地址的 LS 位。如果 BUF2AP 给出了存储数据包中间或最后部分的缓冲器的地址, DMA 将忽略 BUF2AP[3:0 2:0 1:0] (对应于 128 64 32 位数据总线)并写入完整位置。

RDES3

名字

描述

31:0

OWN

TX 描述符

30

IOC

TX 描述符

29:26

保留


25

BUF2V

缓冲区 2 地址有效当设置此位时,它向 DMA 指示 RDES2 中指定的缓冲区 2 的地址有效。应用程序必须设置此位,以便 DMA 可以使用 RDES2 中的缓冲区 2 地址所指向的地址来写入接收到的数据包数据。

24

BUF1V

缓冲区 1 地址有效设置后,向 DMA 指示 RDES1 中指定的缓冲区 1 的地址有效。如果 DMA 可以使用 RDES1 中缓冲区 1 地址所指向的地址来写入接收到的数据包数据,则应用程序必须设置此值

23:0

保留


回写格式

RDES0

名字

描述

31:16

IVT

内部 VLAN 标记如果设置了 RDES3 RS0V 位,则此字段包含接收到的数据包的内部 VLAN 标记。仅当启用了双 VLAN 标记处理和 VLAN 标记剥离时,此选项才有效。

15:0

OVT

外部 VLAN 标记如果设置了 RDES3 RS0V 位,则此字段包含接收到的数据包的外部 VLAN 标记

RDES1

仅对最后一个描述符有效(设置了 RDES3[28]

名字

描述

31:16

OPC

OAM Sub-Type Code :

RDES3 的比特 [18:16] 被设置为 3’b111 ;

MAC Control Packet opcode :

RDES3 的比特 [18:16] 被设置为 3’b110

15

TD

丢弃的时间戳

此位表示捕获了此数据包的时间戳,但由于溢出,它在 MTL Rx FIFO 中被丢弃。只有选择时间戳功能时,此位才可用。否则,保留此位

14

TSA

可用时间戳当存在时间戳时,此位指示时间戳值在上下文描述符字 2 RDES2 )和字 1 RDES1 )中可用。只有当设置了最后一个描述符位( RDES3[28] )时,这才有效。上下文描述符被写入下一个描述符中,刚好在数据包的最后一个正常描述符之后。

13

PV

PTP 版本该比特指示所接收的 PTP 消息具有 IEEE 1588 版本 2 格式。当该位被重置时,它指示 IEEE 1588 版本 1 格式。只有当您选择时间戳功能时,此位才可用。否则,该位被保留。

12

PFT

PTP 数据包类型此位表示 PTP 消息直接通过以太网发送。只有当您选择时间戳功能时,此位才可用。否则,该位被保留。

11:8

PMT

PTP Message Type

只有选择时间戳功能时,这些位才可用。

■ 0000: No PTP message received

■ 0001: SYNC (all clock types)

■ 0010: Follow_Up (all clock types)

■ 0011: Delay_Req (all clock types)

■ 0100: Delay_Resp (all clock types)

■ 0101: Pdelay_Req (in peer-to-peer transparent clock)

■ 0110: Pdelay_Resp (in peer-to-peer transparent clock)

■ 0111: Pdelay_Resp_Follow_Up (in peer-to-peer transparent clock)

■ 1000: Announce

■ 1001: Management

■ 1010: Signaling

■ 1011–1110: Reserved

■ 1111: PTP packet with Reserved message type

7

IPCE

IP Payload Error IP 有效负载错误)当设置此位时,它指示以下情况之一: ■ MAC 计算的 16 IP 有效载荷校验和(即 TCP UDP ICMP 校验和)与接收段中相应的校验和字段不匹配。 ■ TCP UDP ICMP 段长度与 IP 标头字段中的有效负载长度值不匹配。 ■ TCP UDP ICMP 段长度小于 TCP UDP ICMP 允许的最小段长度。当 RDES3 的位 15 ES )被设置时,该位未被设置

6

IPCB

IP 校验和旁路此位表示校验和卸载引擎被旁路。当您选择启用接收 TCP/IP 校验和检查功能时,此位可用

5

IPV6

IPv6 标头存在此位表示检测到 IPv6 标头。当选择 Enable Split Header Feature (启用拆分标头功能)选项并设置通道控制寄存器的 SPH 位时, IPV6 标头在 RDES0 所指向的标头缓冲区中可用。

4

IPV4

IPV4 标头存在此位表示检测到 IPV4 标头。当 RDES3 SPH 位被设置时, IPV4 报头在 RDES0 所指向的报头缓冲区中可用。

3

IPHE

IP 标头错误当设置此位时,表示以下情况之一: ■ MAC 计算的 16 IPv4 标头校验和与接收到的校验和字节不匹配。 ■ IP 数据报版本与以太网类型值不一致。 以太网数据包没有预期的 IP 标头字节数。当位 5 或位 4 被设置时,该位是有效的。当您选择启用接收 TCP/IP 校验和检查功能时,此位可用。

2:0

PT

有效载荷类型这些比特指示由接收校验和卸载引擎( COE )处理的 IP 数据报中封装的有效载荷的类型: ■ 3'b0000: 未知类型或未处理 IP/AV 有效负载 ■ 2001 3 月: UDP■ 2010 3 月: TCP■ 2011 3 月: ICMP■ 3'b110 AV 标记数据包 ■ 3'b111: AV 标签的控制包 ■ 3'b101:AV 未标记控制数据包 ■ 3'b100:IGMP 如果 IPV4 标头存在位被设置为 else DCB LLDP )控制包如果 COE 由于存在 IP 标头错误或碎片 IP 而不处理 IP 数据报的有效载荷,则将这些位设置为 3'b000

RDES2

名字

描述

31:29

L3L4FM

匹配的第 3 层和第 4 层滤波器数量这些比特指示与接收到的分组匹配的第三层和第四层滤波器的数量:只有当位 28 或位 27 被设置为高时,该字段才有效。当多个滤波器匹配时,这些位给出最低滤波器的数目

28

L4FM

4 过滤器匹配

当设置此位时,它表示接收到的数据包与启用的第 4 层端口号字段之一匹配。只有当下列条件之一成立时,才会给出此状态

3 层字段未启用,所有启用的第 4 层字段匹配 所有启用的第 3 层和第 4 层筛选器字段匹配

当不止一个过滤器匹配时,该位给出由位 [31:29] 指示的过滤器的第 4 层过滤器状态

27

L3FM

3 层筛选器匹配设置此位时,表示接收到的数据包与启用的第 3 IP 地址字段之一匹配。只有当下列条件之一成立时,才会给出此状态: 所有启用的第 3 层字段匹配,所有启用的 4 字段被绕过 所有启用的过滤器字段匹配当多个过滤器匹配时,该位给出由位 [31:29] 指示的过滤器的第 3 层过滤器状态。

26:19

MADRM

MAC 地址匹配或哈希值当 HF 位重置时,此字段包含与接收到的数据包的目标地址匹配的 MAC 地址寄存器号。仅当 DAF 位被重置时,此字段才有效。设置 HF 位时,此字段包含 MAC 计算的哈希值。当与哈希值相对应的比特被设置在哈希过滤器寄存器中时,数据包通过哈希过滤器。

18

HF

哈希过滤器状态设置此位时,表示数据包通过了 MAC 地址哈希过滤器。比特 [26:19] 表示散列值。

17

DAF

当设置此位时,目标地址过滤器失败,这表明数据包在 Mac 上的 DA 过滤器失败。

16

SAF

SA 地址筛选器失败设置此位时,表示数据包未通过 MAC 中的 SA 筛选器。

15

OTS

VLAN 筛选器状态设置时,此位指示接收数据包的 VLAN 标记通过 VLAN 筛选器。此位仅在未启用 DWC-EQOS-ERVFE 时有效。如果启用了 DWC-EQOS-ERVFE ,则该位将重新定义为外部 VLAN 标记筛选器状态( OTS )。有关详细信息,请参阅第 235 页的 过滤器状态 。此位对单个和双 VLAN 标记帧都有效。

14

ITS

内部 VLAN 标记筛选器状态( ITS )此位仅在启用 DWC_EQOS_ERVFE 时有效。有关更多详细信息,请参阅第 235 页的 过滤器状态 。当启用双 VLAN 处理时,此位仅对双 VLAN 标记帧有效。

13:11

保留


10

ARPNR

未生成 ARP 应答当设置此位时,表示 MAC 没有为接收到的 ARP 请求数据包生成 ARP 应答。当 MAC 忙于发送对早期 ARP 请求的 ARP 回复时(一次只处理一个 ARP 请求),设置此位。当未选择 Enable IPv4 ARP Offload (启用 IPv4 ARP 卸载)选项时,保留此位。

9:0

HL

L3/L4 报头长度该字段包含由 MAC L3 L4 报头边界处分割的分组的报头的长度,如 MAC 接收器所识别的。仅当第一描述符位被设置( FD 1 )时,该字段才有效。

头数据被写入相应描述符的缓冲器 1 地址。如果标头长度为零,则此字段无效。这意味着 MAC 没有识别和分割报头。选择 启用拆分标头功能 选项时,此字段有效。

RDES3

名字

描述

31

OWN


30

CTXT


29

FD


28

LD


27

RS2V

接收状态 RDES2 有效设置此位时,表示 RDES2 中的状态有效,并且由 DMA 写入。仅当 RDES3 LD 位被设置时,该位才有效。

26

RS1V

接收状态 RDES1 有效设置此位时,表示 RDES1 中的状态有效,并且由 DMA 写入。仅当 RDES3 LD 位被设置时,该位才有效。

25

RS0V

接收状态 RDES0 有效设置此位时,表示 RDES0 中的状态有效,并且由 DMA 写入。仅当 RDES3 LD 位被设置时,该位才有效。

24

CE

CRC 错误设置此位时,表示在接收到的数据包上发生了循环冗余校验( CRC )错误。仅当 RDES3 LD 位设置时,此字段才有效

23

GP

巨型数据包设置此位时,表示数据包长度超过指定的最大以太网大小 1518 1522 2000 字节(如果设置了巨型数据包启用,则为 9018 9022 字节)。注:巨型数据包仅表示数据包的长度。它不会导致任何数据包截断

22

RWT

接收看门狗超时设置此位时,表示接收看门狗计时器在接收当前数据包时已过期。看门狗超时后,当前数据包被截断。

21

OE

溢出错误设置此位时,表示接收到的数据包由于 Rx FIFO 中的缓冲区溢出而损坏。注意:此位仅在 DMA 将部分数据包传输到应用程序时设置。只有当 Rx FIFO 在阈值模式下操作时才会发生这种情况。在存储转发模式中,所有部分数据包都会完全丢弃在 Rx FIFO

20

RE

接收错误当设置此位时,它指示在分组接收期间断言 gmii_rxer_i 信号,而断言 gmii_rxdv_i 信号。该错误还包括 GMII 和半双工模式中的载波扩展错误。错误可以是较少扩展名或没有扩展名,也可以是扩展期间的错误( rxd =0f

19

DE

漂移位错误设置此位时,表示接收到的数据包具有非整数倍的字节(奇数半字节)。此位仅在 MII 模式下有效。

18:16

LT

长度 / 类型字段此字段指示接收到的数据包是长度数据包还是类型数据包。这 3 个比特的编码如下:

■ 3'b000: The packet is a length packet

■ 3'b001: The packet is a type packet.

■ 3'b011: The packet is a ARP Request packet type

■ 3'b100: The packet is a type packet with VLAN Tag

■ 3'b101: The packet is a type packet with Double VLAN Tag

■ 3'b110: The packet is a MAC Control packet type

■ 3'b111: The packet is a OAM packet type

■ 3'b010: Reserved

15

ES

错误摘要设置此位时,表示以下位的逻辑或:

仅当 RDES3 LD 位被设置时,此字段才有效。

■ RDES3[24]: CRC Error

■ RDES3[19]: Dribble Error

■ RDES3[20]: Receive Error

■ RDES3[22]: Watchdog Timeout

■ RDES3[21]: Overflow Error

■ RDES3[23]: Giant Packet

14:0

PL

数据包长度这些比特指示被传送到系统存储器(包括 CRC )的接收数据包的字节长度。当 RDES3 LD 位被设置和 / 或溢出错误位被重置时,此字段有效。当启用 IP 校验和计算并且接收到的分组不是 MAC 控制分组时,分组长度还包括附加到以太网分组的两个字节。当设置 RDES3 LD 位时,此字段有效。当未设置 Last Descriptor Error Summary 位时,此字段指示当前数据包已传输的累计字节数。

接收 上下文描述符

见手册 21.6.3

只有 DMA 能写,提供最后一个包的扩展状态信息,

RDES3 b30 CTXT 标记该类型

1 . 4 Split Header Support 模式

DMA 可以分别处理接收到的包的报头和有效载荷。支持 MAC 帧, IP 包, TCP/UDP 包三个级别的包类型。

见手册 21.3

1.5 总结

以上信息来源手册的简单整理,以备查询,实际调试过程中以对照手册为准。

一些关键的字段可以帮助调试等需要了解,重点了解 OWN 位的互斥作用,即硬件和软件的 R-M-W 操作。



最新有关嵌入式Lee的文章

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: TI培训

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved