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.
-
struct EC_T_LINK_PARMS_ICSS
Public Members
-
EC_T_LINK_PARMS linkParms
Common link parameters. Signature must be set to EC_LINK_PARMS_SIGNATURE_ICSS
-
EC_T_LINK_ICSS_BOARD eBoardType
TI System on Chip board type
-
EC_T_BOOL bMaster
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_T_LINK_TTS TtsParms
Time Triggered Send parameters
-
EC_T_PHYINTERFACE ePhyInterface
PHY connection type
-
EC_T_BOOL bUseAllSendQueues
Use the additional 3 queues with lower priority to send more frames per cycle
-
EC_T_BOOL bLegacyFirmware
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
-
EC_T_LINK_PARMS linkParms
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.