我用udpserver例程測試通訊,在電腦上用網(wǎng)絡調(diào)試助手給板子的固定IP發(fā)送數(shù)據(jù)做回環(huán)測試,正常通訊時讀phy狀態(tài)是45(十進制),過半小時或一小時通訊會中斷,此時讀phy狀態(tài)是9。周圍環(huán)境中有干擾。
請問這是什么狀況,有沒有什么辦法能盡量避免(包括軟件和硬件設計),程序中需要怎么做能盡快恢復通訊,能不能只重啟phy不要涉及到socket?
我用udpserver例程測試通訊,在電腦上用網(wǎng)絡調(diào)試助手給板子的固定IP發(fā)送數(shù)據(jù)做回環(huán)測試,正常通訊時讀phy狀態(tài)是45(十進制),過半小時或一小時通訊會中斷,此時讀phy狀態(tài)是9。周圍環(huán)境中有干擾。
請問這是什么狀況,有沒有什么辦法能盡量避免(包括軟件和硬件設計),程序中需要怎么做能盡快恢復通訊,能不能只重啟phy不要涉及到socket?
您好,PHY狀態(tài)變化有兩個方面可能的原因:
(1)外部干擾導致單獨PHY無法工作,協(xié)議棧軟件運行正常。
(2)協(xié)議棧運行出錯,同時PHY不工作。
建議在收發(fā)時候加上獲取socket狀態(tài)的指令,待復現(xiàn)問題的時候查看socket出于什么狀態(tài)。暫無只重啟PHY的方法。
好的,謝謝。能說詳細點嗎,什么是獲取socket狀態(tài)指令,怎么用,包括tcp和udp。另外怎么恢復通訊,是重新創(chuàng)建socket,還是重新初始化網(wǎng)絡庫,還是復位整個芯片。
您好,關(guān)于您說的現(xiàn)象,您可以考慮以下幾點:
PHY因為干擾異常,這個建議您在網(wǎng)絡接口這邊使用一些增強抗干擾的屏蔽器件。
出現(xiàn)異常的時候,您可以看是否有觸發(fā)Time Out中斷,如果有的話,您可以嘗試重新拔插網(wǎng)線,如果能重新產(chǎn)生新的PHY中斷,如果可以,您可以在產(chǎn)生新的PHY中斷后,創(chuàng)建新的Socket。如果無法產(chǎn)生新的PHY中斷,您可能得考慮硬件復位芯片??茨芊裰匦虏僮?。