Part Number: AM4379
Team,
Please provide some guidance for my customer's question:
I am currently working with your AM4379 IDK evm board to test implementations of an EtherCAT master. Previously I was working with the v04.02 SDK and it seemed to have some issues with the PRU chips for Ethernet so I was forced to use the Gigabit Ethernet port to test the master we use (EtherLabs IgH master) and it was working fine. I saw that the v04.03 SDK had been released a month or so ago so I’ve been working on porting our code to that version. I did some testing to make sure everything worked and it seemed like a big improvement overall and with this version, the PRU Ethernet ports work correctly. The last thing to test was running the EtherCAT master and try to communicate with our Elmo drives and unfortunately that failed. After debugging a bit I found that we weren’t receiving any packets from the drive and so I set up a Linux machine as a switch to use Wireshark and look at the communication between the master and the slave and I noticed that the drive wasn’t sending data back. I compared the packets sent between the v04.02 SDK and the v04.03 SDK and I noticed a single difference: The packet sizes were different.
If I understand correctly, the minimum packet size has to be 64 bytes. Wireshark doesn’t display the FCS so the minimum size I expect to see in Wireshark is 60 bytes. The packets that work fine show as 60 bytes, while the packets that are failing are 64 bytes, which would mean are 68 after the FCS. Is there a known issue in the new SDK where somewhere along the Ethernet stack, one of the drivers is padding incorrectly? The actual payload on the initial EtherCAT packet is tiny (14 bytes) so it always has to be padded. I assume if the slave is trying to parse the packet and it gets the wrong size based on its payload, it’ll also read the wrong FCS and discard the packet which would explain why there is no reply. I haven’t been able to get past that initial broadcast read packets to see if the problem goes away once the payload is above 46 bytes and there’s no padding needed.
I am also looking into the master stack we are using to see if it’s doing the padding instead.