轉(zhuǎn)自公眾號歡迎關(guān)注
https://mp.weixin.qq.com/s/klrHhaLMM_0W3FGVwHXFkA
基于DWC_ether_qos的以太網(wǎng)驅(qū)動開發(fā)-數(shù)據(jù)流驗(yàn)證過程 (qq.com)
一.前言
以太網(wǎng)驅(qū)動的編寫與調(diào)試是以數(shù)據(jù)流為導(dǎo)向的,數(shù)據(jù)流的確認(rèn)我們可以采取層層推進(jìn)的方式進(jìn)行驗(yàn)證。即先驗(yàn)證MAC層,再驗(yàn)證PHY層,再驗(yàn)證接具體的設(shè)備比如PC收發(fā)數(shù)據(jù)。
如下所示

二.MAC層回環(huán)
MAC層回環(huán)可以確認(rèn)MAC的DMA和PHY接口等是否工作正常.
MAC層回環(huán)即MAC的MII接口內(nèi)部回環(huán),不到外部PHY上,但是也驗(yàn)證到了MAC的PHY接口。
見手冊16 Using the Loopback Mode
使能MAC回環(huán)需要配置寄存器MAC_Configuration的LM位為1

有以下需要注意的地方:
1.只能使用全雙工模式
2.MAC回環(huán)也需要RXC時(shí)鐘,正常RXC時(shí)鐘來源于PHY,所以要不就使用PHY正常工作,要不就使用其他方式提供RXC時(shí)鐘。很多時(shí)候MAC回環(huán)不通就是RXC或者TXC沒有,所以先使用示波器確認(rèn)這兩個(gè)信號。
對于RTL8211F可以通過如下寄存器查看RXC是否輸出

同時(shí)確認(rèn)如下寄存器是否是LPI停止了RXC
最好如下寄存器按照默認(rèn)配置為0,即LPI時(shí)不停止RXC

還有需要注意的是我這里實(shí)測是要接上網(wǎng)線到電腦,Link OK狀態(tài)BMSR的bit2為1,才能MAC回環(huán)。否則MAC回環(huán)不通。
3.不要回環(huán)大包
三.PHY層回環(huán)
配置PHY寄存器0的bit14為1

四.ARP測試數(shù)據(jù)收發(fā)
發(fā)送ARP請求,電腦會自動返回ARP響應(yīng)以測試回路。
ARP請求包格式如下
| DA | 6字節(jié)目的MAC地址,設(shè)置為全FF廣播 | |
| SA | 6字節(jié)源MAC地址 | |
| Type | 2字節(jié)Type 0x0806 | |
| HWType | 2字節(jié) 0x0001 | |
| ProtocolType | 2字節(jié)0x0800 | |
| HWSize | 1字節(jié)0x06 | |
| ProtocolSize | 1字節(jié)0x04 | |
| Opcode | 2字節(jié)0x0001 | |
| 6字節(jié)發(fā)送端MAC地址 | ||
| 4字節(jié)發(fā)送端IP地址 | ||
| 6字節(jié)目的端MAC地址,未知所以全0 | ||
| 4字節(jié)目的端IP地址 | ||
| 18字節(jié)填充0,使得包長(DA到FCS)64字節(jié) |
ARP響應(yīng)包,和請求對比Opcode不一樣,MAC和IP的源和目的反向。
| DA | 6字節(jié)目的MAC地址 | |
| SA | 6字節(jié)源MAC地址 | |
| Type | 2字節(jié)Type 0x0806 | |
| HWType | 2字節(jié) 0x0001 | |
| ProtocolType | 2字節(jié)0x0800 | |
| HWSize | 1字節(jié)0x06 | |
| ProtocolSize | 1字節(jié)0x04 | |
| Opcode | 2字節(jié)0x0002 | |
| 6字節(jié)發(fā)送端MAC地址 | ||
| 4字節(jié)發(fā)送端IP地址 | ||
| 6字節(jié)目的端MAC地址,未知所以全0 | ||
| 4字節(jié)目的端IP地址 | ||
| 18字節(jié)填充0,使得包長(DA到FCS)64字節(jié) |
1.注意最低64字節(jié)的幀長要求
TDES3的CPC設(shè)置為00可以自動填充。

2.使用wireshark抓包確認(rèn)


五.總結(jié)
1.MAC層回環(huán)不通,則確認(rèn)RXC和TXC是否有時(shí)鐘,確認(rèn)DMA_Debug_Status0的收發(fā)狀態(tài)和描述符的相關(guān)寄存器(后面會單獨(dú)詳講收發(fā)的調(diào)試)。
2.PHY層回環(huán)不通則確認(rèn)PHY是否處于LINK Ok狀態(tài),邏輯分析儀監(jiān)控MII接口等。
3.ARP測試不通,則確認(rèn)發(fā)送包是否填充到了64字節(jié);確認(rèn)網(wǎng)線,硬件分析儀抓包等。
審核編輯 黃宇
-
嵌入式
+關(guān)注
關(guān)注
5188文章
20180瀏覽量
329271 -
以太網(wǎng)
+關(guān)注
關(guān)注
41文章
5933瀏覽量
179671 -
寄存器
+關(guān)注
關(guān)注
31文章
5590瀏覽量
129163 -
數(shù)據(jù)流
+關(guān)注
關(guān)注
0文章
129瀏覽量
15701 -
驅(qū)動開發(fā)
+關(guān)注
關(guān)注
0文章
138瀏覽量
12535
發(fā)布評論請先 登錄
基于DWC_ether_qos的以太網(wǎng)驅(qū)動開發(fā)-MAC幀格式介紹
基于DWC_ether_qos的以太網(wǎng)驅(qū)動開發(fā)-MDIO驅(qū)動編寫與測試
基于DWC_ether_qos的以太網(wǎng)驅(qū)動開發(fā)-描述符鏈表介紹
基于DWC_ether_qos的以太網(wǎng)驅(qū)動開發(fā)-收發(fā)驅(qū)動編寫與調(diào)試
基于DWC_ether_qos的以太網(wǎng)驅(qū)動開發(fā)-無OS環(huán)境移植LWIP
基于DWC_ether_qos的以太網(wǎng)驅(qū)動開發(fā)-LWIP的堆管理介紹
基于DWC_ether_qos的以太網(wǎng)驅(qū)動開發(fā)-RTOS環(huán)境移植LWIP與性能測試
基于DWC_ether_qos的以太網(wǎng)驅(qū)動開發(fā)-LWIP在PC上進(jìn)行開發(fā)調(diào)試
基于DWC_ether_qos的以太網(wǎng)驅(qū)動開發(fā)-LWIP的定時(shí)器模塊詳解
基于DWC_ether_qos的以太網(wǎng)驅(qū)動開發(fā)-LWIP的ICMP模塊介紹與PING收發(fā)測
設(shè)計(jì)軟件核心以太網(wǎng)服務(wù)質(zhì)量數(shù)據(jù)手冊免費(fèi)下載
DesignWare核心以太網(wǎng)服務(wù)質(zhì)量數(shù)據(jù)本
基于DWC_ether_qos的以太網(wǎng)驅(qū)動開發(fā)-包過濾
基于DWC_ether_qos的以太網(wǎng)驅(qū)動開發(fā)-軟復(fù)位介紹與問題案例
基于DWC_ether_qos的以太網(wǎng)驅(qū)動開發(fā)-描述符格式介紹

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