01問題分析
問題描述1——
以太網初始化報錯 No phy found
在執行ifconfig eth0 up命令時,出現"No phy found"異常log。
問題分析:
出現"No phy found",常見原因是供給phy使用的25M時鐘異常,導致phy工作不正常,gmac驅動通過mdio接口也讀不到phy的設備信息。
或者MDIO引腳配置不正確或者phy地址不正確;再就是MDIO沒做上拉電阻,GMAC讀取不到phy設備信息,用示波器量一下MDIO波形是否正確;再或是phy芯片復位失敗,需要更換phy芯片復位上拉電阻。
排查步驟:
(1) 檢查phy供電是否正常;
(2) 檢查phy使用的25M時鐘(Soc ephy25M或外部晶振)是否正常;
(3) 檢查phy-mode是否按板級實際情況配置(mii/rmii/rgmii);
(4) 檢查MDIO是否有上拉電阻;
(5) 檢查MDIO引腳配置是否正確;
(6) eMAC phy地址是否和硬件一致;
(7) 檢查復位上拉電阻是否和原理參考方案一致。
MDIO通訊正常驗證:
使用phytool工具讀取0x02 0x03寄存器 是否正確讀取PHY芯片ID,讀取成功,代表MDIO通訊正常。
問題描述2——
以太網初始化報錯NO SUCN DEVICE
執行ifconfig -a/ifconfig eth0/ifconfig eth0 up命令,找不到eth0設備。
問題分析:
以太網模塊配置未生效或存在GPIO沖突。
排查步驟:
步驟1:抓取內核啟動log,搜索"gmac"關鍵字段,檢查gmac驅動是否probe成功;
步驟2:若內核啟動log顯示mac控制器probe失敗,常見原因是GPIO資源沖突導致。
解決方法:
GPIO沖突會有報錯信息,根據報錯信息,查看GPIO沖突引腳。
查看以太網模塊是否配置。
問題描述3——
以太網初始化報錯Initialize hardware error
執行ifconfig eth0 up命令,出現"Initialize hardware error"異常log。
問題分析:
出現"Initialize hardware error",一般是由于phy沒有輸出RX CLK至MAC控制器,導致MAC控制器內部soft reset失敗,常見原因是phy供電異常或25M時鐘異常;或者是檢查數據引腳的時鐘是否正確,RMILL RX CLK TX CLK 是否是正確時鐘。
排查步驟:
用示波器抓取rx_clk時鐘波形,查看是否保持25M時鐘穩定,如果出現25M/2.5M 來回跳動。即MAC與phy未link成功。
解決方法:
軟件上可通過在phy復位之后,設置寄存器0 固定為100M全雙工,可link成功。目前可這樣解決問題:
在drivers/net/ethernet/allwinner/sunxi-gmac.c 中 geth_phy_init函數中 phy_connect_direct 之前加入phy_write(phydev, 0x0, 0x2100)。
以上是我們在OKA40i-C開發板的使用過程中常見網卡設計問題,有些可能是因為大家在參考方案時出現了配置問題,或者是因為芯片輸出的信號不正常導致。大家在參考OKA40i-C開發板的雙網口方案時,可以查看本文章整理的問題點,說不定就是您現在項目中遇見的bug。
接下來,小編將給大家介紹一些常用的網卡軟件問題對應的排查手段。
02排查手段
這些排查手段可以幫助您在調試phy時有一個基本的調試思路,提到的一些工具可以幫助您快速定位并且解決網卡問題。
(1) 檢查menuconfig及dts以太網配置是否打開;
(2) 檢查phy-mode配置是否與PHY和GMAC之間的物理接口匹配,如rgmii、rmii等;
(3) 檢查GPIO配置是否正確,如IO復用功能、驅動能力等;
(4) 使用phytool工具讀取phy ID 驗證MDIO是否正確。
如下圖示例,能夠正常讀取JL11x1的phy ID則代表MDIO通訊正常。
使用phytool工具讀取phy狀態寄存器,查看phy芯片狀態。以JL11x1為例,如0x01狀態寄存器讀取值為0x786d,說明link成功并且工作正常。
|