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.

evmk2h sharedRegion setup error

Hello all,

 I am using EVMK2H with mcsdk3.xx. I have all the ipc and bios packaged downloaded.

I am trying to build a simple dsp0("CORE0")  to dsp1 ("CORE1") IPC example using shared Memory and MessageQ. I am building my example based on the example provided by the ipc package under /ti/ipc_3_35_01_07/examples/TCI6638_linux_elf    and    /ti/ipc_3_35_01_07/examples/C6678_bios_elf .I ran into trouble trying to configure ShareRegion for the purpose of this project. CCSV6 returns this error message

"

Description Resource Path Location Type
Cannot read property "base" from undefined (/home/wei/workspace_v6_2/ipc_dsp/app.cfg#142) .xdchelp /ipc_dsp line 142 C/C++ Problem

"

Here is my .cfg file for dsp0

var Defaults = xdc.useModule('xdc.runtime.Defaults');
var Diags = xdc.useModule('xdc.runtime.Diags');
var Error = xdc.useModule('xdc.runtime.Error');
var Log = xdc.useModule('xdc.runtime.Log');
var LoggerBuf = xdc.useModule('xdc.runtime.LoggerBuf');
var Main = xdc.useModule('xdc.runtime.Main');
var SysMin = xdc.useModule('xdc.runtime.SysMin');
var System = xdc.useModule('xdc.runtime.System');
var Text = xdc.useModule('xdc.runtime.Text');

var BIOS = xdc.useModule('ti.sysbios.BIOS');
var Hwi = xdc.useModule('ti.sysbios.hal.Hwi');
var Task = xdc.useModule('ti.sysbios.knl.Task');

/*
 * Uncomment this line to globally disable Asserts.
 * All modules inherit the default from the 'Defaults' module.  You
 * can override these defaults on a per-module basis using Module.common$.
 * Disabling Asserts will save code space and improve runtime performance.
Defaults.common$.diags_ASSERT = Diags.ALWAYS_OFF;
 */

/*
 * Uncomment this line to keep module names from being loaded on the target.
 * The module name strings are placed in the .const section. Setting this
 * parameter to false will save space in the .const section.  Error and
 * Assert messages will contain an "unknown module" prefix instead
 * of the actual module name.
 */
Defaults.common$.namedModule = false;

/*
 * Minimize exit handler array in System.  The System module includes
 * an array of functions that are registered with System_atexit() to be
 * called by System_exit().
 */
System.maxAtexitHandlers = 4;

/*
 * Uncomment this line to disable the Error print function.
 * We lose error information when this is disabled since the errors are
 * not printed.  Disabling the raiseHook will save some code space if
 * your app is not using System_printf() since the Error_print() function
 * calls System_printf().
Error.raiseHook = null;
 */

/*
 * Uncomment this line to keep Error, Assert, and Log strings from being
 * loaded on the target.  These strings are placed in the .const section.
 * Setting this parameter to false will save space in the .const section.
 * Error, Assert and Log message will print raw ids and args instead of
 * a formatted message.
 */
Text.isLoaded = false;

/*
 * Uncomment this line to disable the output of characters by SysMin
 * when the program exits.  SysMin writes characters to a circular buffer.
 * This buffer can be viewed using the SysMin Output view in ROV.
 */
SysMin.flushAtExit = false;

/*
 * The BIOS module will create the default heap for the system.
 * Specify the size of this default heap.
 */
BIOS.heapSize = 0x0;

/* System stack size (used by ISRs and Swis) */
Program.stack = 0x400;

/* Circular buffer size for System_printf() */
SysMin.bufSize = 128;

/*
 * Create and install logger for the whole system
 */
var loggerBufParams = new LoggerBuf.Params();
loggerBufParams.numEntries = 4;
var logger0 = LoggerBuf.create(loggerBufParams);
Defaults.common$.logger = logger0;
Main.common$.diags_INFO = Diags.ALWAYS_ON;

System.SupportProxy = SysMin;

/*
 * Build a custom BIOS library.  The custom library will be smaller than the
 * pre-built "instrumented" (default) and "non-instrumented" libraries.
 *
 * The BIOS.logsEnabled parameter specifies whether the Logging is enabled
 * within BIOS for this custom build.  These logs are used by the RTA and
 * UIA analysis tools.
 *
 * The BIOS.assertsEnabled parameter specifies whether BIOS code will
 * include Assert() checks.  Setting this parameter to 'false' will generate
 * smaller and faster code, but having asserts enabled is recommended for
 * early development as the Assert() checks will catch lots of programming
 * errors (invalid parameters, etc.)
 */
BIOS.libType = BIOS.LibType_Custom;
BIOS.logsEnabled = false;
BIOS.assertsEnabled = true;

/*
 * Create a task.  The 'taskFxn' function can be found in main.c.
 */
var task0Params = new Task.Params();
var task0 = Task.create("&taskFxn", task0Params);






/* ipc configuration 		*/
   
/*    ipc setup			*/
	var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');
Ipc.procSync = Ipc.ProcSync_ALL;
Ipc.sr0MemorySetup = true;
   //Needd to use Ipc_Attach later in run time
   
   
/*      messageQ setup  */

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



/*      multiProc setup            */
  
  var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
  var procNameAry = [ "HOST","CORE0", "CORE1", "CORE2", "CORE3", "CORE4", "CORE5",
        "CORE6", "CORE7" ];
     MultiProc.setConfig("CORE0", procNameAry);
        
        
/*  sharedRegion setup */
	var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
	var SR0Mem = Program.cpu.memoryMap["SR_0"];
	SharedRegion.setEntryMeta(0,
   		 new SharedRegion.Entry(
   		 {base:SR0Mem.base,
       	 name:           "SR_0",
       	
       	 len:            SR0Mem.len,
         ownerProcId:    1,
         isValid:        true,
         cacheEnable:    true
    })
);


  • Hi,

    There is issue in getting base "base:SR0Mem.base" value from below shared regiton setup.

    var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
    var SR0Mem = Program.cpu.memoryMap["SR_0"];
    SharedRegion.setEntryMeta(0,
    new SharedRegion.Entry(
    {base:SR0Mem.base,
    name: "SR_0",

    len: SR0Mem.len,
    ownerProcId: 1,
    isValid: true,
    cacheEnable: true
    })

    We just suggest that if you already know the names of the memory regions, and you simply want to pass the base and lengths of them to entry:
    base: 0x40000,
    size: 0x1000,

    Or, if you don't know the base and length of the regions, you could parse the Program.cpu.memoryMap (as in my example) looking for matching region names with the values:

    var memmap = Program.cpu.memoryMap;
    var memString = "";

    /* Find SDRAM in memory map */
    for (var i=0; i < memmap.length; i++) {
    memString += (memmap[i].base + " " + memmap[i].len + ", ");

    if (memmap[i].name == "SR_0") {
    memmap[i].base;
    memmap[i].len;
    }
    }
  • Refer below TI-RTOS forum thread which could help you,

  • Thanks Raja. A follow up question. I wonder if there is any place to look up what "SRO" is and what the base and length are from a file or a document?