Greetings,
I want to connect two EVMs C6670 (Advantech) using SRIO with each loaded by SrioChipToChipProducer and SrioChipToChipConsumer examples respectively.
1. Both EVM are connected on single host (dual debug mode on CCS):
http://processors.wiki.ti.com/index.php/Multi-Emulator_Debug_with_CCSv5#Blackhawk_XDS560v2_Mezzanine_Card
2. For physical connector, I'm using custom AMC-to-SATA PCB connector which connects both EVM's port 0.
http://img593.imageshack.us/img593/6473/e3uo.jpg
3. Finished SrioLoopbackDioISR example without problem (both EVMs).
4. Load producer example to one EVM (#0) and consumer on the other one (#1).
5. Run the consumer side first (core #1 and core #0). Console is showing:
==CONSUMER SIDE==
/* core#1 */
[C66xx_1] Local Core ("CORE1") starting
Local Core ID: 1
Global Core ID: 3
Core 3: Waiting for SRIO to be initialized.
/* core#0 */
[C66xx_0] Local Core ("CORE0") starting
Local Core ID: 0
Global Core ID: 2
-----------------------Initializing---------------------------
Core 2 : L1D cache size 4. L2 cache size 0.
Core 2 : Memory region 0 inserted
Port 0 is okay
Port 1 did not initialize
Port 2 did not initialize
Port 3 did not initialize
Core 2: SRIO Driver has been initialized
[C66xx_1] Core 3: SRIO can now be used.
localQueueName=CORE3
Core 3: tsk0 starting
[C66xx_0] localQueueName=CORE2
Core 2: tsk0 starting
Global Core 2: Receiving packets from an off-chip core.
[C66xx_1] Global Core 3: Receiving packets from an off-chip core.
6. Run the producer side. Console is showing:
==PRODUCER SIDE==
/* core#1 */
Local Core ("CORE1") starting
Local Core ID: 1
Global Core ID: 1
Core 1: Waiting for SRIO to be initialized.
/* core#0 */
[C66xx_0] Local Core ("CORE0") starting
Local Core ID: 0
Global Core ID: 0
-----------------------Initializing---------------------------
Core 0 : L1D cache size 4. L2 cache size 0.
Core 0 : Memory region 0 inserted
Port 0 is okay
Port 1 did not initialize
Port 2 did not initialize
Port 3 did not initialize
Core 0: SRIO Driver has been initialized
[C66xx_1] Core 1: SRIO can now be used.
localQueueName=CORE1
remoteQueueName=CORE3
Core 1: tsk0 starting
[C66xx_0] localQueueName=CORE0
remoteQueueName=CORE2
Core 0: tsk0 starting
Global Core 0: Sending packets to an off-chip core.
Global Core 0 attempting to open remote board Queue CORE2
[C66xx_1] Global Core 1: Sending packets to an off-chip core.
Global Core 1 attempting to open remote board Queue CORE3
7. Then, it appears. Error same with previous post by chunlei.
[C66xx_0] ti.sdo.ipc.MessageQ: line 441: assertion failure: A_invalidQueueId: Invalid queueId is used
xdc.runtime.Error.raise: terminating execution
Now, the question is
1. Obviously, how to solve this problem? Do I need to change PLL or lower layer config? We can see that the Port 0 is okay both for EVM #0 and #1, that is enough isn't for this example?
2. To get proper idea about EVM-to-EVM using SRIO, can I modify SRIOLoopbackDioIsr so that we can use it on two EVMs, which one EVM disables ISR (only Tx) and one EVM disables DIO send (only enable ISR for Rx)?
CSL_SRIO_SetLoopbackMode(hSrio, 0) -to-> CSL_SRIO_SetNormalMode(hSrio, 0); CSL_SRIO_SetLoopbackMode(hSrio, 1) -to-> CSL_SRIO_SetNormalMode(hSrio, 1); CSL_SRIO_SetLoopbackMode(hSrio, 2) -to-> CSL_SRIO_SetNormalMode(hSrio, 2); CSL_SRIO_SetLoopbackMode(hSrio, 3) -to-> CSL_SRIO_SetNormalMode(hSrio, 3);
And how about the packet routing on SRIO Switch? Do I have to fetch destination EVM ID to SRIO switch (on Tx case)?
Thank you and regards,
Janu
nb:
I'm using pdk_C6670_1_1_2_6
===========
update
===========
It seems like before the error pops out, stuck on this loop inside sendPacketsOffChip(),
1
2
3
4
5
|
do { status = MessageQ_open(remoteQueueName, &remoteQId); } while (status < 0); |
Return status always -5, the val of &remoteQId always 0