This ethernet TSN example illustrates the usage of gPTP IEEE 802.1AS stack with ICSSG peripheral, in gPTP End-Point time_receiver mode (i.e. slave mode). However, the application used here supports all the below modes:
In this example, connected Host PC is configured to force gPTP grand master role, so that the DUT becomes time_receiver (i.e. gPTP slave) mode. Yang based configuration is also supported. Currently File System is not supported, will be added in future releases.
In this example, We use dedicated Rx and Tx DMA channels for gPTP traffic. Please note that only ICSSG switch mode is supported with gPTP.
Along with PTP traffic, application also handles non-PTP traffic in a separate RTOS task and DMA Channel. Received non-PTP packets are sent back by the application, by interchanging source and destination MAC address.
EVM and PC has to connected directly as shown below using CAT6 or CAT5 cable. If there is ethernet switch placed in between, make sure the switch is gPTP capable.
PORT1 instead of PORT0 on EVM can be used as well. Please note that EVM is in switch mode, both need to connected to two end-points to execute the example.
==========================
gPTP App
==========================
Enabling clocks!
start to open driver.
Mdio_open:294
sitara-icssg: Open port 1
EnetPhy_bindDriver:1828
sitara-icssg: Open port 2
EnetPhy_bindDriver:1828
PHY 3 is alive
PHY 15 is alive
sitara-icssg: Create RX task for regular traffic
initQs() txFreePktInfoQ initialized with 8 pkts
MAC port addr: f4:84:4c:fb:c0:42
unibase-1.1.4
INF:cbase:tilld0: has mac: F4:84:4C:FB:C0:42
INF:cbase:tilld1: has mac: 00:00:00:00:00:00
Start: uniconf_task
sitara-icssg: default RX flow started
EnetApp_uniconfTask: dbname: NULL
INF:uconf:simpledb_open:no data is imported
INF:uconf:uc_hwal_open:
INF:cbase:cb_rawsock_open:combase-1.1.3
INF:cbase:cb_rawsock_open:dmaTxChId=-1 numRxChannels=0 dmaRxChId=-1 nTxPkts=0 nRxPkts=0 pktSize=0
INF:uconf:create_semname_with_dbname:null dbname is specified.
INF:cbase:cb_lld_task_create:alloc stack size=16384
INF:uconf:000000-211012:uniconf_main:uniconf started
EnetApp_gptpYangConfig:domain=0
INF:uconf:get_exmodid_in_db:first xl4gptp:exmodid=0
INF:uconf:create_semname_with_dbname:null dbname is specified.
EnetApp_gptpNonYangConfig:XL4_EXTMOD_XL4GPTP_SINGLE_CLOCK_MODE=1
EnetApp_gptpNonYangConfig:XL4_EXTMOD_XL4GPTP_USE_HW_PHASE_ADJUSTMENT=1
EnetApp_gptpNonYangConfig:XL4_EXTMOD_XL4GPTP_CLOCK_COMPUTE_INTERVAL_MSEC=100
EnetApp_gptpNonYangConfig:XL4_EXTMOD_XL4GPTP_FREQ_OFFSET_IIR_ALPHA_START_VALUE=1
EnetApp_gptpNonYangConfig:XL4_EXTMOD_XL4GPTP_FREQ_OFFSET_IIR_ALPHA_STABLE_VALUE=4
EnetApp_gptpNonYangConfig:XL4_EXTMOD_XL4GPTP_PHASE_OFFSET_IIR_ALPHA_START_VALUE=1
EnetApp_gptpNonYangConfig:XL4_EXTMOD_XL4GPTP_PHASE_OFFSET_IIR_ALPHA_STABLE_VALUE=4
EnetApp_gptpNonYangConfig:XL4_EXTMOD_XL4GPTP_MAX_DOMAIN_NUMBER=1
Start: gptp2d_task
EnetApp_initTsn:TSN app start done!
INF:gptp:gptpman_run:max_domains=1, max_ports=2
INF:cbase:cb_rawsock_open:combase-1.1.3
INF:cbase:cb_rawsock_open:dmaTxChId=1 numRxChannels=2 dmaRxChId=1 nTxPkts=8 nRxPkts=8 pktSize=1536
INF:cbase:rxChId 1 has owner dmaRxShared 0
INF:cbase:rxChId 3 has owner dmaRxShared 0
For ICSSG, EthType and VlanId are not used to match the packet only dest addr is used
For ICSSG, EthType and VlanId are not used to match the packet only dest addr is used
INF:cbase:cbl_query_response:tilld0 link DOWN !!!!
INF:cbase:cbl_query_response:tilld1 link DOWN !!!!
INF:cbase:tilld1: alloc mac: 70:FF:76:1E:3A:07
INF:gptp:dev:tilld0 open success
INF:gptp:dev:tilld1 open success
INF:gptp:gptpnet_init:Open lldtsync OK!
INF:gptp:IEEE1588-2019 performance monitoring disabled.
INF:uconf:ydbi_get_item_ifk3vk0:no data
INF:uconf:ydbi_get_item_ifk3vk0:no data
INF:gptp:onenet_activate:tilld0 status=0, duplex=1, speed=0Mbps
INF:uconf:ydbi_get_item_ifk3vk0:no data
INF:uconf:ydbi_get_item_ifk3vk0:no data
INF:gptp:onenet_activate:tilld1 status=0, duplex=1, speed=0Mbps
INF:ubase:GPTP_MEDIUM_ALLOC: fragsize=16 fragused/fragnum=830/921 (90%)
INF:ubase:GPTP_SMALL_ALLOC: fragsize=4 fragused/fragnum=19/71 (26%)
INF:ubase:SM_DATA_INST: fragsize=8 fragused/fragnum=2002/2002 (100%)
INF:gptp:gptpman_run:GPTPNET_INTERVAL_TIMEOUT_NSEC=125000000
INF:gptp:000000-500585:domainIndex=0, GM changed old=00:00:00:00:00:00:00:00, new=F4:84:4C:FF:FE:FB:C0:42
INF:gptp:gptpclock_set_gmsync:gptpInstanceIndex=0, domainIndex=0, gmstate=2
INF:gptp:set_phase_offsetGM:domainIndex=0, New adjustment(New GM?)
Icssg_handleLinkUp:2594
INF:cbase:cbl_query_response:tilld0: link UP, speed=1000, duplex=1 !!!!
INF:gptp:index=1 speed=1000, duplex=full, ptpdev=tilld0
Icssg_handleLinkUp:2594
INF:cbase:cbl_query_response:tilld1: link UP, speed=1000, duplex=1 !!!!
INF:gptp:index=2 speed=1000, duplex=full, ptpdev=tilld1
WRN:gptp:000003-751685:waiting_for_pdelay_interval_timer_proc:portIndex=2, sourcePortIdentity=68:05:CA:FF:FE:C8:7A:C2, thisClock=F4:84:4C:FF:FE:FB:C0:42, neighborPropDelay=225
INF:gptp:waiting_for_pdelay_interval_timer_proc:portIndex=2, not asCapable
ERR:gptp:provide_rxframe: RX not ETH_P_1588 packet 0x88CC
INF:gptp:md_pdelay_resp_sm_recv_req:port=2, set receivedNonCMLDSPdelayReq=1
INF:gptp:waiting_for_pdelay_interval_timer_proc:set asCapableAcrossDomains, portIndex=2
INF:gptp:set asCapable for domainIndex=0, portIndex=2
INF:gptp:000004-759183:gptpgcfg_set_asCapable:domainInde=0, portIndex=2, ascapable=1
INF:gptp:000004-766602:gm_stable:gm_unstable_proc:domainIndex=0
INF:gptp:gptpclock_set_gmsync:gptpInstanceIndex=0, domainIndex=0, gmstate=1
INF:gptp:000004-778789:gm_stable:gm_unstable_proc:domainIndex=0
INF:gptp:000004-874130:setSyncTwoStep_txSync:domainIndex=0, portIndex=2, sync gap=4875msec
INF:gptp:000004-879363:setFollowUp_txFollowUp:domainIndex=0, portIndex=2, fup gap=4882msec
5.301s : CPU load = 2.93 %
INF:gptp:000005-874161:gm_stable:gm_stable_proc:domainIndex=0
INF:gptp:gptpclock_set_gmsync:gptpInstanceIndex=0, domainIndex=0, gmstate=2
INF:gptp:000007-214279:domainIndex=0, GM changed old=F4:84:4C:FF:FE:FB:C0:42, new=68:05:CA:FF:FE:C8:7A:C2
INF:gptp:gptpclock_set_gmsync:gptpInstanceIndex=0, domainIndex=0, gmstate=0
INF:gptp:000007-227371:gm_stable:gm_unstable_proc:domainIndex=0
INF:gptp:gptpclock_set_gmsync:gptpInstanceIndex=0, domainIndex=0, gmstate=1
INF:gptp:set_phase_offsetGM:domainIndex=0, New adjustment(New GM?)
INF:gptp:set_phase_offsetGM:domainIndex=0, offset adjustment, diff=1240680181
INF:gptp:set_phase_offsetGM:domainIndex=0, offset adjustment by Freq., diff=12842
INF:gptp:set_phase_offsetGM:domainIndex=0, offset adjustment by Freq., diff=12968
INF:gptp:clock_master_sync_receive:computeGmRateRatio:domainIndex=0 unstable rate=1007ppb (timeleap_future)
IFV:gptp:domainIndex=0, clock_master_sync_receive:the master clock rate to 13975ppb, GMdiff=12968nsec
INF:gptp:set_phase_offsetGM:domainIndex=0, offset adjustment by Freq., diff=11545
IFV:gptp:domainIndex=0, clock_master_sync_receive:the master clock rate to 14144ppb, GMdiff=11545nsec
INF:gptp:set_phase_offsetGM:domainIndex=0, stable
IFV:gptp:domainIndex=0, clock_master_sync_receive:the master clock rate to 11036ppb, GMdiff=9916nsec
IFV:gptp:domainIndex=0, clock_master_sync_receive:the master clock rate to 3154ppb, GMdiff=8659nsec
IFV:gptp:domainIndex=0, clock_master_sync_receive:the master clock rate to 3075ppb, GMdiff=8387nsec
IFV:gptp:domainIndex=0, clock_master_sync_receive:the master clock rate to 3086ppb, GMdiff=8134nsec
IFV:gptp:domainIndex=0, clock_master_sync_receive:the master clock rate to 2969ppb, GMdiff=7873nsec
........
........
IFV:gptp:domainIndex=0, clock_master_sync_receive:the master clock rate to 1123ppb, GMdiff=34nsec
IFV:gptp:domainIndex=0, clock_master_sync_receive:the master clock rate to 1112ppb, GMdiff=25nsec
IFV:gptp:domainIndex=0, clock_master_sync_receive:the master clock rate to 1061ppb, GMdiff=-1nsec
IFV:gptp:domainIndex=0, clock_master_sync_receive:the master clock rate to 1049ppb, GMdiff=-7nsec
IFV:gptp:domainIndex=0, clock_master_sync_receive:the master clock rate to 1037ppb, GMdiff=-14nsec
IFV:gptp:domainIndex=0, clock_master_sync_receive:the master clock rate to 1020ppb, GMdiff=-25nsec
IFV:gptp:domainIndex=0, clock_master_sync_receive:the master clock rate to 1009ppb, GMdiff=-25nsec
IFV:gptp:domainIndex=0, clock_master_sync_receive:the master clock rate to 1025ppb, GMdiff=-15nsec