I'm attempting to get the Igh EtherLab EtherCAT master running on am437x-idk with processor-sdk-04.03.00.05. I used yocto and built image tisdk-rootfs-image. I added my own ethercat recipe to build and install the master.
This is what appears when I start the master:
root@am437x-evm:~# /etc/08_ethercat start
Starting EtherCAT master 1.5.2 [ 1000.708151] EtherCAT: Master driver 1.5.2 2eff7c993a63
[ 1000.724378] EtherCAT: 1 master waiting for devices.
[ 1000.755662] ec_generic: EtherCAT master generic Ethernet device module 1.5.2 2eff7c993a63
[ 1000.768309] EtherCAT: Accepting F0:45:DA:6F:1B:96 as main device for master 0.
[ 1000.779010] ec_generic: Binding socket to interface 2 (eth0).
[ 1000.810833] EtherCAT 0: Starting EtherCAT-IDLE thread.
[ 1000.816140] EtherCAT 0: Link state of ecm0 changed to UP.
done
[ 1000.840860] EtherCAT WARNING 0: 1 datagram TIMED OUT!
[ 1001.840834] EtherCAT WARNING 0: 50 datagrams TIMED OUT!
[ 1002.840816] EtherCAT WARNING 0: 50 datagrams TIMED OUT!
[ 1003.840816] EtherCAT WARNING 0: 50 datagrams TIMED OUT! ...
The ethercat master command shows expected results (except with many datagram timeout messages interleaved on the output).
I use a Beckhoff ET2000 Tap/Probe to wireshark on the packets between the master and my one EtherCAT slave. I see the packet returning from the slave with WC=1, everything as expected. It seems that the packet is dropped. The outgoing packet has the proper source MAC address of my eth0 interface. The return packet has the source address of the master eth0 but with the LAA bit on, so it is a unique address. I verified on another system (am335x system based on sdk 03.x.x.x) that this is how the system normally operates. All destination addresses are always the ether broadcast address.
I notice the PRU eth ports get random MACs assigned with the LAA bit on. This probably would cause a problem with being an EtherCAT master as the return MAC would be the same as the sending, since the both have the LAA bit set. The interface would drop its own broadcast packet.
This is a representation from wireshark of the master egress packet:311 3.100221 TexasIns_6f:1b:96 Broadcast ECAT 80 'BRD': Len: 2, Adp 0x0, Ado 0x130, Wc 0 (TexasIns=f0:45:da)
This is a representation from wireshark of the master ingress packet: 312 3.100222 f2:45:da:6f:1b:96 Broadcast ECAT 77 'BRD': Len: 2, Adp 0x1, Ado 0x130, Wc 1
Any idea about where the filtering might be happening? I read in the TRM about some kind of OUI deny feature of the CPSW, but I haven't figured out the driver to see how this might be affecting things. My next step is to try build with the CPSE ALE disabled, and/or using DUAL EMAC. Also to try the pru eth ports with non LAA MAC addresses.