If both devices are coming out of reset, ACKIDs should really already be aligned. Concentrate on getting rid of the error states first. There is code posted in that other thread on doing the AckID alignment, I'm not sure if that is what you are using, but it is confirmed to work between DSPs.
I am not clear about the code on doing AckID alignment, I only see the Keystone_SRIO_match_ACKID module used int the SRIO_2DSP_TEST()function, However, i ever consult the TI FAE the Keystone_SRIO_match_ACKID module isn't necessary for the slaver DSP as i used the DSP for the slaver.Anyway, i tried to add the Keystone_SRIO_match_ACKID module in my function after the initialization is finished. Keystone_SRIO_match_ACKID module as follow.
SP0_LM_REQ=4;
while(0==(SP0_LM_RESP>>31))
{
SP0_LM_REQ=4;
}
asm("nop 5");
uiRemote_In_AckID=(SP0_LM_RESP&0x000003E0)>>5;
SP0_AckID_STAT=uiRemote_In_AckID;
do
{
ui_Local_In_AckID=(SP0_AckID_STAT&0x3F000000)>>0x00000018;
uiMaintenanceValue=(((uiRemote_In_AckID+1)<<0x00000018) | ui_Local_In_AckID );
uiResult=Keystone_SRIO_Maintenane(0,0,0xFF,0x148,GLOBAL_ADDR(& uiMaintenanceValue),0x81);
if(uiResult)
continue;
uiResult=Keystone_SRIO_Maintenane(0,0,0xFF,0x148,GLOBAL_ADDR(& uiMaintenanceValue),0x80);
uiRemote_Out_AckID=uiMaintenanceValue & 0x0000003F;
}while(uiResult | (uiLocal_In_AckID+1 ! = uiRemote_Out_AckID));
As above, the Keystone_SRIO_match_ACKID module called the Keystone_SRIO_LSU_transfer function which i ever confirm that the LSU configuration is not necessary for slaver DSP. So i tried get rid of the do-while circle only reserve the following steps.
SP0_LM_REQ=4;
while(0==(SP0_LM_RESP>>31))
{
SP0_LM_REQ=4;
}
asm("nop 5");
uiRemote_In_AckID=(SP0_LM_RESP&0x000003E0)>>5;
SP0_AckID_STAT=uiRemote_In_AckID;
But the error transmission failure still occur on the same board.
And if i add the maintenance function , my procedure will stop at the step of Keystone_SRIO_wait_LSU_Completion or the LUS_Reg6 is the busy which means the LSU can't complete the transfer. so i think as this Keystone_SRIO_Maintenane(0,0,0xFF,0x148,GLOBAL_ADDR(& uiMaintenanceValue),0x80) module is used between 2DSPS , that will not work for the status between FPGA and DSP cause the offset addr 0x148 won't be exsit in the FPGA.
So could you give me a copy of the right code about AckID alignment though i am not sure whether it is the AckID alignment problem or not? or what can i do after i add the code except the d0-while circle when the error transmission still occur again and again?
Lastly, could you pls tell me how to get the SRIO debug GEL and how to use it for my Port0 debug?
Thanks really.
Best regards!