CPSW下可挂2个Slave,比如说我接2个PHY,在uboot下执行个ping命令,CPSW如何决定使用哪个PHY的呢?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
CPSW下可挂2个Slave,比如说我接2个PHY,在uboot下执行个ping命令,CPSW如何决定使用哪个PHY的呢?
印象中这个是由你端口的IP以及端口ARP缓存来确定,比如你的PHY1接net1,PHY2接net2,两者的网段IP不一样,维护的ARP缓存也是不一样的,ping时候就会尝试到相应的网口上发包。但如果遇到了两个PHY接到了同样一个网络的情况,就可能会出现对外ping不通的可能,因为两个端口的ip是一致的,且在同一个网络意味着对外的ARP缓存也一致,如果双网口要同时工作的话,如何发包呢?这时候就需要划分VLan来解决这个问题。不过一般来说,双网口的这种同时工作在同一网段的应用非常少,因为没多大意义。一般就是用作backup(这个没问题,因为一个时间只会有一个工作,出问题了更换另一个),或者是在两个网段。
在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,所以应该是只初始化了一路以太网。