導(dǎo)讀
網(wǎng)絡(luò)故障困擾重重?本文聚焦客戶網(wǎng)卡故障的兩種特殊情形:低溫運(yùn)行與信號(hào)干擾下的網(wǎng)絡(luò)卡死??此坪?jiǎn)單卻歷經(jīng)波折的解決過程,帶你深入剖析排查中陷入的誤區(qū)。
? MDIO信號(hào)反射導(dǎo)致網(wǎng)絡(luò)卡死分析
客戶反饋網(wǎng)卡故障表現(xiàn)有兩種情形:在低溫情況下運(yùn)行一段時(shí)間后,容易出現(xiàn)網(wǎng)絡(luò)卡死,必須重啟才能恢復(fù);外界稍微有點(diǎn)信號(hào)干擾就有可能引起網(wǎng)絡(luò)卡死。
問題的解決方法看似很簡(jiǎn)單,但解決過程卻頗費(fèi)周章,花費(fèi)了很多的精力。排查出原因是MDIO的時(shí)鐘信號(hào)在低溫情況振鈴增強(qiáng)或受到干擾時(shí),信號(hào)產(chǎn)生毛刺,導(dǎo)致寄存器被寫入了錯(cuò)誤的值,PHY進(jìn)入了異常狀態(tài)無法工作。最終解決的方法是在MDC信號(hào)靠近源端串聯(lián)22歐電阻。下面進(jìn)行分析。
首先問題的現(xiàn)象是低溫工作一段時(shí)間后出現(xiàn),雙網(wǎng)口的板卡只有其中一個(gè)網(wǎng)口會(huì)出現(xiàn)該問題,且網(wǎng)絡(luò)一旦卡死,必須重啟才能恢復(fù),所以開始認(rèn)為是走線問題或電源問題誘發(fā)的MAC或PHY卡死。
另一個(gè)陷阱是PHY寄存器有兩部分,由于MDIO協(xié)議定義的register address位寬為5bit,對(duì)PHY來說是不夠用的,所以原廠將其分成了一般寄存器和擴(kuò)展寄存器兩部分。
以裕泰微的YT8531為例,通過一般寄存器的0x1E和0x1F間接地讀寫擴(kuò)展寄存器,地址大于0x1F的寄存器都需要通過0x1E和0x1F作為入口,參考圖1。初次檢查寄存器的時(shí)候只讀出了一般寄存器的值,檢查對(duì)比異常時(shí)和正常時(shí)沒有區(qū)別就認(rèn)為寄存器沒有問題了。后期又仔細(xì)核對(duì)發(fā)現(xiàn)出問題在擴(kuò)展寄存器,才又將調(diào)試方向糾正過來。測(cè)試MDIO波形發(fā)現(xiàn)原本應(yīng)該只在初始化過程中配置好的地址,正常通信過程中也在不停的覆寫,最終在反復(fù)的“嘗試”后,終于等到MDC毛刺,成功將錯(cuò)誤值寫入了寄存器。最終也通過示波器測(cè)到了MDC上的毛刺,測(cè)量得到的波形如圖2所示。
圖1 YT8531擴(kuò)展寄存器入口
圖1 示波器協(xié)議解析功能測(cè)量MDIO波形
MDIO是以太網(wǎng)電路中十分重要的部分,配置模式、調(diào)整性能都離不開MDIO,很多以太網(wǎng)故障都與MDIO有關(guān)。MDIO協(xié)議規(guī)定是可以多個(gè)網(wǎng)口使用同一個(gè)總線的,PHY芯片基本也都留有設(shè)置PHY地址的上下拉電阻,但很多主控芯片原廠還是會(huì)不建議一對(duì)多的設(shè)計(jì)。MDIO看似和I2C很像,但實(shí)際還是與I2C有很大區(qū)別,它的協(xié)議時(shí)序不同,速率也比I2C高很多,沒有應(yīng)答位,所以MDIO的上拉電阻不能用阻值太小的,信號(hào)走線也需要注意抗干擾和阻抗匹配。
關(guān)注我們,下期繼續(xù)講解:以太網(wǎng)Link Down問題排查題排查及其他容易忽略的問題。
AM335x升級(jí)之選
2路千兆以太網(wǎng)
3路CAN FD
支持GPMC
參考價(jià)格:319元起