Part Number: 66AK2H14
Hy TI Support Team,
We are working on a custom board, which has three 66AK2H14 DSP chips. We try to communicate over Hyperlink among the DSPs. We use arago linux distro from MCSDK. I am working on the Hyperlink bring up between DSP0 and DSP1. The DSP0 HP1 port is connected to DSP1 HP0 port. I compiled a Hyperlink test program, which is obtained from the pdk_keystone2_3_01_04_07 package. This program is configured as follows by the hyplnkLLDCfg.h file:
#define hyplnk_EXAMPLE_REFCLK_156p25
#define hyplnk_EXAMPLE_ALLOW_4_LANES
#define hyplnk_EXAMPLE_SERRATE_03p125
#define hyplnk_EXAMPLE_ASYNC_CLOCKS
First the program runs in loopback mode. On the DSP0 chip the program successfully finishes the test. The DSP1 chip exits with lError and rError.
After this test, I ran the program in non-loopback mode. I managed to communicate between the chips: The program outputs are the following:
# DSP0 log:
Version #: 0x02010008; string HYPLNK LLD Revision: 02.01.00.08:Aug 5 2019:10:04:37
About to do system setup (PLL, PSC, and DDR)
Power domain is already enabled. You probably re-ran without device reset (which is OK)
Constructed SERDES configs: PLL=0x00000250; RX=0x0046c495; TX=0x000ccf95
system setup worked
About to set up HyperLink Peripheral
============================Hyperlink Testing Port 1
========================================== begin registers before initialization ===========
Revision register contents:
Raw = 0x4e902101
Scheme = 1
BU = 0
Func = 0x0e90
RTL = 4
cust = 0
revMaj = 1
revMin = 1
Status register contents:
Raw = 0x00002004
swidthin = 0
swidthout = 0
serialHalt = 1
pllUnlock = 0
rPend = 0
iFlow = 0
oFlow = 0
rError = 0
lError = 0
nfEmpty3 = 0
nfEmpty2 = 0
nfEmpty1 = 0
nfEmpty0 = 0
sPend = 1
mPend = 0
link = 0
Link status register contents:
Raw = 0x00000000
txPlsReq = 0
txPlsAck = 0
txPmReq = 0
txRSync = 0
txPlsOK = 0
txPhyEn = 0
txFlowSts = 0
rxPlsReq = 0
rxPlsAck = 0
rxPmReq = 0
rxLSync = 0
rxPhyEn = 0
rxPhyPol = 0
Control register contents:
Raw = 0x00000001
intLocal = 0
statusIntEnable = 0
statusIntVec = 0
int2cfg = 0
serialStop = 0
iLoop = 0
reset = 1
Control register contents:
Raw = 0x00000000
sglErrCor = 0
dblErrDet = 0
============== end registers before initialization ===========
Hyperlink Serdes Common Init Complete
Hyperlink Serdes Lane 0 Init Complete
Hyperlink Serdes Lane 1 Init Complete
Hyperlink Serdes Lane 2 Init Complete
Hyperlink Serdes Lane 3 Init Complete
[ INFO ] Hyperlink Example default SERDES setup done.
[ INFO ] Take out of reset loopback
[ INFO ] Don't care about rev reg any more
[ INFO ] Wait for peripheral to come up <--- the program waits here for the other side to start, At this time I start the test program on DSP1
============== begin registers after initialization ===========
Status register contents:
Raw = 0x04402005
swidthin = 4
swidthout = 4
serialHalt = 1
pllUnlock = 0
rPend = 0
iFlow = 0
oFlow = 0
rError = 0
lError = 0
nfEmpty3 = 0
nfEmpty2 = 0
nfEmpty1 = 0
nfEmpty0 = 0
sPend = 1
mPend = 0
link = 1
Link status register contents:
Raw = 0xccf00cf0
txPlsReq = 3
txPlsAck = 0
txPmReq = 3
txRSync = 0
txPlsOK = 0
txPhyEn = 15
txFlowSts = 0
rxPlsReq = 0
rxPlsAck = 0
rxPmReq = 3
rxLSync = 0
rxPhyEn = 15
rxPhyPol = 0
Control register contents:
Raw = 0x00006004
intLocal = 1
statusIntEnable = 1
statusIntVec = 0
int2cfg = 0
serialStop = 1
iLoop = 0
reset = 0
============== end registers after initialization ===========
Waiting 5 seconds to check link stability
Link seems stabl<-- The DSP0 freezes and must restart
## DSP1 log:
Version #: 0x02010008; string HYPLNK LLD Revision: 02.01.00.08:Sep 1 2019:02:30:48
About to do system setup (PLL, PSC, and DDR)
Power domain is already enabled. You probably re-ran without device reset (which is OK)
Constructed SERDES configs: PLL=0x00000250; RX=0x0046c495; TX=0x000ccf95
system setup worked
About to set up HyperLink Peripheral
============================Hyperlink Testing Port 0
========================================== begin registers before initialization ===========
Revision register contents:
Raw = 0x4e902101
Scheme = 1
BU = 0
Func = 0x0e90
RTL = 4
cust = 0
revMaj = 1
revMin = 1
Status register contents:
Raw = 0x04402197
swidthin = 4
swidthout = 4
serialHalt = 1
pllUnlock = 0
rPend = 0
iFlow = 0
oFlow = 0
rError = 1
lError = 1
nfEmpty3 = 0
nfEmpty2 = 0
nfEmpty1 = 1
nfEmpty0 = 0
sPend = 1
mPend = 1
link = 1
Link status register contents:
Raw = 0xfdf0bdf0
txPlsReq = 3
txPlsAck = 3
txPmReq = 3
txRSync = 0
txPlsOK = 1
txPhyEn = 15
txFlowSts = 0
rxPlsReq = 2
rxPlsAck = 3
rxPmReq = 3
rxLSync = 0
rxPhyEn = 15
rxPhyPol = 0
Control register contents:
Raw = 0x00006006
intLocal = 1
statusIntEnable = 1
statusIntVec = 0
int2cfg = 0
serialStop = 1
iLoop = 1
reset = 0
Control register contents:
Raw = 0xafd10001
sglErrCor = 45009
dblErrDet = 1
============== end registers before initialization ===========
Hyperlink Serdes Common Init Complete
Hyperlink Serdes Lane 0 Init Complete
Hyperlink Serdes Lane 1 Init Complete
Hyperlink Serdes Lane 2 Init Complete
Hyperlink Serdes Lane 3 Init Complete
[ INFO ] Hyperlink Example default SERDES setup done.
[ INFO ] Take out of reset loopback
[ INFO ] Don't care about rev reg any more
[ INFO ] Wait for peripheral to come up
============== begin registers after initialization ===========
Status register contents:
Raw = 0x04402017
swidthin = 4
swidthout = 4
serialHalt = 1
pllUnlock = 0
rPend = 0
iFlow = 0
oFlow = 0
rError = 0
lError = 0
nfEmpty3 = 0
nfEmpty2 = 0
nfEmpty1 = 1
nfEmpty0 = 0
sPend = 1
mPend = 1
link = 1
Link status register contents:
Raw = 0xccf00cf0
txPlsReq = 3
txPlsAck = 0
txPmReq = 3
txRSync = 0
txPlsOK = 0
txPhyEn = 15
txFlowSts = 0
rxPlsReq = 0
rxPlsAck = 0
rxPmReq = 3
rxLSync = 0
rxPhyEn = 15
rxPhyPol = 0
Control register contents:
Raw = 0x00006004
intLocal = 1
statusIntEnable = 1
statusIntVec = 0
int2cfg = 0
serialStop = 1
iLoop = 0
reset = 0
============== end registers after initialization ===========
Waiting 5 seconds to check link stability
Link seems stabl <-- The DSP1 freezes and must restart
Do you have any idea, what can be the problem here?
Do you think, I need a successful loopback test on DSP1 before testing it with the other chip?
Do you have any other tools to test the Hyperlink on custom devices?
Do I ran these test scripts correctly?
Do you have any idea whats next? I got stuck.
Thanks
David