問題:
參考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);
}