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.

why the Ipc_start function didn't suspend?



I use C6678, CCS5. 

 As I know, if the Ipc.procSync equal to Ipc.ProcSync_ALL, the Ipc_start function will keep block until the other processors run program. But now in my program, I only run the program on core0 and didn't connect the other 7 cores, the Task function can run, why?

Here is my code.2642.mul.rar

  • Eric,

    Ipc_start() does not block.  You need to check the return value from the call and spin on it.  See Notify/MessageQ examples that come with the Ipc product for more details.

    Judah

  • The Ipc_start() function really block. I use the template under the "IPC and I/O Examples" -> "C6678 Examples"->"C6678:MessageQ(single image for all cores)".  Before all core has run the program, the Ipc_start function in core0 doesn't return.

  • Eric,

    You have a bug in your *.cfg file:

    The line:

        IPC = IPC.ProcSync_ALL;

    Should be:

        IPC.procSync = IPC.ProcSync_PAIR;

    One correction, you shouldn't spin on the Ipc_start() call but you should check the return value from it.  Something like:

        status = Ipc_start();
        if (status < 0) {
            System_abort("Ipc_start failed\n");
        }

    Judah