0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于DWC_ether_qos的以太網(wǎng)驅(qū)動開發(fā)-描述符格式介紹

嵌入式USB開發(fā) ? 來源:嵌入式USB開發(fā) ? 作者:嵌入式USB開發(fā) ? 2023-09-04 14:14 ? 次閱讀

本文轉(zhuǎn)自公眾號歡迎關(guān)注
https://mp.weixin.qq.com/s/SU4xDurm-y-PFIE-3y_-hw

一.描述符格式

1.1 前言

前面我們介紹了描述符鏈表的工作模式,重點是了解環(huán)形鏈表是如何環(huán)形的,以及相關(guān)的寄存器。驅(qū)動編寫就需要更進(jìn)一步,了解描述符的具體內(nèi)容,即4個描述符的每個字段的含義。

描述符包含兩個緩沖區(qū)指針和長度信息,以及一些其他的控制信息。

下面的讀取格式指的是硬件讀,軟件寫的格式,回寫格式相反。

1.2發(fā)送描述符

讀取格式

這里的讀取指的硬件去讀取,即軟件寫硬件讀。

圖片

TDES0

名字描述
31:0BUF1AP緩沖區(qū)1地址指針或TSO頭地址指針這些位表示緩沖區(qū)1的物理地址。當(dāng)設(shè)置以下位時,這些位指示TSO標(biāo)頭地址指針:■ TSE bit of TDES3■ FD bit of TDES3

TDES1

名字描述
31:0BUF2AP緩沖區(qū)2或緩沖區(qū)1地址指針.當(dāng)使用描述符環(huán)結(jié)構(gòu)時,該位指示緩沖區(qū)2的物理地址。緩沖區(qū)地址對齊沒有限制。在40或48位尋址模式中,這些位表示緩沖區(qū)1地址指針的最高有效8或16位.

TDES2

名字描述
31IOC本描述符處理完產(chǎn)生中斷
30TTSE/TMWD傳輸時間戳啟用或外部TSO內(nèi)存寫入禁用,如果TSE位未置位,則此位啟用描述符引用的傳輸數(shù)據(jù)包的IEEE1588時間戳如果TSE位被置位并且外部TSO存儲器被啟用,則設(shè)置該位將禁用該數(shù)據(jù)包的外部TSO內(nèi)存寫入。
29:16B2L緩沖區(qū)2長度,驅(qū)動程序設(shè)置此字段。設(shè)置后,此字段指示緩沖區(qū)2的長度。
15:14VTIRVLAN標(biāo)記插入或替換這些位請求MAC在傳輸數(shù)據(jù)包之前執(zhí)行VLAN標(biāo)記或取消標(biāo)記。當(dāng)為數(shù)據(jù)包啟用VLAN標(biāo)簽插入、替換或刪除時,應(yīng)用程序必須適當(dāng)設(shè)置CRC填充控制位。以下列表描述了這些位的值:■ 2'b00:不要添加VLAN標(biāo)記?!?2'b01:在傳輸之前從數(shù)據(jù)包中刪除VLAN標(biāo)簽。此選項應(yīng)僅用于VLAN數(shù)據(jù)包。■ 2'b10:插入一個VLAN標(biāo)簽,標(biāo)簽值編程在MAC_VLAN_Incl寄存器或上下文描述符中?!?2'b11:用MAC_VLAN_Incl寄存器或上下文描述符中編程的標(biāo)簽值替換數(shù)據(jù)包中的VLAN標(biāo)簽。此選項應(yīng)僅用于VLAN數(shù)據(jù)包。當(dāng)在配置核心時選擇啟用SA和VLAN插入Tx選項時,這些位有效
13:0HL或B1L標(biāo)頭長度或緩沖區(qū)1長度對于標(biāo)頭長度,只取位[9:0]。大小13:0僅適用于解釋緩沖區(qū)1長度時。如果通過TDES3的TSE位啟用TCP分段卸載功能,則此字段等于標(biāo)頭長度。當(dāng)TSE位在TDES3中設(shè)置時,報頭長度包括從以太網(wǎng)源地址到TCP報頭結(jié)束的長度(以字節(jié)為單位)。TSO功能支持的最大標(biāo)頭長度為1023字節(jié)。TSO功能支持的最大標(biāo)頭長度為1023字節(jié)。如果未啟用TCP分段卸載功能,則此字段等于緩沖區(qū)1長度。

TDES3

名字描述
31OWN軟件準(zhǔn)備完描述符后,置位該位,表示DMA擁有該描述符,DMA處理完該描述符后清零該位,此時軟件擁有該描述符。注意該位軟件要在描述符準(zhǔn)備完后最后置位。該位實際是硬件和軟件的讀寫互斥量,硬件和軟件都是R-M-W的操作次序。
30CTXT設(shè)置為1表示Context類型的描述符,正常設(shè)置為0.
29FD設(shè)置為1表示本描述符對應(yīng)的緩沖區(qū)數(shù)據(jù)是MAC幀的第一段。
28LD設(shè)置為1表示本描述符對應(yīng)的緩沖區(qū)數(shù)據(jù)是MAC幀的最后段。此時B1L或B2L不能為0.
27:26CPCCRC和填充控制該字段控制Tx數(shù)據(jù)包的CRC和填充插入。僅當(dāng)設(shè)置了第一個描述符位(TDES3[29])FD時,此字段才有效。以下列表描述了位[27:26]的值:■ 2’b00:CRC和填充插入,MAC在長度大于或等于60字節(jié)的傳輸數(shù)據(jù)包的末尾附加循環(huán)冗余校驗(CRC)。MAC自動將填充和CRC附加到長度小于60字節(jié)的數(shù)據(jù)包中。■ 2'b01:CRC插入(禁用填充插入)MAC在傳輸數(shù)據(jù)包的末尾附加CRC,但不附加填充。應(yīng)用程序應(yīng)確保從傳輸緩沖區(qū)傳輸?shù)臄?shù)據(jù)包中存在填充字節(jié),也就是說,從傳輸緩沖區(qū)時傳輸?shù)臄?shù)據(jù)包包長大于或等于60字節(jié)?!?2’b10:禁用CRC插入MAC不會在傳輸數(shù)據(jù)包的末尾附加CRC。應(yīng)用程序應(yīng)確保填充和CRC字節(jié)存在于從傳輸緩沖區(qū)傳輸?shù)臄?shù)據(jù)包中?!?2'b11:CRC替換MAC用重新計算的CRC字節(jié)替換傳輸數(shù)據(jù)包的最后四個字節(jié)。應(yīng)用程序應(yīng)確保填充和CRC字節(jié)存在于從傳輸緩沖區(qū)傳輸?shù)臄?shù)據(jù)包中。此字段僅對第一個描述符有效。注意:設(shè)置TSE位時,MAC會忽略此字段,因為CRC和填充插入總是用于分段。
25:23SAICSA源MAC地址插入控制這些位請求MAC將以太網(wǎng)數(shù)據(jù)包中的源地址字段添加或替換為MAC地址0寄存器中給定的值。當(dāng)為數(shù)據(jù)包啟用SA插入控制時,應(yīng)用程序必須適當(dāng)設(shè)置CRC填充控制位。位25指定用于插入或替換源地址的MAC地址寄存器(1或0)值。以下列表描述了位[24:23]的值:■ 2'b00:不包括源地址■ 2'b01:包括或插入源地址。為了實現(xiàn)可靠的傳輸,應(yīng)用程序必須提供沒有源地址的幀?!?2'b10:替換源地址。為了實現(xiàn)可靠的傳輸,應(yīng)用程序必須為幀提供源地址。■ 2'b11:保留當(dāng)在配置核心時選擇Enable SA and VLAN Insertion on Tx(啟用SA和VLAN插入Tx)選項并且設(shè)置了First Segment control bit(TDES3[29])時,這些位在EQOS-DMA、EQOS-AXI和EQOS-AHB配置中有效。此字段僅對第一個描述符有效。
22:19SOLTNUM或THLSOLTNUM:AV模式下的插槽號控制位這些位指示應(yīng)從TDES0或TDES1尋址的相應(yīng)緩沖器中取出數(shù)據(jù)的時隙間隔當(dāng)提取傳輸描述符時,DMA將該字段中的時隙號值與RSN字段DMA_CH#_slot_Function_Control_Status中保持的時隙間隔進(jìn)行比較。只有當(dāng)值匹配時,它才會從緩沖區(qū)中獲取數(shù)據(jù)。這些位僅對AV頻道有效THL:TCP標(biāo)頭長度如果設(shè)置了TSE位,則此字段包含TCP標(biāo)頭的長度。此字段的最小值必須為5。此字段僅對第一個描述符有效。
18TSETCP分段啟用當(dāng)該位被設(shè)置時,DMA對數(shù)據(jù)包執(zhí)行TCP分段。僅當(dāng)FD位被設(shè)置時,此位才有效
17:16CIC/TPL校驗和插入控制或TCP有效負(fù)載長度這些位控制校驗和計算和插入。以下列表描述了位編碼:■2'b00:校驗和插入已禁用。■ 2'b01:僅啟用IP標(biāo)頭校驗和計算和插入。■ 2'b10:啟用IP標(biāo)頭校驗和和有效負(fù)載校驗和計算和插入,但硬件中不計算偽標(biāo)頭校驗和?!?2'b11:IP報頭校驗和和有效載荷校驗和計算和插入啟用,偽報頭校驗和在硬件中計算。當(dāng)選擇Enable Transmit TCP/IP Checksum Offload(啟用傳輸TCP/IP校驗和卸載)選項并重置TSE位時,此字段有效。設(shè)置TSE位時,此字段包含TCP有效負(fù)載長度的高位[17:16]。這允許TCP數(shù)據(jù)包長度字段跨越TDES3[17:0],以提供256KB的數(shù)據(jù)包長度支持。此字段僅對第一個描述符有效。
15TPL保留或TCP有效負(fù)載長度當(dāng)TSE位被重置時,該位被保留。設(shè)置TSE位時,這是TCP有效載荷長度[17:0]的第15位只有在配置核心時選擇了Enable TCP Segmentation Offloading for TCP/IP Packets(為TCP/IP數(shù)據(jù)包啟用TCP分段卸載)選項時,此字段才有效。
14:0FL/TPL數(shù)據(jù)包長度或TCP有效負(fù)載長度此字段等于要傳輸?shù)臄?shù)據(jù)包的長度(以字節(jié)為單位)。當(dāng)TSE位未設(shè)置時,此字段等于要發(fā)送的數(shù)據(jù)包的總長度:Ethernet Header Length + TCP /IP Header Length – Preamble Length –SFD Length + Ethernet Payload Length當(dāng)TSE位被設(shè)置時,該字段等于TCP有效載荷長度的低15位。此長度不包括以太網(wǎng)標(biāo)頭或TCP/IP標(biāo)頭長度。

回寫格式

這里的回寫指的硬件回寫,即軟件讀硬件寫。

注意:回寫格式僅適用于相應(yīng)數(shù)據(jù)包的最后一個描述符。即LD位(TDES3[28])置位的描述符中,DMA在描述符中回寫相應(yīng)傳輸數(shù)據(jù)包的狀態(tài)和時間戳信息

圖片

TDES0

名字描述
31:0TTSL傳輸數(shù)據(jù)包時間戳低DMA使用為相應(yīng)傳輸數(shù)據(jù)包捕獲的時間戳的最低有效32位來更新此字段。只有在數(shù)據(jù)包的第一個描述符中設(shè)置了TDES2的TTSE位時,DMA才會寫入時間戳。僅當(dāng)描述符中的Last Segment位(LS)已設(shè)置并且timestamp status(TTSS)位已設(shè)置時,此字段才具有時間戳。

TDES1

名字描述
31:0TTSH傳輸數(shù)據(jù)包時間戳高DMA使用為相應(yīng)接收數(shù)據(jù)包捕獲的時間戳的最高有效32位來更新此字段。只有當(dāng)TDES2的TTSE位設(shè)置在數(shù)據(jù)包的第一個描述符中時,DMA才寫入時間戳。僅當(dāng)描述符中的Last Segment位(LS)已設(shè)置并且timestamp status(TTSS)位已設(shè)置時,此字段才具有時間戳。

TDES2

保留

TDES3

名字描述
31OWN見讀取格式
30CTXT
29FD
28LD
27:16保留
17TTSSTx時間戳狀態(tài)此狀態(tài)位指示已捕獲對應(yīng)傳輸數(shù)據(jù)包的時間戳。當(dāng)設(shè)置該位時,TDES2和TDES3具有為傳輸數(shù)據(jù)包捕獲的時間戳值。僅當(dāng)描述符中的最后一段控制位(TDES3[28])設(shè)置時,此字段才有效。此位僅在啟用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發(fā)送器已經(jīng)歷Jabber暫停。僅當(dāng)未設(shè)置MAC_Configuration寄存器的JD位時,才設(shè)置該位。
13FF數(shù)據(jù)包刷新此位表示DMA或MTL由于CPU給出的軟件刷新命令而刷新了數(shù)據(jù)包。
12PCE有效負(fù)載校驗和錯誤此位表示校驗和卸載引擎出現(xiàn)故障,并且沒有將任何校驗和插入封裝的TCP、UDP或ICMP有效負(fù)載中。此故障可能是由于字節(jié)不足,如IP標(biāo)頭的有效負(fù)載長度字段所示,或者M(jìn)TL在存儲和轉(zhuǎn)發(fā)模式下開始將數(shù)據(jù)包轉(zhuǎn)發(fā)到MAC發(fā)送器,但尚未計算校驗和。第二種錯誤情況僅在傳輸FIFO深度小于正在傳輸?shù)囊蕴W(wǎng)數(shù)據(jù)包的長度時發(fā)生,以避免死鎖,MTL在FIFO滿時開始轉(zhuǎn)發(fā)數(shù)據(jù)包,即使在存儲和轉(zhuǎn)發(fā)模式下也是如此。當(dāng)未啟用完全校驗和卸載引擎時,保留此位
11LOC載波丟失該比特表示在分組傳輸期間發(fā)生載波丟失(即,在分組傳輸過程中,gmii_crs_i信號在一個或多個傳輸時鐘周期內(nèi)不活動)。這僅對在沒有沖突的情況下發(fā)送的分組有效,并且當(dāng)MAC在半雙工模式下操作時有效。
10NC無載波該位表示在傳輸期間沒有斷言來自PHY的載波感測信號
9LC延遲沖突該位表示由于在沖突窗口之后發(fā)生沖突而中止了分組傳輸(在MII模式中包括Preamble的64字節(jié)時間和在GMII模式中包括Preamble和Carrier Extension的512字節(jié)時間)。如果設(shè)置了“欠流錯誤”,則此位無效
8EC過度沖突此位表示在嘗試傳輸當(dāng)前數(shù)據(jù)包時,在連續(xù)發(fā)生16次沖突后,傳輸被中止。如果在MAC_Configuration寄存器中設(shè)置了DR位,則在第一次沖突之后設(shè)置該位,并且中止數(shù)據(jù)包的傳輸
7:4CC沖突計數(shù)此4位計數(shù)器值表示在傳輸數(shù)據(jù)包之前發(fā)生的沖突數(shù)。設(shè)置EC位時,計數(shù)無效。
3ED過度延遲此位表示如果在MAC_Configuration寄存器中設(shè)置了DC位,則由于超過24288位時間的過度延遲(在1000Mbps模式或Jumbo Packet enabled模式下為155680位時間),傳輸結(jié)束。
2UF欠流錯誤此位表示MAC中止了數(shù)據(jù)包,因為數(shù)據(jù)從系統(tǒng)內(nèi)存延遲到達(dá)。下溢錯誤可能是由于以下任一情況而發(fā)生的:■ DMA在傳輸數(shù)據(jù)包時遇到空的傳輸緩沖區(qū)■ 應(yīng)用程序填充MTL Tx FIFO的速度慢于MAC傳輸速率。傳輸過程進(jìn)入暫停狀態(tài),并設(shè)置與MTL_Interrupt_Status寄存器中的隊列相對應(yīng)的下溢位。
1DB延遲位此位表示MAC由于載波的存在而在發(fā)送之前延遲。此位僅在半雙工模式下有效。
0IHEIP標(biāo)頭錯誤設(shè)置IP標(biāo)頭錯誤時,此位表示校驗和卸載引擎檢測到IP標(biāo)頭錯誤。此位僅在啟用Tx校驗和卸載時有效。否則,它將被保留。如果COE檢測到IP標(biāo)頭錯誤,如果以太網(wǎng)類型字段指示IPv4有效負(fù)載,它仍然插入IPv4標(biāo)頭校驗和。

傳輸上下文描述符

見手冊21.5.2

1.3接收描述符

讀取格式

在接收描述符(讀取格式)中,如果緩沖區(qū)地址字段全部為0,則DWC_ether_qos不會將數(shù)據(jù)傳輸?shù)皆摼彌_區(qū),并跳到下一個緩沖區(qū)或下一個描述符。

圖片

RDES0

名字描述
31:0BUF1AP標(biāo)題或緩沖器1地址指針.當(dāng)通道的控制寄存器的SPH位被復(fù)位時,這些位指示緩沖器1的物理地址。當(dāng)SPH位被設(shè)置時,這些位指示報頭緩沖器的物理地址,Rx DMA在該物理地址寫入接收到的分組的L2/L3/L4報頭字節(jié)。應(yīng)用程序可以為該緩沖器編程一個字節(jié)對齊的地址,這意味著該字段的LS位可以是非零的。然而,在傳輸數(shù)據(jù)包的開始時,DMA執(zhí)行RDES0[1:0](或者在64-/128位配置的情況下,RDES0[2:0]/[3:0])為零的寫入操作。然而,分組數(shù)據(jù)按照緩沖區(qū)地址指針給出的實際偏移量進(jìn)行移位。如果地址指針指向存儲數(shù)據(jù)包中間或最后部分的緩沖區(qū),DMA將忽略偏移地址并寫入數(shù)據(jù)寬度所指示的完整位置

RDES1

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

RDES2

名字描述
31:0BUF2AP緩沖器2地址指針這些位表示緩沖器2的物理地址。當(dāng)設(shè)置DMA_CH#_Control寄存器的SPH位時,緩沖區(qū)地址指針必須與總線寬度對齊,即RDES2[3:0、2:0或1:0]=0,對應(yīng)于128、64或32總線寬度。LSB在內(nèi)部被忽略。當(dāng)DMA_CH#_Control寄存器的SPH位復(fù)位時,RDES2值沒有限制。然而,RxDMA僅在傳輸數(shù)據(jù)包的起始字節(jié)時使用指針地址的LS位。如果BUF2AP給出了存儲數(shù)據(jù)包中間或最后部分的緩沖器的地址,DMA將忽略BUF2AP[3:0或2:0或1:0](對應(yīng)于128或64或32位數(shù)據(jù)總線)并寫入完整位置。

RDES3

名字描述
31:0OWN同TX描述符
30IOC同TX描述符
29:26保留
25BUF2V緩沖區(qū)2地址有效當(dāng)設(shè)置此位時,它向DMA指示RDES2中指定的緩沖區(qū)2的地址有效。應(yīng)用程序必須設(shè)置此位,以便DMA可以使用RDES2中的緩沖區(qū)2地址所指向的地址來寫入接收到的數(shù)據(jù)包數(shù)據(jù)。
24BUF1V緩沖區(qū)1地址有效設(shè)置后,向DMA指示RDES1中指定的緩沖區(qū)1的地址有效。如果DMA可以使用RDES1中緩沖區(qū)1地址所指向的地址來寫入接收到的數(shù)據(jù)包數(shù)據(jù),則應(yīng)用程序必須設(shè)置此值。
23:0保留

回寫格式

圖片

RDES0

名字描述
31:16IVT內(nèi)部VLAN標(biāo)記如果設(shè)置了RDES3的RS0V位,則此字段包含接收到的數(shù)據(jù)包的內(nèi)部VLAN標(biāo)記。僅當(dāng)啟用了雙VLAN標(biāo)記處理和VLAN標(biāo)記剝離時,此選項才有效。
15:0OVT外部VLAN標(biāo)記如果設(shè)置了RDES3的RS0V位,則此字段包含接收到的數(shù)據(jù)包的外部VLAN標(biāo)記

RDES1

僅對最后一個描述符有效(設(shè)置了RDES3[28])

名字描述
31:16OPCOAM Sub-Type Code:RDES3的比特[18:16]被設(shè)置為3’b111時;MAC Control Packet opcode:RDES3的比特[18:16]被設(shè)置為3’b110時
15TD丟棄的時間戳。此位表示捕獲了此數(shù)據(jù)包的時間戳,但由于溢出,它在MTL Rx FIFO中被丟棄。只有選擇時間戳功能時,此位才可用。否則,保留此位
14TSA可用時間戳當(dāng)存在時間戳?xí)r,此位指示時間戳值在上下文描述符字2(RDES2)和字1(RDES1)中可用。只有當(dāng)設(shè)置了最后一個描述符位(RDES3[28])時,這才有效。上下文描述符被寫入下一個描述符中,剛好在數(shù)據(jù)包的最后一個正常描述符之后。
13PVPTP版本該比特指示所接收的PTP消息具有IEEE 1588版本2格式。當(dāng)該位被重置時,它指示IEEE 1588版本1格式。只有當(dāng)您選擇時間戳功能時,此位才可用。否則,該位被保留。
12PFTPTP數(shù)據(jù)包類型此位表示PTP消息直接通過以太網(wǎng)發(fā)送。只有當(dāng)您選擇時間戳功能時,此位才可用。否則,該位被保留。
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有效負(fù)載錯誤)當(dāng)設(shè)置此位時,它指示以下情況之一:■ MAC計算的16位IP有效載荷校驗和(即TCP、UDP或ICMP校驗和)與接收段中相應(yīng)的校驗和字段不匹配?!?TCP、UDP或ICMP段長度與IP標(biāo)頭字段中的有效負(fù)載長度值不匹配?!?TCP、UDP或ICMP段長度小于TCP、UDP和ICMP允許的最小段長度。當(dāng)RDES3的位15(ES)被設(shè)置時,該位未被設(shè)置
6IPCBIP校驗和旁路此位表示校驗和卸載引擎被旁路。當(dāng)您選擇啟用接收TCP/IP校驗和檢查功能時,此位可用
5IPV6IPv6標(biāo)頭存在此位表示檢測到IPv6標(biāo)頭。當(dāng)選擇Enable Split Header Feature(啟用拆分標(biāo)頭功能)選項并設(shè)置通道控制寄存器的SPH位時,IPV6標(biāo)頭在RDES0所指向的標(biāo)頭緩沖區(qū)中可用。
4IPV4IPV4標(biāo)頭存在此位表示檢測到IPV4標(biāo)頭。當(dāng)RDES3的SPH位被設(shè)置時,IPV4報頭在RDES0所指向的報頭緩沖區(qū)中可用。
3IPHEIP標(biāo)頭錯誤當(dāng)設(shè)置此位時,表示以下情況之一:■ MAC計算的16位IPv4標(biāo)頭校驗和與接收到的校驗和字節(jié)不匹配?!?IP數(shù)據(jù)報版本與以太網(wǎng)類型值不一致。■ 以太網(wǎng)數(shù)據(jù)包沒有預(yù)期的IP標(biāo)頭字節(jié)數(shù)。當(dāng)位5或位4被設(shè)置時,該位是有效的。當(dāng)您選擇啟用接收TCP/IP校驗和檢查功能時,此位可用。
2:0PT有效載荷類型這些比特指示由接收校驗和卸載引擎(COE)處理的IP數(shù)據(jù)報中封裝的有效載荷的類型:■ 3'b0000:未知類型或未處理IP/AV有效負(fù)載■ 2001年3月:UDP■ 2010年3月:TCP■ 2011年3月:ICMP■ 3'b110:AV標(biāo)記數(shù)據(jù)包■ 3'b111:帶AV標(biāo)簽的控制包■ 3'b101:AV未標(biāo)記控制數(shù)據(jù)包■ 3'b100:IGMP如果IPV4標(biāo)頭存在位被設(shè)置為else DCB(LLDP)控制包如果COE由于存在IP標(biāo)頭錯誤或碎片IP而不處理IP數(shù)據(jù)報的有效載荷,則將這些位設(shè)置為3'b000。

RDES2

名字描述
31:29L3L4FM匹配的第3層和第4層濾波器數(shù)量這些比特指示與接收到的分組匹配的第三層和第四層濾波器的數(shù)量:只有當(dāng)位28或位27被設(shè)置為高時,該字段才有效。當(dāng)多個濾波器匹配時,這些位給出最低濾波器的數(shù)目
28L4FM第4層過濾器匹配當(dāng)設(shè)置此位時,它表示接收到的數(shù)據(jù)包與啟用的第4層端口號字段之一匹配。只有當(dāng)下列條件之一成立時,才會給出此狀態(tài)第3層字段未啟用,所有啟用的第4層字段匹配,所有啟用的第3層和第4層篩選器字段匹配當(dāng)不止一個過濾器匹配時,該位給出由位[31:29]指示的過濾器的第4層過濾器狀態(tài)
27L3FM第3層篩選器匹配設(shè)置此位時,表示接收到的數(shù)據(jù)包與啟用的第3層IP地址字段之一匹配。只有當(dāng)下列條件之一成立時,才會給出此狀態(tài):■ 所有啟用的第3層字段匹配,所有啟用的“第4層”字段被繞過■ 所有啟用的過濾器字段匹配當(dāng)多個過濾器匹配時,該位給出由位[31:29]指示的過濾器的第3層過濾器狀態(tài)。
26:19MADRMMAC地址匹配或哈希值當(dāng)HF位重置時,此字段包含與接收到的數(shù)據(jù)包的目標(biāo)地址匹配的MAC地址寄存器號。僅當(dāng)DAF位被重置時,此字段才有效。設(shè)置HF位時,此字段包含MAC計算的哈希值。當(dāng)與哈希值相對應(yīng)的比特被設(shè)置在哈希過濾器寄存器中時,數(shù)據(jù)包通過哈希過濾器。
18HF哈希過濾器狀態(tài)設(shè)置此位時,表示數(shù)據(jù)包通過了MAC地址哈希過濾器。比特[26:19]表示散列值。
17DAF當(dāng)設(shè)置此位時,目標(biāo)地址過濾器失敗,這表明數(shù)據(jù)包在Mac上的DA過濾器失敗。
16SAFSA地址篩選器失敗設(shè)置此位時,表示數(shù)據(jù)包未通過MAC中的SA篩選器。
15OTSVLAN篩選器狀態(tài)設(shè)置時,此位指示接收數(shù)據(jù)包的VLAN標(biāo)記通過VLAN篩選器。此位僅在未啟用DWC-EQOS-ERVFE時有效。如果啟用了DWC-EQOS-ERVFE,則該位將重新定義為外部VLAN標(biāo)記篩選器狀態(tài)(OTS)。有關(guān)詳細(xì)信息,請參閱第235頁的“過濾器狀態(tài)”。此位對單個和雙VLAN標(biāo)記幀都有效。
14ITS內(nèi)部VLAN標(biāo)記篩選器狀態(tài)(ITS)此位僅在啟用DWC_EQOS_ERVFE時有效。有關(guān)更多詳細(xì)信息,請參閱第235頁的“過濾器狀態(tài)”。當(dāng)啟用雙VLAN處理時,此位僅對雙VLAN標(biāo)記幀有效。
13:11保留
10ARPNR未生成ARP應(yīng)答當(dāng)設(shè)置此位時,表示MAC沒有為接收到的ARP請求數(shù)據(jù)包生成ARP應(yīng)答。當(dāng)MAC忙于發(fā)送對早期ARP請求的ARP回復(fù)時(一次只處理一個ARP請求),設(shè)置此位。當(dāng)未選擇Enable IPv4 ARP Offload(啟用IPv4 ARP卸載)選項時,保留此位。
9:0HLL3/L4報頭長度該字段包含由MAC在L3或L4報頭邊界處分割的分組的報頭的長度,如MAC接收器所識別的。僅當(dāng)?shù)谝幻枋龇槐辉O(shè)置(FD=1)時,該字段才有效。頭數(shù)據(jù)被寫入相應(yīng)描述符的緩沖器1地址。如果標(biāo)頭長度為零,則此字段無效。這意味著MAC沒有識別和分割報頭。選擇“啟用拆分標(biāo)頭功能”選項時,此字段有效。

RDES3

名字描述
31OWN
30CTXT
29FD
28LD
27RS2V接收狀態(tài)RDES2有效設(shè)置此位時,表示RDES2中的狀態(tài)有效,并且由DMA寫入。僅當(dāng)RDES3的LD位被設(shè)置時,該位才有效。
26RS1V接收狀態(tài)RDES1有效設(shè)置此位時,表示RDES1中的狀態(tài)有效,并且由DMA寫入。僅當(dāng)RDES3的LD位被設(shè)置時,該位才有效。
25RS0V接收狀態(tài)RDES0有效設(shè)置此位時,表示RDES0中的狀態(tài)有效,并且由DMA寫入。僅當(dāng)RDES3的LD位被設(shè)置時,該位才有效。
24CECRC錯誤設(shè)置此位時,表示在接收到的數(shù)據(jù)包上發(fā)生了循環(huán)冗余校驗(CRC)錯誤。僅當(dāng)RDES3的LD位設(shè)置時,此字段才有效
23GP巨型數(shù)據(jù)包設(shè)置此位時,表示數(shù)據(jù)包長度超過指定的最大以太網(wǎng)大小1518、1522或2000字節(jié)(如果設(shè)置了巨型數(shù)據(jù)包啟用,則為9018或9022字節(jié))。注:巨型數(shù)據(jù)包僅表示數(shù)據(jù)包的長度。它不會導(dǎo)致任何數(shù)據(jù)包截斷
22RWT接收看門狗超時設(shè)置此位時,表示接收看門狗計時器在接收當(dāng)前數(shù)據(jù)包時已過期??撮T狗超時后,當(dāng)前數(shù)據(jù)包被截斷。
21OE溢出錯誤設(shè)置此位時,表示接收到的數(shù)據(jù)包由于Rx FIFO中的緩沖區(qū)溢出而損壞。注意:此位僅在DMA將部分?jǐn)?shù)據(jù)包傳輸?shù)綉?yīng)用程序時設(shè)置。只有當(dāng)Rx FIFO在閾值模式下操作時才會發(fā)生這種情況。在存儲轉(zhuǎn)發(fā)模式中,所有部分?jǐn)?shù)據(jù)包都會完全丟棄在Rx FIFO中
20RE接收錯誤當(dāng)設(shè)置此位時,它指示在分組接收期間斷言gmii_rxer_i信號,而斷言gmii_rxdv_i信號。該錯誤還包括GMII和半雙工模式中的載波擴(kuò)展錯誤。錯誤可以是較少擴(kuò)展名或沒有擴(kuò)展名,也可以是擴(kuò)展期間的錯誤(rxd!=0f)
19DE漂移位錯誤設(shè)置此位時,表示接收到的數(shù)據(jù)包具有非整數(shù)倍的字節(jié)(奇數(shù)半字節(jié))。此位僅在MII模式下有效。
18:16LT長度/類型字段此字段指示接收到的數(shù)據(jù)包是長度數(shù)據(jù)包還是類型數(shù)據(jù)包。這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錯誤摘要設(shè)置此位時,表示以下位的邏輯或:僅當(dāng)RDES3的LD位被設(shè)置時,此字段才有效?!?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數(shù)據(jù)包長度這些比特指示被傳送到系統(tǒng)存儲器(包括CRC)的接收數(shù)據(jù)包的字節(jié)長度。當(dāng)RDES3的LD位被設(shè)置和/或溢出錯誤位被重置時,此字段有效。當(dāng)啟用IP校驗和計算并且接收到的分組不是MAC控制分組時,分組長度還包括附加到以太網(wǎng)分組的兩個字節(jié)。當(dāng)設(shè)置RDES3的LD位時,此字段有效。當(dāng)未設(shè)置Last Descriptor和Error Summary位時,此字段指示當(dāng)前數(shù)據(jù)包已傳輸?shù)睦塾嬜止?jié)數(shù)。

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

見手冊21.6.3

只有DMA能寫,提供最后一個包的擴(kuò)展?fàn)顟B(tài)信息,

RDES3的b30 CTXT標(biāo)記該類型

1.4Split Header Support模式

DMA可以分別處理接收到的包的報頭和有效載荷。支持MAC幀,IP包,TCP/UDP包三個級別的包類型。

見手冊21.3

1.5總結(jié)

以上信息來源手冊的簡單整理,以備查詢,實際調(diào)試過程中以對照手冊為準(zhǔn)。

一些關(guān)鍵的字段可以幫助調(diào)試等需要了解,重點了解OWN位的互斥作用,即硬件和軟件的R-M-W操作。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5046

    文章

    18817

    瀏覽量

    298550
  • 以太網(wǎng)
    +關(guān)注

    關(guān)注

    40

    文章

    5288

    瀏覽量

    169663
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5253

    瀏覽量

    119204
  • 緩沖器
    +關(guān)注

    關(guān)注

    6

    文章

    1903

    瀏覽量

    45327
  • 驅(qū)動開發(fā)
    +關(guān)注

    關(guān)注

    0

    文章

    130

    瀏覽量

    12036
收藏 人收藏

    評論

    相關(guān)推薦

    基于DWC2的USB驅(qū)動開發(fā)-IAD描述符詳解

    本文轉(zhuǎn)自公眾號,歡迎關(guān)注 基于DWC2的USB驅(qū)動開發(fā)-IAD描述符詳解 (qq.com) 一.? 前言 IAD描述符用于一個設(shè)備功能關(guān)聯(lián)多
    的頭像 發(fā)表于 06-27 08:45 ?4.8w次閱讀
    基于<b class='flag-5'>DWC</b>2的USB<b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-IAD<b class='flag-5'>描述符</b>詳解

    基于DWC_ether_qos以太網(wǎng)驅(qū)動開發(fā)-MAC幀格式介紹

    本文轉(zhuǎn)自公眾號,歡迎關(guān)注 基于DWC_ether_qos以太網(wǎng)驅(qū)動開發(fā)-MAC幀格式介紹 (q
    的頭像 發(fā)表于 08-30 09:23 ?1902次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-MAC幀<b class='flag-5'>格式</b><b class='flag-5'>介紹</b>

    基于DWC_ether_qos以太網(wǎng)驅(qū)動開發(fā)-MDIO驅(qū)動編寫與測試

    本文轉(zhuǎn)自公眾號歡迎關(guān)注 基于DWC_ether_qos以太網(wǎng)驅(qū)動開發(fā)-MDIO驅(qū)動編寫與測試 一.前言
    的頭像 發(fā)表于 08-30 09:37 ?3278次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-MDIO<b class='flag-5'>驅(qū)動</b>編寫與測試

    基于DWC_ether_qos以太網(wǎng)驅(qū)動開發(fā)-描述符鏈表介紹

    本文轉(zhuǎn)自公眾號歡迎關(guān)注 一.描述符概述 1.0 前言 對于DWC Ethernet QoS驅(qū)動的編寫來說,初始化完成之后,核心操作就是DMA的描述符
    的頭像 發(fā)表于 08-30 09:39 ?3896次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-<b class='flag-5'>描述符</b>鏈表<b class='flag-5'>介紹</b>

    基于DWC_ether_qos以太網(wǎng)驅(qū)動開發(fā)-數(shù)據(jù)流驗證過程

    轉(zhuǎn)自公眾號歡迎關(guān)注 https://mp.weixin.qq.com/s/klrHhaLMM_0W3FGVwHXFkA 基于DWC_ether_qos以太網(wǎng)驅(qū)動開發(fā)-數(shù)據(jù)流驗證過程
    的頭像 發(fā)表于 08-31 08:41 ?1649次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-數(shù)據(jù)流驗證過程

    基于DWC_ether_qos以太網(wǎng)驅(qū)動開發(fā)-收發(fā)驅(qū)動編寫與調(diào)試

    本文轉(zhuǎn)自公眾號,歡迎關(guān)注 基于DWC_ether_qos以太網(wǎng)驅(qū)動開發(fā)-收發(fā)驅(qū)動編寫與調(diào)試 (qq.com) https://mp.wei
    的頭像 發(fā)表于 09-05 08:47 ?1918次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-收發(fā)<b class='flag-5'>驅(qū)動</b>編寫與調(diào)試

    基于DWC_ether_qos以太網(wǎng)驅(qū)動開發(fā)-無OS環(huán)境移植LWIP

    本文轉(zhuǎn)自公眾號歡迎關(guān)注 基于DWC_ether_qos以太網(wǎng)驅(qū)動開發(fā)-無OS環(huán)境移植LWIP (qq.com) https://mp.weixin.qq.com/s
    的頭像 發(fā)表于 09-06 08:40 ?1297次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-無OS環(huán)境移植LWIP

    基于DWC_ether_qos以太網(wǎng)驅(qū)動開發(fā)-LWIP的堆管理介紹

    本文轉(zhuǎn)自公眾號歡迎關(guān)注 基于DWC_ether_qos以太網(wǎng)驅(qū)動開發(fā)-LWIP的堆管理介紹 (qq.com) https://mp.wei
    的頭像 發(fā)表于 09-08 08:40 ?1032次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-LWIP的堆管理<b class='flag-5'>介紹</b>

    基于DWC_ether_qos以太網(wǎng)驅(qū)動開發(fā)-RTOS環(huán)境移植LWIP與性能測試

    本文轉(zhuǎn)自公眾號,歡迎關(guān)注 基于DWC_ether_qos以太網(wǎng)驅(qū)動開發(fā)-RTOS環(huán)境移植LWIP與性能測試 (qq.com) https://mp.weixin.qq.com/s
    的頭像 發(fā)表于 09-11 11:20 ?1685次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-RTOS環(huán)境移植LWIP與性能測試

    基于DWC_ether_qos以太網(wǎng)驅(qū)動開發(fā)-LWIP在PC上進(jìn)行開發(fā)調(diào)試

    本文轉(zhuǎn)自公眾號歡迎關(guān)注 基于DWC_ether_qos以太網(wǎng)驅(qū)動開發(fā)-LWIP在PC上進(jìn)行開發(fā)調(diào)試 (qq.com) https://mp
    的頭像 發(fā)表于 09-11 08:40 ?1673次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-LWIP在PC上進(jìn)行<b class='flag-5'>開發(fā)</b>調(diào)試

    以太網(wǎng)描述符ETH_DMATxDesc_OWN異常

    stm32 以太網(wǎng)發(fā)送一段時間后發(fā)送描述符狀態(tài)一直為DMA擁有,造成以太網(wǎng)發(fā)送停止,發(fā)送過程中什么原因會造成描述符一直為DMA擁有;(發(fā)送接收同時進(jìn)行,接收為中斷接收)`&a
    發(fā)表于 07-07 14:08

    USB HID報告及報告描述符簡介

    在USB中,USB HOST是通過各種描述符來識別設(shè)備的,有設(shè)備描述符,配置描述符,接口描述符,端點描述符,字符串
    發(fā)表于 04-12 11:13 ?3967次閱讀

    設(shè)計軟件核心以太網(wǎng)服務(wù)質(zhì)量數(shù)據(jù)手冊免費下載

    本文描述Synopsys設(shè)計軟件核心以太網(wǎng)服務(wù)質(zhì)量DWC以太網(wǎng)QoS核心5.10A。DWC
    發(fā)表于 10-23 08:00 ?16次下載
    設(shè)計軟件核心<b class='flag-5'>以太網(wǎng)</b>服務(wù)質(zhì)量數(shù)據(jù)手冊免費下載

    DesignWare核心以太網(wǎng)服務(wù)質(zhì)量數(shù)據(jù)本

      本文檔介紹Synopsys DesignWare核心以太網(wǎng)服務(wù)質(zhì)量(DWC_Ethernet_qos)核心,5.10a。DWC_Ethernet_qos實現(xiàn)了與MAC層相關(guān)的
    發(fā)表于 03-31 15:11 ?3次下載

    基于DWC_ether_qos以太網(wǎng)驅(qū)動開發(fā)-包過濾

    以太網(wǎng)上數(shù)據(jù)非常多,如果所有數(shù)據(jù)都接收交給軟件去處理軟件負(fù)載會非常重,所以一般只需要接收發(fā)給自己的數(shù)據(jù)即可
    的頭像 發(fā)表于 09-02 09:19 ?1284次閱讀
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-包過濾