我們是自制的板子, 想用1000BASE通訊, 平臺是xilnx zc706 , phy模式為RGMII,
uboot啟動時報錯:
PHY address is not setup correctly 7
PHY is not detected
GEM PHY init failed
No ethernet found
請問有做過的嗎,這種情況怎么解決?
uj5u.com熱心網友回復:
PHY ID對嗎uj5u.com熱心網友回復:
&gem0 {
status = "okay";
phy-mode = "rgmii-id";
phy-handle = <ðernet_phy>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gem0_default>;
ethernet_phy: ethernet-phy@7 {
reg = <7>;
device_type = "ethernet-phy";
xlnx,phy-type = <0x5>;
};
};
id應該沒問題。
問題出在RGMII模式上,在這個模式下讀出的phy網路暫存器數有問題
uj5u.com熱心網友回復:
讀phy暫存器走的的管理口MDIO,和在RGMII模式沒關系吧,現在可以正常訪問PHY暫存器么?uj5u.com熱心網友回復:
您好,我把出錯的那個容錯屏蔽掉,是能夠訪問phy暫存器的,而且暫存器狀態也有改變、是可以訪問phy暫存器的。
uboot出錯原始碼位置:
/* Enable only MDIO bus */
writel(ZYNQ_GEM_NWCTRL_MDEN_MASK, ®s->nwctrl);
if (priv->interface != PHY_INTERFACE_MODE_SGMII) {
ret = phy_detection(dev);
if (ret) {
printf("GEM PHY init failed\n");
return ret;
}
}
我屏蔽的就是這個判斷。
uj5u.com熱心網友回復:
phy_detection這個函式:
phyread(priv, priv->phyaddr, PHY_DETECT_REG, &phyreg);
if ((phyreg != 0xFFFF) &&
((phyreg & PHY_DETECT_MASK) == PHY_DETECT_MASK)) {
/* Found a valid PHY address */
debug("Default phy address %d is valid\n",
priv->phyaddr);
return 0;
}
PHY_DETECT_MASK:這個宏是1808,我不明白為什么是1808.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/22670.html
標籤:內核源代碼研究區
