TI中文支持网
TI专业的中文技术问题搜集分享网站

U-boot 怎样支持 RMII?

am335x,开发板上网口使用的是RGMII或MII接口,但是我们的PHY使用的是RMII接口。

我找到board_eth_init()函数中有

if (board_is_bone()) {
writel(MII_MODE_ENABLE, &cdev->miisel);
cpsw_slaves[0].phy_if = cpsw_slaves[1].phy_if =
PHY_INTERFACE_MODE_MII;
} else {
writel(RGMII_MODE_ENABLE, &cdev->miisel);
cpsw_slaves[0].phy_if = cpsw_slaves[1].phy_if =
PHY_INTERFACE_MODE_RGMII;
}

我已经改成了:

writel(RMII_MODE_ENABLE, &cdev->miisel);
cpsw_slaves[0].phy_if = cpsw_slaves[1].phy_if =
PHY_INTERFACE_MODE_RMII;

另外,根据所选用的PHY芯片,将am335x_evm.h中的 #define CONFIG_PHY_SMSC 改为 #define CONFIG_PHY_MICREL

现在网口还是不通的,没发出以太网报文。请问还有哪里需要修改呢?

Yaoming Qin:

请问您需要用网口做启动么?

Hui Yin:

回复 Yaoming Qin:

至少需要在u-boot里面能通过网口加载镜像文件。不然没法进一步调试,从串口加载个内核就得好几分钟,更不用说根文件系统了。

而且将来生产的时候,打算做成从串口加载一个SPL,然后其他加载和烧写FLASH都通过网口自动完成。

另外知道了u-boot里面怎么调通网口,待会儿调linux内核的时候也是个有价值的参考。

如果能从网口启动就更好了,生产时可以少连一个串口。

Yaoming Qin:

回复 Hui Yin:

uboot里面已经可以支持网口了,关于RMII的phy,你可能需要再调下phy的硬件设计等等

Hui Yin:

回复 Yaoming Qin:

说一下现在的进展,这个问题和RMII接口的时钟信号有关,以前是用AM335x提供50MHz时钟给PHY,网络不通。

后来试了用一个50M晶振单独给PHY提供时钟,网络就通了。看来是AM335x提供的50M时钟不好。

这个有什么办法改善吗?另外AM335x用的晶振是24M的,如果换成25M晶振会不会比较好?改动大不大?

Hui Yin:

回复 Hui Yin:

试了和很多设备对接,发现网络也不是完全不通,而是挑网口,和有的设备能连通,和有的设备连不通。

25M晶振也换上试了,问题没有改善。

如果用独立晶振给PHY提供时钟,就所有设备都能连通了。

Hui Yin:

回复 Gary Wu:

增加一个有源晶振又要增加好几块钱成本啊,不过也没别的办法了。

赞(0)
未经允许不得转载:TI中文支持网 » U-boot 怎样支持 RMII?
分享到: 更多 (0)