Part Number: TMS320C6678
Hi team,
Here's an issue from the customer may need your help:
The project is based on sys/BIOS and contains the srio and networking capabilities. The network and the srio are separate tasks where the network task has a higher priority than the srio.
When DSP sends doorbell to FPGA, FPGA receives the doorbell packet normally. However, pc machine can have a large latency (around 1.5 s) to ping the network, while sending data to ping the network is a normal delay (<1 ms).
Both SRIO and network can operate independently. When debugging DSP separately to send a srio doorbell packet, the first few packets are sent normally and then take a long time(longer than 1s). Although sending a doorbell can take a long time, the remote device can receive a doorbell interrupt. And the packets being sent are stable with no exceptions like doorbell.
Sending doorbell function is as follows:
int rioDbellSend(Uint16 destID, Uint16 dbellInfo)
{
Srio_SockAddrInfo to;
to.dio.ttype = 0;
to.dio.ftype = Srio_Ftype_DOORBELL;//10
to.dio.rapidIOMSB = 0x0;
to.dio.rapidIOLSB = 0x0;
to.dio.dstID = destID;
/* Send the DIO Information. */
if (Srio_sockSend (srioSocketDIO, (Srio_DrvBuffer)dbellInfo , 0, (Srio_SockAddrInfo*)&to) < 0)
{
System_printf ("Debug: DoorBell Socket Send Failed\n");
return FAILED;
}
return SUCCEED;
}
The customer tried it with bare machine and the doorbell packet was normal. In addition, the DSP in sys/BIOS only has an exception for the transmit doorbell, and the receive doorbell interrupt is normal.
The long time is found in the CSL_SRIO_IsLSUFull function during debug. Is there any possible reason?
Could you help check this case? Thanks.
Best Regards,
Cherry