本文轉自公眾號歡迎關注
https://mp.weixin.qq.com/s/SU4xDurm-y-PFIE-3y_-hw
一.描述符格式
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'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: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.4Split Header Support模式
DMA可以分別處理接收到的包的報頭和有效載荷。支持MAC幀,IP包,TCP/UDP包三個級別的包類型。
見手冊21.3
1.5總結
以上信息來源手冊的簡單整理,以備查詢,實際調試過程中以對照手冊為準。
一些關鍵的字段可以幫助調試等需要了解,重點了解OWN位的互斥作用,即硬件和軟件的R-M-W操作。
審核編輯:湯梓紅
-
嵌入式
+關注
關注
5082文章
19104瀏覽量
304791 -
以太網
+關注
關注
40文章
5419瀏覽量
171594 -
寄存器
+關注
關注
31文章
5336瀏覽量
120228 -
緩沖器
+關注
關注
6文章
1921瀏覽量
45473 -
驅動開發
+關注
關注
0文章
130瀏覽量
12072
發布評論請先 登錄
相關推薦
評論