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.

AM4377: AM4377 Linux-RT EtherCAT Slave

Part Number: AM4377


Hello

We have a AM4377 EtherCAT-Slave Application in use, with the TI-RTOS as running system. With the end of the TI-RTOS support, we are considering switching to Linux as our main running system still using the PRU to handle the EtherCAT bus.

Some older blog posts suggest that this is not standardly supported by the processors SDK and difficult to get running (manually incorporate the slave source stack). Is this still an issue or is the Linux system with the AM4377 Processor nowadays the go-to way for an EtherCAT-Slave application?

Kind regards

Thomas

  • Hello Thomas,

    The Linux operating system is not able to respond quickly enough implement slave-side EtherCAT. So AM4377 is not able to implement EtherCAT-slave with the latest Linux SDKs.

    TI-RTOS SDK 6.3 is the last SDK version on AM4377 where we provide support for slave-side EtherCAT.

    If your design works fine with your existing TI-RTOS code, you can keep producing that design for as long as you want. When we say "No TI design support for TI-RTOS on AM4377", we just mean "we can no longer answer questions about TI-RTOS on AM4377". For more information, refer to  Notice regarding Processor SDK TI-RTOS for AM335x, AM437x, OMAP-L13x, C674x, K2G, AMIC110, AMIC120 devices 

    If you need TI design support for your project, I would suggest taking a look at a device like AM243x, AM261x/AM263Px/AM263x, or AM64x where we can answer RTOS software questions for you.

    Regards,

    Nick

  • Hello Nick

    Thank you for your reply. We sadly have some issues with the stability of our current EtherCAT slave application under TI-RTOS and will have to invest quite some time. That’s why I was checking other possibilities, which may also enable a smooth transition to a possible new design including a device like the AM64x. But this answers my question so far.

    Regards

    Thomas

  • Hello Thomas,

    I thought of one other thing. The team and I cannot answer questions about this software, but it might work better than your current EtherCAT slave application if yall have the background to do the testing on your own:

    The last version of AM437x TI-RTOS SDK was SDK 6.3 in April 2020:
    https://www.ti.com/tool/download/PROCESSOR-SDK-RTOS-AM437X

    HOWEVER, the PRU-ICSS-ETHERCAT-SLAVE software was last updated a year later, in 2021:
    https://www.ti.com/tool/download/PRU-ICSS-ETHERCAT-SLAVE

    They did it to make some bugfixes. If you are still using the 2020 version of the code, it might be worthwhile trying out the last version of the code from 2021 to see if the instability is resolved. See resolved issues & known issues here. Most of the issues reported or fixed for AM335x probably also apply on AM437x: https://software-dl.ti.com/processor-industrial-sw/esd/docs/indsw/EtherCAT_Slave/01_00_10/PRU_ICSS_EtherCAT_Release_Notes.html 

    Regards,

    Nick

  • We sadly have some issues with the stability of our current EtherCAT slave application under TI-RTOS

    Can you share more details on this

  • Thomas, 

    We are also planning for a refresh release for AM437x (and other legacy platforms) focuses bug fixes on PRU firmware.

    Please post the issues in detail.

    BR
    JC

  • Gladly, I can describe our observings:

    We have an EtherCAT slave application running on the AM4377 with TI-RTOS. We use the EtherCAT slave together with our own EtherCAT master (based on the Acontis EtherCAT master stack). On the EtherCAT master we use TTS, although I’m not sure whether this has any effect on the slave. We are experiencing several issues with the EtherCAT slave:

     

    Occasionally, an SDO request takes up to 6 seconds before the slave responds (only this slave is affected; all other slaves, which are not based on the AM4377, do not show this behavior).

     

    Sometimes it is not possible to switch from PreOp to SafeOp. I have observed that the Sync0 and, consequently, the PDI thread are not being woken up via the semaphore, even though the semaphore should be triggered by the PRU.

     

    When we use TwinCAT, the slave only works reliably in FreeRun mode. In this mode, switching between PreOp and SafeOp, and between SafeOp and Op, works without issues. However, when we use DC-synchronous mode, the EtherCAT slave also occasionally fails to switch to SafeOp. The SSC stack does not report any error. After several seconds, TwinCAT reports a switch timeout. I have added task hooks and can see that in the error case, the Sync0 and the PDI thread are not being woken up.

     

    When I run the EtherCAT Conformance Test Tool, all tests run fine up to the point where the slave should switch to SafeOp. All tests that involve a transition to SafeOp fail. Again, I see that the SYNC0 or PDI threads are not being woken up.

    I'm looking forward to receiving your assessment.

  • Hi Thomas, 

    Can you try running the same tests on AM437x EVM? 

    Please share us the network capture for analysis.

    BR
    JC