CPSW下可挂2个Slave,比如说我接2个PHY,在uboot下执行个ping命令,CPSW如何决定使用哪个PHY的呢?
Steven Liu1:
印象中这个是由你端口的IP以及端口ARP缓存来确定,比如你的PHY1接net1,PHY2接net2,两者的网段IP不一样,维护的ARP缓存也是不一样的,ping时候就会尝试到相应的网口上发包。但如果遇到了两个PHY接到了同样一个网络的情况,就可能会出现对外ping不通的可能,因为两个端口的ip是一致的,且在同一个网络意味着对外的ARP缓存也一致,如果双网口要同时工作的话,如何发包呢?这时候就需要划分VLan来解决这个问题。不过一般来说,双网口的这种同时工作在同一网段的应用非常少,因为没多大意义。一般就是用作backup(这个没问题,因为一个时间只会有一个工作,出问题了更换另一个),或者是在两个网段。
Frank Zhang2:
印象中uboot只支持一路以太网
Jian Zhou:
回复 Frank Zhang2:
在SDK06的U-boot中的这个变量:
static struct cpsw_platform_data cpsw_data = { .mdio_base = AM335X_CPSW_MDIO_BASE, .cpsw_base = AM335X_CPSW_BASE, .mdio_div = 0xff, .channels = 8, .cpdma_reg_ofs = 0x800, .slaves = 1, .slave_data = cpsw_slaves, .ale_reg_ofs = 0xd00, .ale_entries = 1024, .host_port_reg_ofs = 0x108, .hw_stats_reg_ofs = 0x900, .mac_control = (1 << 5), .control = cpsw_control, .host_port_num = 0, .version = CPSW_CTRL_VERSION_2,};
slaves的值为1,而且cpsw_phy_init()函数中的phy_connect 函数也是指定地址为CONFIG_PHY_ADDR的PHY,所以应该是只初始化了一路以太网。
Bernie Chen:
回复 Jian Zhou:
你好,TI
我這邊有個疑問,那就是 kernel/arch/arm/mach-omap2/device.c 裡有個地方是 phy_id=0:4, phy_id=0:05 這代表的是掛兩顆 PHY的意思嗎? 謝謝。