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.

多核cfg配置问题

Other Parts Discussed in Thread: SYSBIOS

目前我的工程是多核公用一个cfg,程序加载到多个核之后,出现main起始地址一样的情况,这样的话后面八个同时跑,出现各个段地址被相互改动就很有可能。我的问题是如何在cfg通过配置将八个核的各个段独立出来,这样互不干涉,才能使整个工程不回出现异常!请教一下各位,谢谢咯!(关于修改cmd文件的配置我知道怎么改,但是基于BIOS工程如何改,我不太清楚),在论坛上看到过类似的问题,但是没有解答,求指教,配置如下:


var Memory  =   xdc.useModule('xdc.runtime.Memory');

var BIOS    =   xdc.useModule('ti.sysbios.BIOS');

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

var HeapBuf =   xdc.useModule('ti.sysbios.heaps.HeapBuf');

var Log     =   xdc.useModule('xdc.runtime.Log');
var Timer = xdc.useModule('ti.sysbios.hal.Timer');
var Mailbox = xdc.useModule('ti.sysbios.knl.Mailbox');

Program.stack = 0x10000;

/*
** Allow storing of task names. By default if you name a task with a friendly display name it will not be saved
** to conserve RAM. This must be set to true to allow it. We use friendly names on the Task List display.
*/
//Defaults.common$.namedInstance = true;
Task.common$.namedInstance = true;

var Clock   =   xdc.useModule ('ti.sysbios.knl.Clock');

/*
** Interface with IPC. Depending on the version of BIOS you are using the
** module name may have changed.
*/
/* Use this for pre BIOS 6.30 */
/* var Sem     =   xdc.useModule ('ti.sysbios.ipc.Semaphore'); */

/* Use this for BIOS 6.30 plus to get the IPC module */
var Sem = xdc.useModule ('ti.sysbios.knl.Semaphore');

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

var Ecm = xdc.useModule ('ti.sysbios.family.c64p.EventCombiner');


var ti_sysbios_knl_Event = xdc.useModule('ti.sysbios.knl.Event');
/*
** Configure this to turn on the CPU Load Module for BIOS.
**
*/
/*
var Load       =   xdc.useModule('ti.sysbios.utils.Load');
Load.common$.diags_USER4 = Diags.ALWAYS_ON;
*/

var Diags       = xdc.useModule('xdc.runtime.Diags');


/* 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');

/* Load the PA package */
var Pa        =  xdc.useModule('ti.drv.pa.Settings');

/* Load the Platform/NDK Transport packages */
var PlatformLib  = xdc.loadPackage('ti.platform.evmc6678l');
var NdkTransport = xdc.loadPackage('ti.transport.ndk');

/*
** Sets up the exception log so you can read it with ROV in CCS
*/
var LoggerBuf = xdc.useModule('xdc.runtime.LoggerBuf');
var Exc = xdc.useModule('ti.sysbios.family.c64p.Exception');
Exc.common$.logger = LoggerBuf.create();
Exc.enablePrint = true; /* prints exception details to the CCS console */

/*
**  Give the Load module it's own LoggerBuf to make sure the
**  events are not overwritten.
*/
/* var loggerBufParams = new LoggerBuf.Params();
loggerBufParams.exitFlush = true;
loggerBufParams.numEntries = 64;
Load.common$.logger = LoggerBuf.create(loggerBufParams);
*/

/*
** Use this load to configure NDK 2.2 and above using RTSC. In previous versions of
** the NDK RTSC configuration was not supported and you should comment this out.
*/
var Global       = xdc.useModule('ti.ndk.config.Global');

/*
** This allows the heart beat (poll function) to be created but does not generate the stack threads
**
** Look in the cdoc (help files) to see what CfgAddEntry items can be configured. We tell it NOT
** to create any stack threads (services) as we configure those ourselves in our Main Task
** thread hpdspuaStart.
*/ 
Global.enableCodeGeneration = false;


/* Define a variable to set the MAR mode for MSMCSRAM as all cacheable */
var Cache       =   xdc.useModule('ti.sysbios.family.c66.Cache');
//Cache.MAR224_255 = 0x0000000f;

var Startup     =   xdc.useModule('xdc.runtime.Startup');

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

/*
** Create a Heap.
*/
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
var heapMemParams = new HeapMem.Params();
heapMemParams.size = 0x300000;
heapMemParams.sectionName = "systemHeap";
Program.global.heap0 = HeapMem.create(heapMemParams);

/* This is the default memory heap. */
Memory.defaultHeapInstance  =   Program.global.heap0;
Program.sectMap["sharedL2"] = "DDR3";
Program.sectMap["systemHeap"] = "DDR3";
Program.sectMap[".sysmem"]  = "L2SRAM";
Program.sectMap[".args"]    = "DDR3";
Program.sectMap[".cio"]     = "L2SRAM";
Program.sectMap[".far"]  =  "L2SRAM";
Program.sectMap[".rodata"]  =  "L2SRAM";
Program.sectMap[".neardata"]  =  "L2SRAM";
Program.sectMap[".cppi"]  =  "DDR3";
Program.sectMap[".init_array"]  =  "DDR3";
Program.sectMap[".qmss"]  =  "DDR3";
Program.sectMap[".cinit"]  =  "L2SRAM";
Program.sectMap[".bss"]  = "L2SRAM";
Program.sectMap[".const"] = "L2SRAM";
Program.sectMap[".text"] = "DDR3";
Program.sectMap[".code"] = "DDR3";
Program.sectMap[".switch"] = "L2SRAM";
Program.sectMap[".data"] = "L2SRAM";
Program.sectMap[".fardata"] =  "DDR3";
Program.sectMap[".args"]  =  "DDR3";
Program.sectMap[".cio"]  =  "DDR3";
Program.sectMap[".vecs"]  =  "DDR3";
Program.sectMap["platform_lib"]  =  "DDR3";
Program.sectMap[".far:taskStackSection"] = "L2SRAM";
Program.sectMap[".stack"] = "L2SRAM";
Program.sectMap[".nimu_eth_ll2"] = "L2SRAM";
Program.sectMap[".resmgr_memregion"] = {loadSegment: "L2SRAM", loadAlign:128}; /* QMSS descriptors region  */
Program.sectMap[".resmgr_handles"] = {loadSegment: "L2SRAM", loadAlign:16}; /* CPPI/QMSS/PA Handles   */
Program.sectMap[".resmgr_pa"] = {loadSegment: "L2SRAM", loadAlign:8};  /* PA Memory     */
Program.sectMap[".far:IMAGEDATA"] = {loadSegment: "L2SRAM", loadAlign: 8};
Program.sectMap[".far:NDK_OBJMEM"] = {loadSegment: "L2SRAM", loadAlign: 8};
Program.sectMap[".far:NDK_PACKETMEM"] = {loadSegment: "MSMCSRAM", loadAlign: 128};
Program.sectMap[".user_data_msmcsram"] = {loadSegment: "MSMCSRAM", loadAlign: 128};

/* Required if using System_printf to output on the console */
SysStd            =   xdc.useModule('xdc.runtime.SysStd');
System.SupportProxy     =   SysStd;

/********************************************************************************************************************
* Define hooks and static tasks  that will always be running.                         *
 ********************************************************************************************************************/

/*
** Register an EVM Init handler with BIOS. This will initialize the hardware. BIOS calls before it starts.
**
** If yuo are debugging with CCS, then this function will execute as CCS loads it if the option in your
** Target Configuraiton file (.ccxml) has the option set to execute all code before Main. That is the
** default.
*/
Startup.lastFxns.$add('&EVM_init');

/*
** Create the stack Thread Task for our application.
*/
var tskNdkStackTest    =   Task.create("&StackTest");
tskNdkStackTest.stackSize   =  0x2000;
tskNdkStackTest.priority = 5;


/*
** Create a Periodic task to handle all NDK polling functions.
** If you are using RTSC configuration with NDK 2.2 and above, this is done by default and
** you do not need to do this.
*/
/*var prdNdkClkParams         =   new Clock.Params ();
prdNdkClkParams.period      =   0x64;  
prdNdkClkParams.startFlag   =   true;
Program.global.clockInst1   =   Clock.create("&llTimerTick", 5, prdNdkClkParams);
*/

/*
** If you are using RTSC configuration with NDK 2.2 and above, this is done by default, else
** register hooks so that the stack can track all Task creation
Task.common$.namedInstance  =   true;
Task.addHookSet ({ registerFxn: '&NDK_hookInit', createFxn: '&NDK_hookCreate', });

/* 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;


var hwi0Params = new Hwi.Params();
hwi0Params.instance.name = "hwi0";
hwi0Params.eventId = 20;
Program.global.hwi0 = Hwi.create(4, "&Isr_SrioDoorbell", hwi0Params);

var hwi1Params = new Hwi.Params();
hwi1Params.instance.name = "hwi1";
hwi1Params.eventId = 91;
Program.global.hwi1 = Hwi.create(5, "&Isr_Ipc", hwi1Params);