I have followed the error recover sequence, but it still does not work.
On my board, two c6455s(A and B) are connected by a switch(tsi578) in 4x mode. In the beginning, c6455-A can send data to c6455-B through tsi578 without any error. But after a POR reset of the c6455-A, data can no longer be sent any more. At the time, the "Output Error-stopped" bit in the SP0_ERR_STAT register is '1', which means the c6455-A is in Output Error-stopped state. So I followed the Error Recovery sequence stated in spru976e ("TMS320C645x DSP Serial RapidIO (SRIO) User's Guide"), writing 0x40FC8000 to SP0_CS_TX register of c6455-A to initiate the recovery sequence. But the "Output Error-stopped" bit remains set. Besides, the OUTPUT_PKT_DROP bit and the PORT_WRITE_PND bit in the SP0_ERR_STAT are also setted, and every time I wrote '1's to clear them, they went back to '1's immediately. I guess the OUTPUT_PKT_DROP bit means the port had dropped some packets, but it should be impossible because the data sending process has been cancelld, where are the dropped packets come from?
Here are the details:
1, system power up, c6455s,tsi578 get out of reset and begin to work;
2, c6455-A begin to send NWRITE packets to c6455-B through tsi578, successfully, no error at all. c6455-B does not send any data.
3, reset c6455-A by POR, but leave c6455-B, tsi578 untouched;
4, c6455-A get out of reset and begin to work, and this time it is instructed not to send any date packet;
5, the value of c6455-A's SP0_ERR_STAT reg become 0x00000002, indicate the link is up, the SP_ERR_STAT of tsi578 indicate it is in "Input Error_stopped" state;
6, here, following the instructed recover sequence, write 0x40FC8000 to SP0_CS_TX register of c6455-A(which is instructed in the spru976e User's Guide);
7, the value of c6455-A's SP0_ERR_STAT reg now begin to indicate "Output Error_stopped", but the SP_ERR_STAT of tsi578 indicate the tsi578 isOK now without "Input Error_stopped" nor "Output Error_stopped";
8, the value of c6455-A's SP0_ERR_STAT reg remains to indicate "Output Error_stopped", it seems it will hold it till the end of the word! No data can be sent.
Is there someone can tell me what wrong? How can I get the C6455 out of "Output Error_stopped" and get the link back to work?