This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

rapidIO MQT problem

Other Parts Discussed in Thread: TMS320C6455

Hello, I've create a project based on the rapidioMQT example(MQT1.21).In my project I enabled L1 and L2Cache, and I 've alread build the MQT lib with cache enabled.

I have verified success on a platform that connect two TMS320C6455 with 4 ports SRIO, but our new project use a different platform, which connect two TMS320C6455 with port 2 and port 3 ,while port 0 and port1 connected to a FPGA, I just change the the portID from 1 to 3 with  the changed code bellow:

/*
 *  Configuration to the MQT instance.  Some fields are filled in the
 *  global init function (appConfigTransports()) which is called before
 *  DSP/BIOS initialization.
 *
 *  This structure needs to be persistent during DSP/BIOS initialization.
 */
RAPIDIOMQT_Params rapidMQTParams = {
    3,                 // max num of outstanding out of order msgs
    NUMBUFDESCS,       // numTxBuffers
    0,                 // dstDevId - initialized in appConfigTransports()
    TRUE,              // dstDevId16Bit
    0,                 // txMbox
    0,                 // txCppiQueueId
    1,                 // txCppiQueueWeight
    3,                 // portId
    0,                 // retries 0 -> infinite
    0xe                // ssize 0xe -> 4096byte max size messages.
};

when I run the program, I found the dspA(another called dspB) which runs boss thread just print one log:"Boss going to sleep"

this log is printed at  bellow:

locateAttrs.timeout = 1000;
    while (MSGQ_locate(WORKERNAME, &dstMsgQueue, &locateAttrs) != SYS_OK) {
        LOG_printf(&trace, "Boss going to sleep");

       ......

I'm sure the SRIO is initialized success,because I have tested that the Direct IO can write and read data successful, but why the message can't successful tranceive.

and I have made another test ,if I insert an breakpoint at the code bellow:

while (MSGQ_locate(WORKERNAME, &dstMsgQueue, &locateAttrs) != SYS_OK) {

and I start the program on two DSP , after the dspA stopped at the breakpoint , I run the program step by step , it can send and receive right message,and then I made another test , I comment the code bellow:

 locateAttrs.timeout = 1000;
    while (MSGQ_locate(WORKERNAME, &dstMsgQueue, &locateAttrs) != SYS_OK) {
        LOG_printf(&trace, "Boss going to sleep");
        //TSK_sleep(500);
        LOG_printf(&trace, "Boss is awake");
    }

I found the program can run successfull at the first time I powered on the board, but after that ,it can't output right result.
I doubt that the code "TSK_sleep(500);" caused the BIOS scheduler can't work well, but I'm not sure how the MSGQ_locate works , does anyone give me some advice,thanks!