This software is designed for the TI SoCs with PRU-ICSS IP to enable customers add EtherCAT SubDevice protocol support to their system. It implements EtherCAT SubDevice Controller(ESC) Layer 2 functionality with two MII ports (one IN and one OUT port per PRU-ICSS) in accordance with ETG.1000.4 Data Link Layer protocol specification. This provides EtherCAT ASIC like functionality integrated into TI SoCs.
EtherCAT firmware for PRU-ICSS is a black box product maintained by TI. EtherCAT SubDevice FWHAL(Firmware and Hardware Abstraction Layer) allows loading and running the EtherCAT firmware and acts as an interface with ESC firmware. FWHAL implements the key interface between EtherCAT SubDevice Controller Emulation firmware and EtherCAT stack.
SysConfig can be used to configure things mentioned below:
Record ID | Details | Workaround |
---|---|---|
PINDSW-47 | Multiple FMMU access in a single datagram to a SubDevice for process data using LRD/LWR commands | Use LRW instead of LRD/LWR |
PINDSW-72 | PDI/PD watchdog counter incremented by 1 whenever PDI/PD watchdog is disabled | None |
PINDSW-74 | LRD access on unused registers increment WKC - no register protection while using LRD | None |
PINDSW-141 | LRW access to non-interleaved input and output process data of multiple SubDevices does not work. SOEM accesses S in LRW mode this way | Use LRD/LWR for process data access or use more optimal interleaved access for process data access from MainDevice (TwinCAT way) |
PINDSW-2204 | Frames with no SFD not counted as errors if received on reverse path | None |
PINDSW-2360 | System time of next Sync0 pulse register (0x990:0x993) is not instantaneous, resulting in read of incorrect value if read immediately after sync pulse | None |
PINDSW-5135 | Read permissions and byte level write permissions for RW type commands are not checked | None |
PINDSW-5145 | RX_ER counter does not count errors outside frame in MII RX_CLK units precisely | Added PHY RX Error Counter Register (0x0E28) for improving RX Error Counter accuracy. Configuring this register will track RX_ERs within a frame precisely using PHY registers. Refer Register Exceptions for more details. |
PINDSW-5414 | Link Lost Counter is incorrectly incremented once for ports with polarity of RXLINK input as “Active Low” during initialization | Use Active High Polarity for LED_LINK/SPEED connected to MII0/MII1 Receive Link (RXLINK) pin of PRU-ICSS |
For more details, please see the EtherCAT SubDevice Errata document.
Folder/Files | Description |
---|---|
${SDK_INSTALL_PATH}/examples/industrial_comms | |
ethercat_slave_demo/simple | EtherCAT SubDevice Simple Example (based on pre-integrated stack) |
ethercat_slave_demo/cia402 | EtherCAT SubDevice CiA402 Example (based on pre-integrated stack) |
ethercat_slave_demo/ctt | EtherCAT SubDevice CTT Example (based on pre-integrated stack) |
ethercat_slave_beckhoff_ssc_demo | EtherCAT SubDevice Example based on Beckhoff SSC |
${SDK_INSTALL_PATH}/source/industrial_comms/ethercat_slave | |
icss_fwhal/firmware/g_v1.3 | Firmware for the PRU cores in PRU-ICSS. Firmware Version : 6.5.12 |
icss_fwhal/lib/ | FWHAL library for EtherCAT SubDevice |
icss_fwhal/tiescbsp.h | FWHAL interface file |
stack/*.lib | Evaluation libraries for EtherCAT SubDevice Stack |
stack/esi | ESI XML files for EtherCAT SubDevice Simple Example and EtherCAT SubDevice CiA402 Example |
stack/inc | Stack header files for evaluation stack |
beckhoff_stack/esi | ESI XML file for Beckhoff SubDevice Stack Code(SSC) based example |
beckhoff_stack/patch | Patch file for Beckhoff SubDevice Stack Code(SSC) sources |
beckhoff_stack/stack_hal | Stack adaptation APIs for Beckhoff SubDevice Stack Code(SSC) |
beckhoff_stack/stack_sources | Folder where Beckhoff SubDevice Stack Code(SSC) sources should be copied. Stack sources are not packaged in the SDK |
Please see APIs for Ethercat Slave FWHAL for API documentation.
It is recommended to use these FWHAL APIs in the stack adaptation files. For example, see ${SDK_INSTALL_PATH}/source/industrial_comms/ethercat_slave/beckhoff_stack/stack_hal
, which contains the stack adaptation APIs for Beckhoff SubDevice Stack Code(SSC).
EtherCAT SubDevice Controller firmware generates the following interrupts.
8 Host Interrupts (Host Interrupts 2 through 9) are exported from the PRU_ICSSG internal INTC for signaling the device level interrupt controllers. PRU_EVTOUT0 to PRU_EVTOUT7 correspond to these eight interrupts in the following table. Please check PRUICSS Interrupt Controller section for more details.
Name | Host Interrupt | Description |
---|---|---|
DC SYNC0 OUT | PRU_EVTOUT1 | Used in DC mode for syncing the application |
DC SYNC1 OUT | PRU_EVTOUT2 | Used in DC mode for syncing the application |
PDI Interrupt | PRU_EVTOUT3 | AL event/PDI interrupt to host stack |
ESC Command Acknowledgement | PRU_EVTOUT4 | ESC firmware command completion acknowledgement to Host |
TI EtherCAT SubDevice Controller Register List contains descriptions of the registers in TI's EtherCAT SubDevice Controller implementation.
TI EtherCAT SubDevice Controller Exceptions lists the exceptions TI's EtherCAT SubDevice Controller implementation when compared with ET1100 ASIC. Please note that TI ESC is a 2 port EtherCAT SubDevice and it does not support E-bus interface and all the corresponding register fields are not implemented.
Please refer to below documents to understand more about EtherCAT SubDevice on TI platforms and EtherCAT SubDevice protocol specifications.
Document | Description |
---|---|
EtherCAT on Sitara Processors | Application note by TI on the EtherCAT SubDevice implementation on TI's Sitara Processors. |
PRU-ICSS EtherCAT SubDevice Troubleshooting Guide | This troubleshooting guide is intended to provide guidance on how to set up and debug the EtherCAT SubDevice implemented on TI's Sitara processors. |
EtherCAT ESC Datasheet Section 1 - Technology | Section 1 of Beckhoff's EtherCAT SubDevice Controller (ESC) documentation which describes basic EtherCAT technology. |
EtherCAT ESC Datasheet Section 2 - Register Description | Section 2 of Beckhoff's EtherCAT SubDevice Controller (ESC) documentation which contains ESC register descriptions. |
Application Note ET9300 (EtherCAT SubDevice Stack Code) | This contains details on how to start EtherCAT SubDevice development with SubDevice Stack Code. |
EtherCAT SubDevice Implementation Guide from EtherCAT Technology Group | This contains information on how to develop an EtherCAT SubDevice implementation. |
EtherCAT SubDevice Design Quick Guide from Beckhoff | This contains information on modifying PDO when using Beckhoff SSC Tool for code generation. |