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