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

描述

本文转自公众号欢迎关注
https://mp.weixin.qq.com/s/SU4xDurm-y-PFIE-3y_-hw

一.描述符格式

1.1 前言

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

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

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

1.2发送描述符

读取格式

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

寄存器

TDES0

名字描述
31:0BUF1AP缓冲区1地址指针或TSO头地址指针这些位表示缓冲区1的物理地址。当设置以下位时,这些位指示TSO标头地址指针:■ TSE bit of TDES3■ FD bit of TDES3

TDES1

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

TDES2

名字描述
31IOC本描述符处理完产生中断
30TTSE/TMWD传输时间戳启用或外部TSO内存写入禁用,如果TSE位未置位,则此位启用描述符引用的传输数据包的IEEE1588时间戳如果TSE位被置位并且外部TSO存储器被启用,则设置该位将禁用该数据包的外部TSO内存写入。
29:16B2L缓冲区2长度,驱动程序设置此字段。设置后,此字段指示缓冲区2的长度。
15:14VTIRVLAN标记插入或替换这些位请求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:0HL或B1L标头长度或缓冲区1长度对于标头长度,只取位[9:0]。大小13:0仅适用于解释缓冲区1长度时。如果通过TDES3的TSE位启用TCP分段卸载功能,则此字段等于标头长度。当TSE位在TDES3中设置时,报头长度包括从以太网源地址到TCP报头结束的长度(以字节为单位)。TSO功能支持的最大标头长度为1023字节。TSO功能支持的最大标头长度为1023字节。如果未启用TCP分段卸载功能,则此字段等于缓冲区1长度。

TDES3

名字描述
31OWN软件准备完描述符后,置位该位,表示DMA拥有该描述符,DMA处理完该描述符后清零该位,此时软件拥有该描述符。注意该位软件要在描述符准备完后最后置位。该位实际是硬件和软件的读写互斥量,硬件和软件都是R-M-W的操作次序。
30CTXT设置为1表示Context类型的描述符,正常设置为0.
29FD设置为1表示本描述符对应的缓冲区数据是MAC帧的第一段。
28LD设置为1表示本描述符对应的缓冲区数据是MAC帧的最后段。此时B1L或B2L不能为0.
27:26CPCCRC和填充控制该字段控制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:23SAICSA源MAC地址插入控制这些位请求MAC将以太网数据包中的源地址字段添加或替换为MAC地址0寄存器中给定的值。当为数据包启用SA插入控制时,应用程序必须适当设置CRC填充控制位。位25指定用于插入或替换源地址的MAC地址寄存器(1或0)值。以下列表描述了位[24:23]的值:■ 2'b00:不包括源地址■ 2'b01:包括或插入源地址。为了实现可靠的传输,应用程序必须提供没有源地址的帧。■ 2'b10:替换源地址。为了实现可靠的传输,应用程序必须为帧提供源地址。■ 2'b11:保留当在配置核心时选择Enable SA and VLAN Insertion on Tx(启用SA和VLAN插入Tx)选项并且设置了First Segment control bit(TDES3[29])时,这些位在EQOS-DMA、EQOS-AXI和EQOS-AHB配置中有效。此字段仅对第一个描述符有效。
22:19SOLTNUM或THLSOLTNUM:AV模式下的插槽号控制位这些位指示应从TDES0或TDES1寻址的相应缓冲器中取出数据的时隙间隔当提取传输描述符时,DMA将该字段中的时隙号值与RSN字段DMA_CH#_slot_Function_Control_Status中保持的时隙间隔进行比较。只有当值匹配时,它才会从缓冲区中获取数据。这些位仅对AV频道有效THL:TCP标头长度如果设置了TSE位,则此字段包含TCP标头的长度。此字段的最小值必须为5。此字段仅对第一个描述符有效。
18TSETCP分段启用当该位被设置时,DMA对数据包执行TCP分段。仅当FD位被设置时,此位才有效
17:16CIC/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的数据包长度支持。此字段仅对第一个描述符有效。
15TPL保留或TCP有效负载长度当TSE位被重置时,该位被保留。设置TSE位时,这是TCP有效载荷长度[17:0]的第15位只有在配置核心时选择了Enable TCP Segmentation Offloading for TCP/IP Packets(为TCP/IP数据包启用TCP分段卸载)选项时,此字段才有效。
14:0FL/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:0TTSL传输数据包时间戳低DMA使用为相应传输数据包捕获的时间戳的最低有效32位来更新此字段。只有在数据包的第一个描述符中设置了TDES2的TTSE位时,DMA才会写入时间戳。仅当描述符中的Last Segment位(LS)已设置并且timestamp status(TTSS)位已设置时,此字段才具有时间戳。

TDES1

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

TDES2

保留

TDES3

名字描述
31OWN见读取格式
30CTXT
29FD
28LD
27:16保留
17TTSSTx时间戳状态此状态位指示已捕获对应传输数据包的时间戳。当设置该位时,TDES2和TDES3具有为传输数据包捕获的时间戳值。仅当描述符中的最后一段控制位(TDES3[28])设置时,此字段才有效。此位仅在启用IEEE1588时间戳功能时有效;否则,它将被保留。
16保留
15ES错误摘要,此位表示以下位的逻辑或:■ 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
14JTJabber超时此位表示MAC发送器已经历Jabber暂停。仅当未设置MAC_Configuration寄存器的JD位时,才设置该位。
13FF数据包刷新此位表示DMA或MTL由于CPU给出的软件刷新命令而刷新了数据包。
12PCE有效负载校验和错误此位表示校验和卸载引擎出现故障,并且没有将任何校验和插入封装的TCP、UDP或ICMP有效负载中。此故障可能是由于字节不足,如IP标头的有效负载长度字段所示,或者MTL在存储和转发模式下开始将数据包转发到MAC发送器,但尚未计算校验和。第二种错误情况仅在传输FIFO深度小于正在传输的以太网数据包的长度时发生,以避免死锁,MTL在FIFO满时开始转发数据包,即使在存储和转发模式下也是如此。当未启用完全校验和卸载引擎时,保留此位
11LOC载波丢失该比特表示在分组传输期间发生载波丢失(即,在分组传输过程中,gmii_crs_i信号在一个或多个传输时钟周期内不活动)。这仅对在没有冲突的情况下发送的分组有效,并且当MAC在半双工模式下操作时有效。
10NC无载波该位表示在传输期间没有断言来自PHY的载波感测信号
9LC延迟冲突该位表示由于在冲突窗口之后发生冲突而中止了分组传输(在MII模式中包括Preamble的64字节时间和在GMII模式中包括Preamble和Carrier Extension的512字节时间)。如果设置了“欠流错误”,则此位无效
8EC过度冲突此位表示在尝试传输当前数据包时,在连续发生16次冲突后,传输被中止。如果在MAC_Configuration寄存器中设置了DR位,则在第一次冲突之后设置该位,并且中止数据包的传输
7:4CC冲突计数此4位计数器值表示在传输数据包之前发生的冲突数。设置EC位时,计数无效。
3ED过度延迟此位表示如果在MAC_Configuration寄存器中设置了DC位,则由于超过24288位时间的过度延迟(在1000Mbps模式或Jumbo Packet enabled模式下为155680位时间),传输结束。
2UF欠流错误此位表示MAC中止了数据包,因为数据从系统内存延迟到达。下溢错误可能是由于以下任一情况而发生的:■ DMA在传输数据包时遇到空的传输缓冲区■ 应用程序填充MTL Tx FIFO的速度慢于MAC传输速率。传输过程进入暂停状态,并设置与MTL_Interrupt_Status寄存器中的队列相对应的下溢位。
1DB延迟位此位表示MAC由于载波的存在而在发送之前延迟。此位仅在半双工模式下有效。
0IHEIP标头错误设置IP标头错误时,此位表示校验和卸载引擎检测到IP标头错误。此位仅在启用Tx校验和卸载时有效。否则,它将被保留。如果COE检测到IP标头错误,如果以太网类型字段指示IPv4有效负载,它仍然插入IPv4标头校验和。

传输上下文描述符

见手册21.5.2

1.3接收描述符

读取格式

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

寄存器

RDES0

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

RDES1

名字描述
31:0BUF1AP64位地址模式的BUF1AP的高32位,32位不使用

RDES2

名字描述
31:0BUF2AP缓冲器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:0OWN同TX描述符
30IOC同TX描述符
29:26保留
25BUF2V缓冲区2地址有效当设置此位时,它向DMA指示RDES2中指定的缓冲区2的地址有效。应用程序必须设置此位,以便DMA可以使用RDES2中的缓冲区2地址所指向的地址来写入接收到的数据包数据。
24BUF1V缓冲区1地址有效设置后,向DMA指示RDES1中指定的缓冲区1的地址有效。如果DMA可以使用RDES1中缓冲区1地址所指向的地址来写入接收到的数据包数据,则应用程序必须设置此值。
23:0保留

回写格式

寄存器

RDES0

名字描述
31:16IVT内部VLAN标记如果设置了RDES3的RS0V位,则此字段包含接收到的数据包的内部VLAN标记。仅当启用了双VLAN标记处理和VLAN标记剥离时,此选项才有效。
15:0OVT外部VLAN标记如果设置了RDES3的RS0V位,则此字段包含接收到的数据包的外部VLAN标记

RDES1

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

名字描述
31:16OPCOAM Sub-Type Code:RDES3的比特[18:16]被设置为3’b111时;MAC Control Packet opcode:RDES3的比特[18:16]被设置为3’b110时
15TD丢弃的时间戳。此位表示捕获了此数据包的时间戳,但由于溢出,它在MTL Rx FIFO中被丢弃。只有选择时间戳功能时,此位才可用。否则,保留此位
14TSA可用时间戳当存在时间戳时,此位指示时间戳值在上下文描述符字2(RDES2)和字1(RDES1)中可用。只有当设置了最后一个描述符位(RDES3[28])时,这才有效。上下文描述符被写入下一个描述符中,刚好在数据包的最后一个正常描述符之后。
13PVPTP版本该比特指示所接收的PTP消息具有IEEE 1588版本2格式。当该位被重置时,它指示IEEE 1588版本1格式。只有当您选择时间戳功能时,此位才可用。否则,该位被保留。
12PFTPTP数据包类型此位表示PTP消息直接通过以太网发送。只有当您选择时间戳功能时,此位才可用。否则,该位被保留。
11:8PMTPTP 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
7IPCEIP Payload Error(IP有效负载错误)当设置此位时,它指示以下情况之一:■ MAC计算的16位IP有效载荷校验和(即TCP、UDP或ICMP校验和)与接收段中相应的校验和字段不匹配。■ TCP、UDP或ICMP段长度与IP标头字段中的有效负载长度值不匹配。■ TCP、UDP或ICMP段长度小于TCP、UDP和ICMP允许的最小段长度。当RDES3的位15(ES)被设置时,该位未被设置
6IPCBIP校验和旁路此位表示校验和卸载引擎被旁路。当您选择启用接收TCP/IP校验和检查功能时,此位可用
5IPV6IPv6标头存在此位表示检测到IPv6标头。当选择Enable Split Header Feature(启用拆分标头功能)选项并设置通道控制寄存器的SPH位时,IPV6标头在RDES0所指向的标头缓冲区中可用。
4IPV4IPV4标头存在此位表示检测到IPV4标头。当RDES3的SPH位被设置时,IPV4报头在RDES0所指向的报头缓冲区中可用。
3IPHEIP标头错误当设置此位时,表示以下情况之一:■ MAC计算的16位IPv4标头校验和与接收到的校验和字节不匹配。■ IP数据报版本与以太网类型值不一致。■ 以太网数据包没有预期的IP标头字节数。当位5或位4被设置时,该位是有效的。当您选择启用接收TCP/IP校验和检查功能时,此位可用。
2:0PT有效载荷类型这些比特指示由接收校验和卸载引擎(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:29L3L4FM匹配的第3层和第4层滤波器数量这些比特指示与接收到的分组匹配的第三层和第四层滤波器的数量:只有当位28或位27被设置为高时,该字段才有效。当多个滤波器匹配时,这些位给出最低滤波器的数目
28L4FM第4层过滤器匹配当设置此位时,它表示接收到的数据包与启用的第4层端口号字段之一匹配。只有当下列条件之一成立时,才会给出此状态第3层字段未启用,所有启用的第4层字段匹配,所有启用的第3层和第4层筛选器字段匹配当不止一个过滤器匹配时,该位给出由位[31:29]指示的过滤器的第4层过滤器状态
27L3FM第3层筛选器匹配设置此位时,表示接收到的数据包与启用的第3层IP地址字段之一匹配。只有当下列条件之一成立时,才会给出此状态:■ 所有启用的第3层字段匹配,所有启用的“第4层”字段被绕过■ 所有启用的过滤器字段匹配当多个过滤器匹配时,该位给出由位[31:29]指示的过滤器的第3层过滤器状态。
26:19MADRMMAC地址匹配或哈希值当HF位重置时,此字段包含与接收到的数据包的目标地址匹配的MAC地址寄存器号。仅当DAF位被重置时,此字段才有效。设置HF位时,此字段包含MAC计算的哈希值。当与哈希值相对应的比特被设置在哈希过滤器寄存器中时,数据包通过哈希过滤器。
18HF哈希过滤器状态设置此位时,表示数据包通过了MAC地址哈希过滤器。比特[26:19]表示散列值。
17DAF当设置此位时,目标地址过滤器失败,这表明数据包在Mac上的DA过滤器失败。
16SAFSA地址筛选器失败设置此位时,表示数据包未通过MAC中的SA筛选器。
15OTSVLAN筛选器状态设置时,此位指示接收数据包的VLAN标记通过VLAN筛选器。此位仅在未启用DWC-EQOS-ERVFE时有效。如果启用了DWC-EQOS-ERVFE,则该位将重新定义为外部VLAN标记筛选器状态(OTS)。有关详细信息,请参阅第235页的“过滤器状态”。此位对单个和双VLAN标记帧都有效。
14ITS内部VLAN标记筛选器状态(ITS)此位仅在启用DWC_EQOS_ERVFE时有效。有关更多详细信息,请参阅第235页的“过滤器状态”。当启用双VLAN处理时,此位仅对双VLAN标记帧有效。
13:11保留
10ARPNR未生成ARP应答当设置此位时,表示MAC没有为接收到的ARP请求数据包生成ARP应答。当MAC忙于发送对早期ARP请求的ARP回复时(一次只处理一个ARP请求),设置此位。当未选择Enable IPv4 ARP Offload(启用IPv4 ARP卸载)选项时,保留此位。
9:0HLL3/L4报头长度该字段包含由MAC在L3或L4报头边界处分割的分组的报头的长度,如MAC接收器所识别的。仅当第一描述符位被设置(FD=1)时,该字段才有效。头数据被写入相应描述符的缓冲器1地址。如果标头长度为零,则此字段无效。这意味着MAC没有识别和分割报头。选择“启用拆分标头功能”选项时,此字段有效。

RDES3

名字描述
31OWN
30CTXT
29FD
28LD
27RS2V接收状态RDES2有效设置此位时,表示RDES2中的状态有效,并且由DMA写入。仅当RDES3的LD位被设置时,该位才有效。
26RS1V接收状态RDES1有效设置此位时,表示RDES1中的状态有效,并且由DMA写入。仅当RDES3的LD位被设置时,该位才有效。
25RS0V接收状态RDES0有效设置此位时,表示RDES0中的状态有效,并且由DMA写入。仅当RDES3的LD位被设置时,该位才有效。
24CECRC错误设置此位时,表示在接收到的数据包上发生了循环冗余校验(CRC)错误。仅当RDES3的LD位设置时,此字段才有效
23GP巨型数据包设置此位时,表示数据包长度超过指定的最大以太网大小1518、1522或2000字节(如果设置了巨型数据包启用,则为9018或9022字节)。注:巨型数据包仅表示数据包的长度。它不会导致任何数据包截断
22RWT接收看门狗超时设置此位时,表示接收看门狗计时器在接收当前数据包时已过期。看门狗超时后,当前数据包被截断。
21OE溢出错误设置此位时,表示接收到的数据包由于Rx FIFO中的缓冲区溢出而损坏。注意:此位仅在DMA将部分数据包传输到应用程序时设置。只有当Rx FIFO在阈值模式下操作时才会发生这种情况。在存储转发模式中,所有部分数据包都会完全丢弃在Rx FIFO中
20RE接收错误当设置此位时,它指示在分组接收期间断言gmii_rxer_i信号,而断言gmii_rxdv_i信号。该错误还包括GMII和半双工模式中的载波扩展错误。错误可以是较少扩展名或没有扩展名,也可以是扩展期间的错误(rxd!=0f)
19DE漂移位错误设置此位时,表示接收到的数据包具有非整数倍的字节(奇数半字节)。此位仅在MII模式下有效。
18:16LT长度/类型字段此字段指示接收到的数据包是长度数据包还是类型数据包。这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
15ES错误摘要设置此位时,表示以下位的逻辑或:仅当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:0PL数据包长度这些比特指示被传送到系统存储器(包括CRC)的接收数据包的字节长度。当RDES3的LD位被设置和/或溢出错误位被重置时,此字段有效。当启用IP校验和计算并且接收到的分组不是MAC控制分组时,分组长度还包括附加到以太网分组的两个字节。当设置RDES3的LD位时,此字段有效。当未设置Last Descriptor和Error Summary位时,此字段指示当前数据包已传输的累计字节数。

接收****上下文描述符

见手册21.6.3

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

RDES3的b30 CTXT标记该类型

1.4Split Header Support模式

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

见手册21.3

1.5总结

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

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

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分