Part Number: AM2434
Hi TI Experts,
We are experiencing a 3-buffer swapping sequence issue on the AM243x EtherCAT slave when running in DC Mode under a noisy environment.
Background: We have upgraded our SDK to ind_comms_sdk_am243x_09_02_00_24, which includes the fix for PINDSW-8246 (referenced from this E2E thread). However, we observed another buffer swap anomaly when a packet is dropped due to noise.
Our Test Configuration:
| Parameter | Configuration / Value |
| Operation Mode | DC Mode |
| Sync0 Interval | 2 ms |
| SM2 Packet Frequency | 2 SM2 packets between Sync0 signals (500 us interval) |
| Payload Data | A WatchDog (WD) counter (0~15 cycle) incrementing at each interpolation time. |
Observation & Test Results:
We monitored the received SM2 packets and their payload (WD values) across two different environments.
| Sync0 Cycle | Normal Environment (No Noise) | Noisy Environment (Packet Loss Occurs) |
| Cycle N | 2 packets (WD: 1, 1) |
2 packets (WD: 1, 1) |
| Cycle N+1 | 2 packets (WD: 2, 2) |
2 packets (WD: 2, 2) |
| Cycle N+2 | 2 packets (WD: 3, 3) |
2 packets (WD: 3, 3) |
| Cycle N+3 | 2 packets (WD: 4, 4) |
1 packet (WD: 4, X) -> Packet Drop |
| Cycle N+4 | 2 packets (WD: 5, 5) |
2 packets (WD: 3, 5) -> Stale Data! |
| Cycle N+5 | 2 packets (WD: 6, 6) |
2 packets (WD: 6, 6) |
Technical Finding (Root Cause Analysis): Under the noisy environment, when an SM2 packet is dropped (Cycle N+3), the first SM2 packet in the subsequent cycle (Cycle N+4) reads stale data (WD=3 instead of WD=5), while the second packet reads correctly (WD=5).
We tracked the 3-buffer index returned by bsp_get_process_data_address() (mapped to 0~2):
-
Normal Index Sequence:
2 -> 1 -> 0 -> 2 -> 1 -> 0 -
Error Index Sequence (when WD=3 reappears):
2 -> 1 -> 0 -> 2 -> 0 -> 1

Questions:
-
Is this buffer index swapping failure (2->0->1) a known issue when an SM2 packet is missed in DC Mode?
-
Are there any workaround configurations or patch updates in the EtherCAT HAL/driver to force a correct buffer pointer reset/resync upon packet loss, thereby preventing the application from reading stale data?
Thanks for your support.