在尝试使用以太网口驱动例子Pa_emacExample的时候遇到几个问题。1,在Init_cpsw()函数中有三个mac地址,注释中分别为cppi,Emac1和Emac2。想知道这三个地址如何跟evm板上mac0和mac1对应,另外这些地址能否更改;2,例子默认在evm板模式下使用EMac1做internalLoopback,如果我要修改为Emac2应该怎么做;
3,如何在EVM上使用external-loopback or non-loopback模式?如何配置并修改代码?谢谢~
Zhan Xiang:
1.由于6678上cpsw是一个3端口emac switch,并且提供了ALE(Address Lookup Engine)的功能,这样当任意一个端口有数据发送到switch时,如果此时ALE使能,那么内部的switch就会根据ALE的配置将和对应mac匹配的packet路由到对应的端口。所以port1和EMAC1对应,port2和EMAC2对应,其含义就是当有packet进入到switch中是,所有mac地址和port1的地址匹配的就会发送到EMAC1的接口去,以此类推其他的端口。这些地址是可以修改的,和普通的mac地址一样的。
2.如果要做emac2,只要把update port0 addr的部分地址由macaddress1改为macaddress2,并且发送时使用macaddress2发送就行。
3.把cpskwlpkMode修改成CPSW_LOOPBACK_EXTERNAL重新编译应该就可以。
David Yang:
回复 Zhan Xiang:
谢谢你的解答,但还是有些地方不太清楚~
使用的是6678的evm
1,Pa_emacExample例子中关于设置entry的语句,在Int32 Init_Cpsw (Void)函数中。但
if(cpswLpbkMode == CPSW_LOOPBACK_NONE)
Switch_update_addr(0, macAddress0, 0);
else
Switch_update_addr(0, macAddress1, 0);
Switch_update_addr(1, macAddress1, 0);
Switch_update_addr(2, macAddress2, 0);
似乎将同一个mac地址绑定了0、1两个端口,这怎么理解?
2,在工程中似乎没有找到update port0 addr的部分;另外Int32 Setup_PASS (Void)函数中通过Add_MACAddress似乎已经将mac1的地址绑定为destination地址,如要使用emac2,这里需要修改吗?
3,同样关于pass的问题,在Setup_PASS (Void)函数中,设置了mac,ip和port(这里port号用的0x5678,不解。。),请问这三者在PA中是如何配合使用的?
谢谢~~~~
David Yang:
回复 Zhan Xiang:
谢谢你的解答,但还是有些地方不太清楚~
使用的是6678的evm
1,Pa_emacExample例子中关于设置entry的语句,在Int32 Init_Cpsw (Void)函数中。但
if(cpswLpbkMode == CPSW_LOOPBACK_NONE)
Switch_update_addr(0, macAddress0, 0);
else
Switch_update_addr(0, macAddress1, 0);
Switch_update_addr(1, macAddress1, 0);
Switch_update_addr(2, macAddress2, 0);
似乎将同一个mac地址绑定了0、1两个端口,这怎么理解?
2,在工程中似乎没有找到update port0 addr的部分;另外Int32 Setup_PASS (Void)函数中通过Add_MACAddress似乎已经将mac1的地址绑定为destination地址,如要使用emac2,这里需要修改吗?
3,同样关于pass的问题,在Setup_PASS (Void)函数中,设置了mac,ip和port(这里port号用的0x5678,不解。。),请问这三者在PA中是如何配合使用的?
谢谢~~~~
David Yang:
回复 Zhan Xiang:
另外,同样对于这个例子,Int32 Setup_PASS (Void)函数中关于PA的配置。此函数中有子函数Int32 Add_MACAddress (Void),请问这个子函数配置的是PA的发流程还是收流程?函数的注释看上去是往host传输的收流程,但是destine地址却是Emac1的地址。同样的问题也存在于Add_IPAddress ()和Add_Port ()中~
谢谢~