问题:
参考ti AM335x SSK开发板先做了一版实验板,做了四块(机器贴的)四块网口都能用,后来做核心板,原理图和开发板和实验板是一样的,手焊了两块核心板网口都ping不通,
打印信息如下:
U-Boot# ping 192.168.1.100
link up on port 0, speed 1000, full duplex
Using cpsw device
ping faiLED; host 192.168.1.100 is not alive
U-Boot#
原理图是RGMII 千兆模式,原理图见附件
测试发现AM335X_RGMII1_TXCLK这个引脚启动时是10MHz,ping一下然后就变成50MHz 了,这个是不正常的,
实验板这个引脚启动时是25MHz,ping一下就变成125MHz,这是对的,
用的uboot代码是一模一样的。
现在就是不知道这个问题是那引起的?
分析:
软件没改过,一模一样的,
25M-->>10M 125M-->>50M,目前的时钟是正常的0.4倍,所以我怀疑是Core PLL输出频率的问题,这个CORE_CLKOUTM5正常应该是250M,可能是我的板子这个值是100M,但是CORE_CLKOUTM5这个值是由谁决定的那?我搞不明白了
解决:
是因为AM335x和PMIC I2C没通讯上导致的,SCL 和SDA没加上拉电阻,而u-boot中这两个管脚设置又是下拉模式,加上上拉电阻或者把引脚改成上拉模式就行了。
因為PMU沒配置好MPU在代碼內會進入OPP50, ethernet會有問題.
正常应该进入OPP100,结果没有跟PMU通讯上所以进入OPP50,导致网口时钟不对
如果没有使用电源管理芯片,可以在MLO中将时钟配置,即可
__weak void am33xx_spl_board_init(void)
{
do_setup_dpll(&dpll_core_regs, &dpll_core_opp100);
do_setup_dpll(&dpll_mpu_regs, &dpll_mpu_opp100);
}