ZHCAEL2 October 2024 AM3351 , AM3352 , AM3354 , AM3356 , AM3357 , AM3358 , AM3359 , AM4372 , AM4376 , AM4377 , AM4378 , AM4379 , AM620-Q1 , AM623 , AM625 , AM625-Q1 , AM62A1-Q1 , AM62A3 , AM62A3-Q1 , AM62A7 , AM62A7-Q1 , AM62P , AM6411 , AM6412 , AM6421 , AM6422 , AM6441 , AM6442
在調(diào)試潛在的網(wǎng)絡(luò)連接問(wèn)題之前,需要執(zhí)行一些初始步驟來(lái)驗(yàn)證以太網(wǎng)數(shù)據(jù)包的基本發(fā)送或接收是否存在問(wèn)題。第一步是查看是否定義了一個(gè)以太網(wǎng)接口。下一步是確定是否在兩個(gè)鏈路伙伴之間建立了鏈路。最后一步是驗(yàn)證以太網(wǎng) MAC 統(tǒng)計(jì)信息是否顯示正在發(fā)送或接收數(shù)據(jù)包而沒(méi)有發(fā)生任何損壞。
下文總結(jié)了調(diào)試以太網(wǎng)接口的初始步驟。請(qǐng)?jiān)?DUT 已成功引導(dǎo)至 Linux 環(huán)境后執(zhí)行這些步驟。
ifconfig -a
或 ip link show
初始化接口ethtool <interface name>
確定是否與鏈路伙伴建立了鏈路ethtool eth0
查看第一個(gè)以太網(wǎng)接口的詳細(xì)信息ethtool -S <interface name>
驗(yàn)證是否發(fā)送或接收了任何數(shù)據(jù)包鏈路伙伴 一詞就是指兩個(gè)直接連接的平臺(tái),如圖 3-1 所示。這稱為直接連接 拓?fù)?。?duì)于上述三個(gè)初始步驟,為 DUT 推薦的鏈路伙伴是運(yùn)行 Ubuntu 的 PC 或另一個(gè)已知運(yùn)行良好的 Linux 平臺(tái)。推薦鏈路伙伴采用 Linux 平臺(tái)的原因是為了提供一個(gè)對(duì)稱測(cè)試環(huán)境,以便鏈路伙伴與運(yùn)行 Linux 的 DUT 具有類似平臺(tái)。此外,在 Linux 平臺(tái)上可以輕松使用 ethtool
。
圖 3-1 顯示了以太網(wǎng)接口如何細(xì)分為兩個(gè)部分:MAC 和 PHY。MAC 負(fù)責(zé)發(fā)送和接收數(shù)據(jù)包。PHY 負(fù)責(zé)將信號(hào)從 MAC 轉(zhuǎn)換到以太網(wǎng)電纜。
確認(rèn)使用 ifconfig -a
或 ip link show
列出了要測(cè)試的接口后,下一步是查看是否檢測(cè)到與鏈路伙伴的以太網(wǎng)鏈路。
調(diào)試建議:
如果 ifconfig
或 ip a
命令未列出該接口,這可能意味著定義 CPSW 或 PRU-ICSSG 以太網(wǎng)接口的 DTS 文件中存在錯(cuò)誤。CPSW 和 PRU-ICSSG 都是 TI 設(shè)計(jì)的以太網(wǎng)接口。另請(qǐng)參閱節(jié) 5。
當(dāng)兩個(gè)鏈路伙伴(例如 TI EVM 和 PC)之間連接了以太網(wǎng)電纜時(shí),這兩個(gè)器件上的以太網(wǎng) PHY 會(huì)嘗試在這兩個(gè)器件之間建立鏈路,此過(guò)程不依賴于運(yùn)行的任何軟件(例如 ping
測(cè)試)。如果檢測(cè)到鏈路,下一步是檢查是否有任何接收數(shù)據(jù)包或發(fā)送數(shù)據(jù)包的流量。如果 DUT 上的以太網(wǎng)驅(qū)動(dòng)程序沒(méi)有檢測(cè)到鏈路,則以太網(wǎng)驅(qū)動(dòng)程序不會(huì)初始化,也不會(huì)傳遞網(wǎng)絡(luò)流量。
ethtool
實(shí)用程序用于執(zhí)行鏈路檢測(cè)和流量分析這兩個(gè)步驟。步驟 1 是檢查鏈路檢測(cè)。在此示例中,被測(cè)接口假定為 eth0。以下代碼片段顯示了 ethtool
命令的部分輸出。打印出來(lái)的信息有很多,但需要關(guān)注的部分是 Link detected:
屬性。Linked detected:
為 yes(如果檢測(cè)到鏈路)或 no(如果未檢測(cè)到鏈路)。此命令還返回鏈路速度和雙工模式信息。
root@am62xx-evm:~# ethtool eth0 Settings for eth0: ... Speed: 1000Mb/s Duplex: Full ... PHYAD: 0 Link detected: yes
如果未檢測(cè)到鏈路,則表示無(wú)法傳遞流量。請(qǐng)先解決此問(wèn)題,然后再繼續(xù)。
檢測(cè)到以太網(wǎng)鏈路后,可以查看 MAC 硬件統(tǒng)計(jì)信息(ethtool -S <interface name>
的結(jié)果)。從 MAC 硬件統(tǒng)計(jì)信息返回的信息包含有關(guān)基本數(shù)據(jù)包發(fā)送和接收的數(shù)據(jù)。通過(guò)檢查 DUT 上是否發(fā)送和接收了數(shù)據(jù)包,即可了解以太網(wǎng)接口和以太網(wǎng) PHY 是否正常工作。此外,DUT 未收到 IPv4 地址或未收到 ping 響應(yīng)并不一定意味著數(shù)據(jù)包的基本發(fā)送和接收存在問(wèn)題。例如,未收到 IPv4 地址的原因可能很簡(jiǎn)單,只是因?yàn)闆](méi)有設(shè)置 DHCP 服務(wù)器來(lái)提供 IPv4 地址。
就以太網(wǎng) MAC 是否正在發(fā)送和接收數(shù)據(jù)包而言,以太網(wǎng) MAC 統(tǒng)計(jì)信息是最準(zhǔn)確的一組統(tǒng)計(jì)信息。之所以說(shuō)這些統(tǒng)計(jì)信息是可查看的最準(zhǔn)確的統(tǒng)計(jì)信息,是因?yàn)榇藬?shù)據(jù)直接從物理線路測(cè)得,沒(méi)有額外的抽象層。從 MAC 的角度來(lái)看,ifconfig
或 ip -s link
命令顯示的已發(fā)送數(shù)據(jù)包(TX 數(shù)據(jù)包)或已接收數(shù)據(jù)包(RX 數(shù)據(jù)包)計(jì)數(shù)并不完全準(zhǔn)確。在內(nèi)核網(wǎng)絡(luò)協(xié)議棧和 MAC 驅(qū)動(dòng)程序之間可能會(huì)丟棄數(shù)據(jù)包。
以下代碼片段顯示了以太網(wǎng) MAC 硬件統(tǒng)計(jì)信息的部分示例,其中顯示了接收和發(fā)送的數(shù)據(jù)包以及所有相關(guān)的錯(cuò)誤。此示例顯示了在檢測(cè)到正確接收以太網(wǎng)幀和成功發(fā)送以太網(wǎng)幀時(shí)的預(yù)期結(jié)果。可能存在某些僅可通過(guò)連接的鏈路伙伴以太網(wǎng) MAC 硬件統(tǒng)計(jì)信息來(lái)查看的發(fā)送錯(cuò)誤。有關(guān)鏈路伙伴分析的更多詳細(xì)信息,請(qǐng)參閱節(jié) 9。
root@am62xx-evm:~# ethtool -S eth0 NIC statistics: ... rx_good_frames: 1127 ... rx_crc_errors: 0 rx_align_code_errors: 0 ... tx_good_frames: 163
有關(guān)如何分析 RX 和 TX 流量錯(cuò)誤的更多信息,請(qǐng)參閱節(jié) 7。
總之,如果定義了網(wǎng)絡(luò)接口(例如 eth0),檢測(cè)到與鏈路伙伴之間存在鏈路,發(fā)送和接收數(shù)據(jù)包計(jì)數(shù)器在遞增,并且 MAC 統(tǒng)計(jì)信息中沒(méi)有錯(cuò)誤計(jì)數(shù)器在遞增,那么以太網(wǎng)數(shù)據(jù)包的基本發(fā)送和接收沒(méi)有問(wèn)題。
一個(gè)常見(jiàn)問(wèn)題為是否需要諸如 ping
或 iperf3
(以前名為 iperf
)之類的應(yīng)用程序來(lái)執(zhí)行以太網(wǎng)幀的基本發(fā)送和接收。Linux 引導(dǎo)完成后,會(huì)嘗試使用廣播消息獲取 IP 地址。來(lái)自這些廣播消息的流量用于執(zhí)行基本的以太網(wǎng)幀發(fā)送和接收。有關(guān)如何獲取 IPv4 地址的更多詳細(xì)信息,請(qǐng)參閱節(jié) 8。
調(diào)試建議:
章節(jié)摘要:
ethtool <interface name>
檢查所需接口是否有鏈路。如果沒(méi)有鏈路,則必須調(diào)試該問(wèn)題。如果沒(méi)有檢測(cè)到鏈路,任何數(shù)據(jù)都無(wú)法傳遞。ethtool -S <interface name>
來(lái)檢測(cè)以太網(wǎng)幀(或數(shù)據(jù)包)基本發(fā)送和接收(即查看以太網(wǎng) MAC 硬件統(tǒng)計(jì)信息)。如果檢測(cè)到以太網(wǎng)幀或數(shù)據(jù)包,則表明接口正在基本層面工作。如果統(tǒng)計(jì)信息表明沒(méi)有發(fā)送或接收過(guò)以太網(wǎng)幀或數(shù)據(jù)包,則可以對(duì)這方面進(jìn)行調(diào)試。