Part Number:AM3354
TI的fae及各位大侠好:
目前基于am3354平台,进行系统u-boot和kernel升级;
将原有的u-boot 2012 升级为u-boot 2020.01,目前已成功烧录启动u-boot-spl.bin和u-boot.img,但是ping不通,帮忙看下啥原因?
但是测试网络模块,ping和tftp不通过,网口的两个led指示灯都正常显示,使用逻辑分析仪步骤mdc和mdio数据,也存在时钟和数据。
lan8720a,使用rmii模式,引脚配置和初始化也成功,在u-boot阶段使用mii和mdio命令,也可以正常读取寄存器数值。
u-boot阶段的开机logo如下(添加有测试打印):
board_init_f start
early_system_init start
set_uart_mux_conf
enable_uart0_pin_mux
<debug_uart> spl.c spl_early_init
spl_early_init
board.c spl_early_init
early_system_init end
board_early_init_f
set_mux_conf_regs
imac pin mux init
scale_vcores
scale_vcores_generic
scale_vcores_generic okay
zq1500_gpio_init start
zq1500_gpio_init end
sdram_init func 1st
sdram_init func 2nd
board_init_f end
board_init_r
>>SPL: board_init_r()
TLB table from 8fffc000 to 90000000
spl_init
spl_board_init
preloader_console_init
U-Boot SPL 2020.01-dirty (Oct 12 2021 – 15:15:11 +0800)
Trying to boot from UART
CCCxyzModem – CRC mode, 1(SOH)/746(STX)/0(CAN) packets, 4 retries
Loaded 763280 bytes
Jumping to U-Boot
loaded – jumping to U-Boot…
U-Boot 2020.01-dirty (Oct 12 2021 – 15:15:11 +0800)
CPU : AM335X-GP rev 2.1
Model: TI AM335x EVM
DRAM: 256 MiB
enable_caches 1st
dcache_enable 2nd
mmu_setup 1st
mmu_setup 2nd
mmu_setup 3rd
mmu_setup 4th
enable_caches 2nd
board_init
WDT: Started with servicing (60s timeout)
NAND: 512 MiB
MMC: OMAP SD/MMC: 0
Loading Environment from FAT… <ethaddr> not set. Validating first E-fuse MAC
Net: phy.c phy_probe
phy.c genphy_config_advert
phy_write 1st start
phy_write 1st
phy_write 2nd start
phy_write 2nd
phy.c genphy_restart_aneg
phy_write 4th
eth0: ethernet@4a100000
Hit any key to stop autoboot: 0
ping测试日志如下:
=> setenv ipaddr 192.168.7.235
=> setenv gatewayip 192.168.7.1
=> setenv serverip 192.168.7.47
=> setenv netmask 255.255.255.0
=>ping 192.168.7.1
link up on port 0, speed 100, full duplex
Using ethernet@4a100000 device
Abort
ping failed; host 192.168.7.1 is not alive
mii打印信息
=> mii info
PHY 0x00: OUI = 0x01F0, Model = 0x0F, Rev = 0x01, 100baseT, FDX
=> mii read 0x0 0x0
3100
=> mii read 0x0 0x2
0007
=> mii read 0x0 0x4
0DE1
mdio打印信息
=> mdio list
ethernet@4a100000:
0 – SMSC LAN8710/LAN8720 <–> ethernet@4a100000
逻辑分析仪捕捉mdc和mdio数据截图如下:
Shine:
请问设备树是怎么配置emac的?
,
chamberlain:
你好,设备树这块没有修改,发现确实是这样的原因;
使用的设备树是am335x-evm.dts,其中cpsw_emac0使用的phy-mode为rgmii模式,cpsw_default和cpsw_sleep引脚配置也为rgmii模式,现在修改为rmii模式及引脚配置,网络通信ok,ping测试通过。
限于之前u-boot 2012版本开发习惯原因,u-boot 2021一直没去修改dts,确实这方面导致。
当前u-boot 2021.01 存在ping测试主机偶发失败,另外tftp传输uImage失败的问题,传输文件速率很低,存在超时现象,这是哪方面导致??
之前的u-boot 2012版本,rmii模式,测试使用过tftp,传输数据很稳定,没有出现u-boot 2021版本这个问题。
,
Shine:
请尝试按照下面帖子中的几个方面检查一下配置。https://e2echina.ti.com/support/processors/f/processors-forum/71569/am335x-sdk6-0-uboot-tftp
,
chamberlain:
您好。目前使用的sdk linux-am335x-evm-07.03, 基于am3354平台进行移植;
在u-boot 2020.01,没有dcache命令; 当前使用u-boot和帖子中内容相差比较大;
lan8720a硬件电路设计没问题,因为我们使用u-boot 2012时候,tftp传输很快;
应该是驱动或配置哪里还需要修改,dts中配置也修改适配了,ping测试没问题;
现在没有明确的思路,帮忙分析指导下,多谢!
,
Shine:
请贴一下您的设备树。传输多大的文件?
,
chamberlain:
传输的dtb约65KB,传输的u-boot.img约753KB,文件大小都不到1MB;tftp文件传输速度约为1.7KB/s。
使用dts和dtsi为 am335x-evm.dts 和am33xx.dtsi (网络修改如下,其他未修改)
am335x-evm.dts
cpsw_default: cpsw_default { pinctrl-single,pins = < /* Slave 1 */
0x10c (PIN_INPUT_PULLDOWN | MUX_MODE1) /* mii1_crs.rmii1_crs_dv */ 0x110 (PIN_INPUT_PULLUP | MUX_MODE1) /* mii1_rxerr.rmii1_rxerr */ 0x114 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_tx_en.rmii1_txen */ 0x124 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txd1.rgmii1_td1 */ 0x128 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txd0.rgmii1_td0 */ 0x13c (PIN_INPUT_PULLDOWN | MUX_MODE1) /* mii1_rxd1.rgmii1_rd1 */ 0x140 (PIN_INPUT_PULLDOWN | MUX_MODE1) /* mii1_rxd0.rgmii1_rd0 */ 0x144 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii1_ref_clk.rmii1_refclk */ >; };
cpsw_sleep: cpsw_sleep { pinctrl-single,pins = < /* Slave 1 reset value */
0x10c (PIN_INPUT_PULLDOWN | MUX_MODE7) 0x110 (PIN_INPUT_PULLDOWN | MUX_MODE7) 0x114 (PIN_INPUT_PULLDOWN | MUX_MODE7) 0x124 (PIN_INPUT_PULLDOWN | MUX_MODE7) 0x128 (PIN_INPUT_PULLDOWN | MUX_MODE7) 0x13c (PIN_INPUT_PULLDOWN | MUX_MODE7) 0x140 (PIN_INPUT_PULLDOWN | MUX_MODE7) 0x144 (PIN_INPUT_PULLDOWN | MUX_MODE7) >; };
davinci_mdio_default: davinci_mdio_default { pinctrl-single,pins = < /* MDIO */ 0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* mdio_data.mdio_data */ 0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_clk.mdio_clk */ >; };
davinci_mdio_sleep: davinci_mdio_sleep { pinctrl-single,pins = < /* MDIO reset value */ 0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7) 0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7) >; };
&mac { pinctrl-names = "default", "sleep"; pinctrl-0 = <&cpsw_default>; pinctrl-1 = <&cpsw_sleep>; status = "okay"; slaves = <1>;};
&davinci_mdio { pinctrl-names = "default", "sleep"; pinctrl-0 = <&davinci_mdio_default>; pinctrl-1 = <&davinci_mdio_sleep>; status = "okay";
ethphy0: ethernet-phy@0 { reg = <0>; };};
&cpsw_emac0 { phy-handle = <ðphy0>; /*phy-mode = "rgmii-id";*/ phy-mode = "rmii";};
,
chamberlain:
您好:
尝试使用dcache和查看设置cpu主频,tftp下载速度改善不明显;
通过再次分析u-boot源码和比对dts关于rmii的节点设置,以及lan8720a时钟是输出50Mhz给mac控制器;
添加如下节点设置,tftp可以正常使用,下载文件速度正常,约为1~2MB/s
&phy_sel { rmii-clock-ext;};
本质是phy时钟的问题。
问题解决,感谢提供思路和参考。
,
Shine:
感谢分享!