5.12. Texas Instruments ICSS - emllICSS

The parameters to the ICSS Link Layer are setup-specific. The function CreateLinkParmsFromCmdLineICSS() in EcSelectLinkLayer.cpp demonstrates how to initialize the Link Layer instance.

Public Members

Common link parameters. Signature must be set to EC_LINK_PARMS_SIGNATURE_ICSS

TI System on Chip board type

Initialize whole PRUSS subsystem, not only port. This flag is always required when link layer is used on single ICSS port. This flag is also required, when link layer is used in “Redundancy mode” und two ICSS ports are used. In this case, first port should be master, and second port should be slave

EC_TRUE: No MAC address registers access

Time Triggered Send parameters

PHY address

PHY connection type

No hardware reset of the PHY

Use the additional 3 queues with lower priority to send more frames per cycle

For am57xx use legacy ICSS firmware from pdk_am57xx_1_0_6, instead of pdk_am57xx_1_0_17 with patch for Rx error issue, see https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1022410/am5746-rx_error_offset-conditions/3788558#3788558

Values:

TI AM572x

TI AM571x

TI AM3359

TI AM572x on Emerson board

TI AM574x

5.12.1. TTS Feature

PRU ICSS Link Layer can optionally use Time-Triggered Send feature http://processors.wiki.ti.com/index.php/ICSS_EMAC_LLD_developers_guide#Time_Triggered_Send

To test it, you need to build a demo application with INCLUDE_TTS macro. Additionally, you need to set bTts flag and configure other tts parameters in EC_T_LINK_PARMS_ICSS structure. Please note, we have already TTS Demo applications for some of the operating systems (for ex. Linux and TI RTOS).

dwTtsSendTimeUsec time is determined experimentally. It depends to how long your own real project prepares cyclic and acyclic frames to be sent in the current cycle.

Main purpose of the TTS feature is to reduce jitter to 40 ns (nanoseconds). To measure jitter accurately you need to have special software and hardware. For example:

  • Old version of Wire Shark, ex. 1.8.4

  • Dissect plugin for Wire Shark (this plugin is available only for this version of WireShark)

  • ET2000 device to insert accurate timestamps with nanoseconds resolution.

Details can be found here: https://infosys.beckhoff.com/index.php?content=../content/1031/et2000/1309654283.html&id=

5.12.2. TI AM335x ICEV2

After the two 100 MBit ports have been deactivated, there are no longer any Ethernet ports that can be used for TCP/IP. The board cannot work in mixed mode, i.e. there is no CPSW+ICSS support. It is also necessary to configure the board to start in ICSS rather than CPSW mode. Set both jumpers on the board to ICSS mode.

5.12.3. TI AM57xx IDK

After the four 100 MBit ports of the ICSS have been deactivated, the other two 1 GBit ports (CPSW) remain active and can be used for other purposes (e.g. TCP / IP).

5.12.4. AM5728 IDK and AM5718 IDK boards and Technical Limitations

The main difference between these two boards is number of available ICSS ports. AM5728 IDK supports only two 100 Mbit ports: port 3 and 4. It is a technical limitation of this board. On AM5718 IDK all four 100 Mbit ports are available for EtherCAT purposes.

Another limitation: PRUICSS link layer can use maximum 2 ports together (in redundancy mode) and these two ports should correspond to the same PRUSS. I.e. Port 3 and 4 OR Port 1 and 2, but not Port 1 and 4, Port 1 and 3 and etc. This technical limitation exists, because PRU firmware for PRU0 and PRU1 uses the same memory areas of OCMC Memory. In future, this limitation can be removed.