/* ============================================================================= * Copyright (c) 2018, Texas Instruments Incorporated * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the * distribution. * * Neither the name of Texas Instruments Incorporated nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ var Types = xdc.useModule("xdc.runtime.Types"); 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 Memory = xdc.useModule('xdc.runtime.Memory') var System = xdc.useModule('xdc.runtime.System'); var Text = xdc.useModule('xdc.runtime.Text'); var Clock = xdc.useModule('ti.sysbios.knl.Clock'); var Task = xdc.useModule('ti.sysbios.knl.Task'); var Event = xdc.useModule('ti.sysbios.knl.Event'); var Mailbox = xdc.useModule('ti.sysbios.knl.Mailbox'); var Semaphore = xdc.useModule('ti.sysbios.knl.Semaphore'); var HeapMin = xdc.useModule('xdc.runtime.HeapMin'); var HeapBuf = xdc.useModule('ti.sysbios.heaps.HeapBuf'); var GateSwi = xdc.useModule('ti.sysbios.gates.GateSwi'); var GateMutex = xdc.useModule('ti.sysbios.gates.GateMutex'); var BIOS = xdc.useModule('ti.sysbios.BIOS'); var Hwi = xdc.useModule('ti.sysbios.family.arm.v7r.keystone3.Hwi'); var Core = xdc.useModule('ti.sysbios.family.arm.v7r.keystone3.Core'); var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem'); var SysMin = xdc.useModule('xdc.runtime.SysMin'); var Timer = xdc.useModule('ti.sysbios.hal.Timer'); /* Enable cache */ var Cache = xdc.useModule('ti.sysbios.family.arm.v7r.Cache'); Cache.enableCache = true; /* * Direct CIO to UART */ /* System.SupportProxy = SysUart; */ System.SupportProxy = SysMin; System.extendedFormats += "%f"; /* * Program.argSize sets the size of the .args section. * The examples don't use command line args so argSize is set to 0. */ Program.argSize = 0x0; /* * 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; */ /* Create default heap and hook it into Memory * We use the HeapMin-implementation because we never free any memory * and just create objects at startup. * other dynamic-memory-creation shall use memory-pools/allocators like tlsf */ var heapMinParams = new HeapMin.Params; heapMinParams.size = 16384*4; var heap0 = HeapMin.create(heapMinParams); Memory.defaultHeapInstance = heap0; Defaults.common$.memoryPolicy = Types.CREATE_POLICY; /* * 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 = 0x2000; */ /* System stack size (used by ISRs and Swis) */ Program.stack = 0x4000; Task.defaultStackSize = 0x4000; Task.common$.namedInstance = true; Task.common$.namedModule = true; var devType = java.lang.System.getenv("SOC"); var boardName = java.lang.System.getenv("BOARD"); var buildType = java.lang.System.getenv("BUILD_PROFILE"); var coreId = java.lang.System.getenv("CORE"); print(coreId); var Csl = xdc.loadPackage('ti.csl'); Csl.Settings.deviceType = devType; Csl.Settings.libProfile = buildType; // Load the SCICLIENT package var SciClient = xdc.loadPackage('ti.drv.sciclient'); SciClient.Settings.socType = devType; SciClient.Settings.boardType = boardName; SciClient.Settings.coreType = coreId; SciClient.Settings.libProfile = buildType; /* Load the OSAL package */ var osType = "tirtos" var Osal = xdc.useModule('ti.osal.Settings'); Osal.osType = osType; Osal.socType = devType; var Board = xdc.loadPackage('ti.board'); Board.Settings.boardName = boardName; Board.Settings.libProfile = buildType; // load uart package var Uart = xdc.loadPackage('ti.drv.uart'); Uart.Settings.socType = devType; Uart.Settings.libProfile = buildType; // load gpio package var Gpio = xdc.loadPackage('ti.drv.gpio'); Gpio.Settings.socType = devType; Gpio.Settings.libProfile = buildType; // load spi package var Spi = xdc.loadPackage('ti.drv.spi'); Spi.Settings.socType = devType; Spi.Settings.libProfile = buildType; // load i2c package var I2c = xdc.loadPackage('ti.drv.i2c'); I2c.Settings.socType = devType; I2c.Settings.libProfile = buildType; // load dma package var Udma = xdc.loadPackage('ti.drv.udma'); Udma.Settings.socType = devType; Udma.Settings.libProfile = buildType; /* * Create and install logger for the whole system */ var loggerBufParams = new LoggerBuf.Params(); loggerBufParams.numEntries = 32; var logger0 = LoggerBuf.create(loggerBufParams); Defaults.common$.logger = logger0; Main.common$.diags_INFO = Diags.ALWAYS_ON; BIOS.libType = BIOS.LibType_Custom; BIOS.cpuFreq.lo = 800000000; BIOS.cpuFreq.hi = 0; /* Disable Timer frequency check, workaround for QT test */ var Timer = xdc.useModule('ti.sysbios.timers.dmtimer.Timer'); Timer.checkFrequency = false; for (var i = 0; i < 4; i++) { Timer.intFreqs[i].lo = 25000000; Timer.intFreqs[i].hi = 0; } Clock.timerId = 1; if(coreId=="mcu1_0") { Core.id = 0; /* DM timer cfg */ Clock.timerId = 0; } if(coreId=="mcu1_1") { Core.id = 1; /* DM timer cfg */ Clock.timerId = 1; } if(coreId=="mcu2_0") { Core.id = 0; Clock.timerId = 2; } if(coreId=="mcu2_1") { Core.id = 1; Clock.timerId = 3; } /* Sysbios supports workaround for Silicon issue https://jira.itg.ti.com/browse/K3_OPEN_SI-148 * Details of silicon issue : https://confluence.itg.ti.com/display/PROCIPDEV/%2310+The+same+interrupt+cannot+be+nested+back-2-back+within+another+interrupt * Sysbios Requirement Details: https://jira.itg.ti.com/browse/SYSBIOS-1419 * Workaround requires use of a resevred dummyIRQ. * Using DummyIRQ#383 as per cslr_intr_mss.h it is a reserved interrupt not connected to any * peripheral interrupt sources */ //Hwi.dummyIRQ = 255; //var Reset = xdc.useModule("xdc.runtime.Reset"); //Reset.fxns[Reset.fxns.length++] = "&utilsCopyVecs2ATcm"; /* * Initialize MPU and enable it * * Note: MPU must be enabled and properly configured for caching to work. */ xdc.loadCapsule("r5_mpu.xs"); //var Load = xdc.useModule('ti.sysbios.utils.Load'); /* load calculation related settings */ //Load.swiEnabled = true; //Load.hwiEnabled = true; //Load.taskEnabled = true; //Load.updateInIdle = false; /* Check if application needs to update with custom configuration options */ /* Caution: This should be at the end of this file after all other common cfg */ var cfgUpdate = java.lang.System.getenv("XDC_CFG_UPDATE") if ((cfgUpdate != '')&&(cfgUpdate != null)) { xdc.print("Loading configuration update " + cfgUpdate); xdc.loadCapsule(cfgUpdate); }