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 IPC_start() is holded in C6670 simulator

Other Parts Discussed in Thread: SYSBIOS

We test some test case in C6670 simulator.Such as fftc test case in the latest C6670 mcsdk.

The test case will be holded at the line of IPC_start() function.

We also use our own test case based on the IPC example in CCS.

The problem is tha same.

We don't know the reason Why IPC_start() can't be used in C6670 simulator?

 

  • Did you set the "Ipc.procSync" field in your cfg file to Ipc.ProcSync_ALL? Maybe the Ipc_attach() process is halted in Ipc_start() if you set as that.

    So you can check if the MultiProc.numProcessors is set to 4(C6670 situation) and MultiProc.setConfig(null, ["CORE0", "CORE1", "CORE2", "CORE3"]); like this.

  • Yes,These two field we have set.

  • Maybe you can have a look at http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/127096.aspx

    Or put your cfg file here for us to check it.

  • Below is the cfg file.Thanks!

     

    /*
     *  Copyright 2009 by Texas Instruments Incorporated.
     *
     *  All rights reserved. Property of Texas Instruments Incorporated.
     *  Restricted rights to use, duplicate or disclose this code are
     *  granted through contract.
     *
     */

    /* THIS FILE WAS GENERATED BY ti.sysbios.genx */

    /*
     *  ======== fftc_test.cfg ========
     *
     */

    /* Load all required BIOS/XDC runtime packages */
    var Memory                      =   xdc.useModule('xdc.runtime.Memory');
    var BIOS                        =   xdc.useModule('ti.sysbios.BIOS');
    var HeapMem                     =   xdc.useModule('ti.sysbios.heaps.HeapMem');
    var HeapBuf                     =   xdc.useModule('ti.sysbios.heaps.HeapBuf');
    var Log                         =   xdc.useModule('xdc.runtime.Log');
    var Task                        =   xdc.useModule('ti.sysbios.knl.Task');
    var Semaphore                   =   xdc.useModule('ti.sysbios.knl.Semaphore');
    var Hwi                   = xdc.useModule('ti.sysbios.family.c64p.Hwi');
    var ECM          =  xdc.useModule('ti.sysbios.family.c64p.EventCombiner');

    /* Load the CSL package */
    var Csl          =  xdc.useModule('ti.csl.Settings');

    /* Load the CPPI package */
    var Cppi                        =   xdc.loadPackage('ti.drv.cppi');    

    /* Load the QMSS package */
    var Qmss                        =   xdc.loadPackage('ti.drv.qmss');

    var System                      =   xdc.useModule('xdc.runtime.System');
    SysStd                          =   xdc.useModule('xdc.runtime.SysStd');
    System.SupportProxy             =   SysStd;


    /* Create a default system heap using ti.bios.HeapMem. */
    var heapMemParams1              =   new HeapMem.Params;
    heapMemParams1.size             =   8192 * 25;
    heapMemParams1.sectionName      =   "systemHeap";
    Program.global.heap0            =   HeapMem.create(heapMemParams1);

    /* This is the default memory heap. */
    Memory.defaultHeapInstance      =   Program.global.heap0;

    Program.sectMap["systemHeap"]   =   Program.platform.stackMemory;

    /****** IPC - Shared Memory Settings ********/
    /* IPC packages */
    var Ipc                         =   xdc.useModule('ti.sdo.ipc.Ipc');
    var Settings                    =   xdc.module('ti.sdo.ipc.family.Settings');
    var ListMP                      =   xdc.useModule('ti.sdo.ipc.ListMP');
    var GateMP                      =   xdc.useModule('ti.sdo.ipc.GateMP');
    var SharedRegion                =   xdc.useModule('ti.sdo.ipc.SharedRegion');
    var HeapMemMP                   =   xdc.useModule('ti.sdo.ipc.heaps.HeapMemMP');
    var MultiProc                   =   xdc.useModule('ti.sdo.utils.MultiProc');

    var memmap = Program.cpu.memoryMap;

    Startup = xdc.useModule('xdc.runtime.Startup');
    Startup.firstFxns.$add('&myStartupFxn');

    /* Configure the shared memory heap for shared memory allocations required by the
     * CPPI and QMSS Libraries */
    SharedRegion.translate = false;

    /* Create a shared memory heap */
    MultiProc.setConfig(null, ["CORE0", "CORE1", "CORE2", "CORE3"]);

    /* Synchronize all processors (this will be done in Ipc_start) */
    Ipc.procSync = Ipc.ProcSync_ALL;

    /* To avoid wasting shared memory for Notify and MessageQ transports */
    for (var i = 0; i < MultiProc.numProcessors; i++) {
        Ipc.setEntryMeta({
            remoteProcId: i,
            setupNotify: false,
            setupMessageQ: false,
        });
    }

    /* Create a shared memory */
    SharedRegion.setEntryMeta(0,
        { base: 0x0C010000,
          len: 0x00100000,
          ownerProcId: 0,
          isValid: true,
          name: "sharemem",
        });


    /* Enable BIOS Task Scheduler */
    BIOS.taskEnabled   =   true;

    /*
     * Enable Event Groups here and registering of ISR for specific GEM INTC is done
     * using EventCombiner_dispatchPlug() and Hwi_eventMap() APIs
     */

    ECM.eventGroupHwiNum[0] = 7;
    ECM.eventGroupHwiNum[1] = 8;
    ECM.eventGroupHwiNum[2] = 9;
    ECM.eventGroupHwiNum[3] = 10;

    /*
     *  @(#) ti.sysbios.genx; 2, 0, 0, 0,275; 4-29-2009 15:45:06; /db/vtree/library/trees/avala/avala-k25x/src/
     */

     

  • Hi, I have tried the test using your cfg and it works normally, Ipc_start return a '0' with successful state.

    Did you put all 4 cores into 'running' status? If not do so, the core0 will always wait until all cores have attached to each other.

  • Allen Lee,

    Great thanks!The problem of IPC_Start() has been resolved.We have another problem in the FFTC test.

    The FFTC test project we use is the FFTC_Simple_testProject in the pdk_c6670_1_0_0_11.

    The Rx flow open failed.Can anyone use this test project example to check it.Thanks!