I am using C6455 EVM to do SRIO doorbell testing. In the Master board, I have the following code, which send 100 doorbells to Slave board (Mezzanine). However, on the slave side, I can only receive 6 door bells. Also, the print out on the slave part is very slow and shows different pace as the master board sends out the doorbell. I am wondering what caused this problem. Thank you very much,
Master code
srio_init();
for (i=0;i<100;i++)
{
printf("*****************************************.\n");
printf("Door Bell 1.\n");
//Reserved Doorbell Reg # rsv Doorbell bit
//9 2 1 4
srio_doorbell(0x23);//Doorbell Reg #1 Doorbell bit 0011
delay(10000000);
}
Slave code
Uint32 *db1_ICCR = (Uint32 *)0x02D00218;
for (i=0;i<100;i++)
{
// clear the doorbell interrupt
*db1_ICCR = (Uint32)0xFFFFFFFF;
// wait for the doorbell interrupt;
resp_db.index = 1;
resp_db.data = 0;
do {
CSL_srioGetHwStatus (hSrio, CSL_SRIO_QUERY_DOORBELL_INTR_STAT, &resp_db);
} while(resp_db.data == 0x00);
printf("%d Doorbell received. %d\n",i,resp_db.data);
}
The output window on slave board is as following
0 Doorbell received. 8
1 Doorbell received. 8
2 Doorbell received. 8
3 Doorbell received. 8
4 Doorbell received. 8
5 Doorbell received. 8