The parameters to the ICSS Link Layer are setup-specific. The function “CreateLinkParmsFromCmdLineICSS” in EcSelectLinkLayer.cpp demonstrates how to initialize the Link Layer instance.
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
Time Triggered Send parameters
PHY connection type
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
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=
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.
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).
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.