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.

error: xdc.runtime.knl.SemProcess

Other Parts Discussed in Thread: SYSBIOS

I'm attempting to build some C674 code in CCS using DMAN3 and ACPY3 and I'm getting the following error:

error: xdc.runtime.knl.SemProcess: "C:/TexasInstruments/xdctools_3_20_08_88/packages/xdc/runtime/knl/SemProcess.xs", line 28: xdc.runtime.knl.SemProcess : SemProcess.Proxy is not bound to OS specific implementation
js: "C:/TexasInstruments/xdctools_3_20_08_88/packages/xdc/cfg/Main.xs", line 116: Error: Configuration failed!
xdctools_3_20_08_88\gmake.exe: *** [package/cfg/DSPtasks_ti81xx_dsp_p674.xdl] Error 1
js: "C:/TexasInstruments/xdctools_3_20_08_88/packages/xdc/tools/Cmdr.xs", line 51: Error: xdc.tools.configuro: configuration failed due to earlier errors (status = 2); 'linker.cmd' deleted.
gmake: *** [configPkg/compiler.opt] Error 1
gmake: Target `all' not remade because of errors.
Build complete for project DSPtasks_CCS4

The .cfg file appears to be the source of the error:

DSPtasks_ti816x_dsp.cfg:


/* Set the BIOS timer frequency  to 32KHz so as to match with the default timer
 * frequency on Linux
 */
var Timer        = xdc.useModule('ti.sysbios.timers.dmtimer.Timer');
Timer.intFreq.hi = 0;
Timer.intFreq.lo = 32768;

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

var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
MultiProc.setConfig("DSP", ["DSP", "VIDEO-M3", "VPSS-M3", "HOST"]);

/* Load common configuration needed for running all SysLink samples */
xdc.loadCapsule("DSPtasks_common.cfg.xs");

var Notify        = xdc.useModule('ti.sdo.ipc.Notify');
var MessageQ      = xdc.useModule('ti.sdo.ipc.MessageQ');

var GateMP     = xdc.useModule('ti.sdo.ipc.GateMP');
var BIOS          = xdc.useModule('ti.sysbios.BIOS');
var Task          = xdc.useModule('ti.sysbios.knl.Task');
var Sem           = xdc.useModule('ti.sysbios.knl.Semaphore');

var Memory   = xdc.useModule('xdc.runtime.Memory');
Memory.defaultHeapSize = 0x8000;
Program.heap = 0x8000;

// Place heaps. L1DSRAM is defined in platform file
Program.sectMap[".L1D_HEAP"] = "L1DSRAM";  // L1DHEAP
Program.sectMap[".EXTERNAL_HEAP"] = "DDR2"; // EXTERNALHEAP
Program.sectMap[".text"] = "DDR2";

/* Task that does the message passing */
var tsk1 = Task.create('&Preprocessing_taskFxn');
tsk1.instance.name = "Preprocessing_taskFxn";
tsk1.arg0 = MultiProc.getIdMeta ("HOST");
tsk1.stackSize = 0x1000;

/* DMAN3 stuff */
var DMAN3            = xdc.useModule('ti.sdo.fc.dman3.DMAN3');
DMAN3.heapInternal     = ".L1D_HEAP";
DMAN3.heapExternal    = ".EXTERNAL_HEAP";

/* ACPY3 stuff */
var ACPY3        = xdc.useModule('ti.sdo.fc.acpy3.ACPY3');

DSPtasks_common.cfg.xs:

var Ipc                     = xdc.useModule('ti.sdo.ipc.Ipc');
var BIOS                    = xdc.useModule('ti.sysbios.BIOS');
var MultiProc               = xdc.useModule('ti.sdo.utils.MultiProc');
var SharedRegion            = xdc.useModule('ti.sdo.ipc.SharedRegion');
var Syslink                 = xdc.useModule ('ti.syslink.ipc.rtos.Syslink');

xdc.loadPackage ('ti.syslink.ipc.rtos');

if ( (Program.platform.$name != undefined) && (Program.platform.$name.match(/evmDA830/)) ) {
    /* Ipc */
    Ipc.sr0MemorySetup = true;
}

/* Ipc configuration */
if ( (Program.platform.$name != undefined) && (Program.platform.$name.match(/evm6472/)) ) {
    /* Set host id */
    Ipc.hostProcId = MultiProc.getIdMeta("CORE5");
    Ipc.generateSlaveDataForHost = true;
}
else if ( (Program.platform.$name != undefined) && (Program.platform.$name.match(/evm6474/)) ) {
    /* Set host id */
    Ipc.hostProcId = MultiProc.getIdMeta("CORE2");
    Ipc.generateSlaveDataForHost = true;
}
else {
    /* Set host id */
    Ipc.hostProcId = MultiProc.getIdMeta("HOST");
}

Ipc.procSync = Ipc.ProcSync_PAIR;

/* Set Shared Region variables by picking up the information from Platform
 * memory map
 */
var sr0MemSection = Program.cpu.memoryMap['SR0'];
/*
var SHAREDREG_0_MEM     = sr0MemSection.base;
var SHAREDREG_0_MEMSIZE = sr0MemSection.len;
*/
var SHAREDREG_0_MEM     = 0x97600000;
var SHAREDREG_0_MEMSIZE = 0x10000000;
var SHAREDREG_0_ENTRYID = 0;
var SHAREDREG_0_OWNERPROCID = Ipc.hostProcId;

var sr1MemSection = Program.cpu.memoryMap['SR1'];
/*
var SHAREDREG_1_MEM     = sr1MemSection.base;
var SHAREDREG_1_MEMSIZE = sr1MemSection.len;
*/
var SHAREDREG_1_MEM     = 0x96A00000;
var SHAREDREG_1_MEMSIZE = 0x00C00000;

var SHAREDREG_1_ENTRYID = 1;
var SHAREDREG_1_OWNERPROCID = Ipc.hostProcId;

/*
 *  Need to define the shared region. The IPC modules use this
 *  to make portable pointers. All processors need to add this
 *  call with their base address of the shared memory region.
 *  If the processor cannot access the memory, do not add it.
 */
SharedRegion.setEntryMeta(SHAREDREG_0_ENTRYID,
    {
      base:        SHAREDREG_0_MEM,
      len:         SHAREDREG_0_MEMSIZE,
      ownerProcId: SHAREDREG_0_OWNERPROCID,
      isValid:     true,
      name:        "shared_region_0",
    });

SharedRegion.setEntryMeta(SHAREDREG_1_ENTRYID,
    {
      base:        SHAREDREG_1_MEM,
      len:         SHAREDREG_1_MEMSIZE,
      ownerProcId: SHAREDREG_1_OWNERPROCID,
      isValid:     true,
      name:        "shared_region_1",
      createHeap:  true
    });

/*
*  Application constants that all three programs use.
*/
Program.global.MSGQ_NAME            = "MSGQ_";
Program.global.HEAP_NAME            = "HeapMemMP";
Program.global.HEAP_ALIGN           =   128;
Program.global.HEAP_MSGSIZE         =   128;
Program.global.HEAP_NUMMSGS         =    10;
Program.global.HEAPID               =     0;

Update:

The error is apparently coming from the inclusion of:

var ACPY3 = xdc.useModule('ti.sdo.fc.acpy3.ACPY3')

in DSPtasks_ti816x_dsp.cfg file.

Update Secundum:

I got rid of the error by inserting the following two lines in the common part of the .cfg:

var SemProcess = xdc.useModule('xdc.runtime.knl.SemProcess');
SemProcess.Proxy = xdc.useModule('ti.sysbios.xdcruntime.SemProcessSupport');

I'm not sure why I needed to do this.

Lee Holeva

 

  • Good to know you got around that issue. Could you tell me what version of Framework Components you were using ? I will try it out at my end and see if I can reproduce the issue.

    Thanks,

    Gunjan.

  • Lee,
    the error indicates that SemProcess is used in the configuration, but SemProcess.Proxy is not set. A simple explanation would be that the inclusion of ACPY3 brings in some code that uses SemProcess, but does not set SemProcess.Proxy. Another possibility is that when ACPY3 is used, it changes the order of code execution in loaded packages, and the check for SemProcess.Proxy executes before the code that sets SemProcess.Proxy. This second case indicates a bug in XDCtools or SYS/BIOS.
    The two lines you added ensure that SemProcess.Proxy is set before the check, which runs after the end of the CFG script.

    To debug what's happening I would have to see the trace of the useModule calls. You can generate it by adding XDC_TRACE_ENABLE="all" to the environment for your CCS project. The trace might be long, and it would be easier for me to look at it if you can post it as a zip file rather than pasting everything in the thread.

  • Gunjan said:
    Could you tell me what version of Framework Components you were using ? I will try it out at my end and see if I can reproduce the issue.

     

    Framework 3_21_00_17_eng, with the code made using xdctools 3_20_08_88 by xdc on the command line.  Building the code in CCS results in the same error.

    Lee Holeva