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