|
在使用飛凌嵌入式RK3568核心板搭配自制底板時,由于PCB走線與參考設計存在差異,常導致RGMII接口時序異常,進而出現網口不通或頻繁丟包的情況。本文將為大家提供一套簡單高效的調試方案,通過三步操作即可解決此類問題。 1 測試條件① 硬件:飛凌嵌入式RK3568核心板; ② 系統:Linux4.19.206; ③ 底板:用戶自制底板,且底板設計基本遵循飛凌提供的RK3568核心板參考原理圖,但PCB走線存在差異; ④ 問題:網口無法連接或網絡丟包現象嚴重。
2 調試步驟① 確認系統節點(以RK3568為例) •進入目錄:/sys/devices/platform/fe300000.ethernet •確認存在以下關鍵節點:
② 掃描Delayline窗口(獲取中間值) 重要提示:如果使用RTL8211E PHY 芯片,測試前務必拔掉網線! •使用1000M (千兆)速率進行掃描: •記錄這兩個值。 ③ 測試掃描得到的Delayline值 •將步驟2中掃描得到的tx_delay和rx_delay值寫入rgmii_delayline節點進行臨時配置: 必須 確保phy_lb回環測試通過 (pass)。這是后續操作的基礎。如果測試失敗,可能需要重新掃描或檢查硬件。 ④ 固化配置到設備樹(DTS)并燒寫固件 •在 phy_lb 測試通過后,將測試有效的 tx_delay 和 rx_delay 值寫入設備樹源文件(DTS)中的GMAC節點。 •找到RK3568的DTS文件中定義gmac的部分(通常在rk3568.dtsi或板級DTS文件中)。 •修改tx_delay和rx_delay屬性值為測試通過的值: &gmac {assigned-clocks = <&cru SCLK_RMII_SRC>;assigned-clock-parents = <&clkin_gmac>;clock_in_out = "input";phy-supply = <&vcc_lan>;phy-mode = "rgmii";pinctrl-names = "default";pinctrl-0 = <&rgmii_pins>;snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;snps,reset-active-low;snps,reset-delays-us = <0 10000 50000>;tx_delay = <0x2e>; //替換為掃描測試得到的有效tx_delay值(十六進制)rx_delay = <0x0f>; //替換為掃描測試得到的有效rx_delay值(十六進制)status = "okay";};•重新編譯包含修改后DTS的內核或完整固件。 •將新固件燒錄到 RK3568核心板。 ⑤ 最終驗證 •設備啟動后,進行網絡連接測試: 使用ping命令測試網絡連通性和穩定性。 使用iperf3等工具進行網絡帶寬和性能測試,檢查是否還存在丟包。 •一般情況下,完成以上步驟并驗證通過后,網口不通或丟包問題應得到解決。 3 重要提示① 操作風險: 修改RGMII delayline 參數是底層硬件調優。錯誤的參數可能導致網口完全失效。強烈建議在操作前備份原始固件和DTS文件。 ② 測試必要性: 步驟3 (phy_lb回環測試)必須通過才能將參數寫入 DTS。跳過此測試直接固化參數風險極高。 ③ 硬件差異: 此方法主要解決因PCB走線差異引起的時序問題。如果自制底板與參考設計差異很大,或者存在其他硬件故障,此方法可能無效。 ④參數值: 示例中的0x2e和0x0f僅為說明格式,必須使用phy_lb_scan掃描并結合phy_lb測試驗證得到的實際有效值。 4 總結當用RK3568自制底板遇到因PCB走線差異導致的RGMII時序跑偏問題時,使用“掃描-驗證-固化”三步急救:echo掃描最佳tx/rx_delay → phy_lb回環驗證 → DTS一鍵寫入,即可讓崩潰的網口原地復活。 飛凌嵌入式FET3568-C核心板基于Rockchip RK3568處理器開發設計,該處理器是Rockchip面向于AIoT和工業市場打造的一款高性能、低功耗、功能豐富的國產化應用處理器。四核64位Cortex-A55架構,主頻高達2.0GHz,且內置1TOPS算力NPU,而且經過了嚴苛的環境溫度測試、壓力測試、長期穩定性運行測試,確保其工作的穩定可靠。 |