You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
220 lines
7.4 KiB
220 lines
7.4 KiB
/*
|
|
* @file srio.cfg
|
|
*
|
|
* @brief
|
|
* Memory Map and Program intiializations for the HPDSP Utility.
|
|
*
|
|
*/
|
|
|
|
/*
|
|
* Specify all needed RTSC MOudles and ocnfigure them.
|
|
*/
|
|
var Memory = xdc.useModule('xdc.runtime.Memory');
|
|
|
|
var BIOS = xdc.useModule('ti.sysbios.BIOS');
|
|
|
|
var Task = xdc.useModule('ti.sysbios.knl.Task');
|
|
var Queue = xdc.useModule('ti.sysbios.knl.Queue');
|
|
|
|
var HeapBuf = xdc.useModule('ti.sysbios.heaps.HeapBuf');
|
|
|
|
var Log = xdc.useModule('xdc.runtime.Log');
|
|
|
|
/*
|
|
* 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 CPINTC = xdc.useModule ('ti.sysbios.family.c66.tci66xx.CpIntc');
|
|
var Ecm = xdc.useModule ('ti.sysbios.family.c64p.EventCombiner');
|
|
|
|
/*
|
|
* 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 SRIO package */
|
|
var Srio = xdc.loadPackage('ti.drv.srio');
|
|
|
|
/*
|
|
* 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"] = "DDR3";
|
|
Program.sectMap[".args"] = "DDR3";
|
|
Program.sectMap[".cio"] = "DDR3";
|
|
Program.sectMap[".far"] = "DDR3";
|
|
Program.sectMap[".rodata"] = "DDR3";
|
|
Program.sectMap[".neardata"] = "DDR3";
|
|
Program.sectMap[".cppi"] = "DDR3";
|
|
Program.sectMap[".init_array"] = "DDR3";
|
|
Program.sectMap[".qmss"] = "DDR3";
|
|
Program.sectMap[".srioSharedMem"] = "DDR3";
|
|
Program.sectMap[".cinit"] = "DDR3";
|
|
Program.sectMap[".bss"] = "DDR3";
|
|
Program.sectMap[".const"] = "DDR3";
|
|
Program.sectMap[".text"] = "DDR3";
|
|
Program.sectMap[".code"] = "DDR3";
|
|
Program.sectMap[".switch"] = "DDR3";
|
|
Program.sectMap[".data"] = "DDR3";
|
|
Program.sectMap[".fardata"] = "DDR3";
|
|
Program.sectMap[".args"] = "DDR3";
|
|
Program.sectMap[".cio"] = "DDR3";
|
|
Program.sectMap[".vecs"] = "DDR3";
|
|
Program.sectMap[".far:taskStackSection"] = "DDR3";
|
|
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: "L2SRAM", 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('&board_init');
|
|
|
|
/*
|
|
* Create the stack Thread Task for our application.
|
|
*/
|
|
var tskNdkStackTest = Task.create("&net_task");
|
|
tskNdkStackTest.stackSize = 0x10000;
|
|
tskNdkStackTest.priority = 0x5;
|
|
|
|
var tskUniStackTest = Task.create("&srio_task");
|
|
tskUniStackTest.stackSize = 0x20000;
|
|
tskUniStackTest.priority = 0x3;
|
|
|
|
var tskUniStackTest = Task.create("&hyplnk_task");
|
|
tskUniStackTest.stackSize = 0x20000;
|
|
tskUniStackTest.priority = 0x3;
|
|
|
|
/*
|
|
* 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;
|
|
|