06f00559d8744fdb82b94358f4e3b1e2186a3307
1 /*
2 * Copyright 2016 by Texas Instruments Incorporated.
3 *
4 * All rights reserved. Property of Texas Instruments Incorporated.
5 * Restricted rights to use, duplicate or disclose this code are
6 * granted through contract.
7 *
8 */
9 /* environment['xdc.cfg.check.fatal'] = 'false'; */
11 /********************************************************************
12 ************************** BIOS Modules ****************************
13 ********************************************************************/
14 var Memory = xdc.useModule('xdc.runtime.Memory');
15 var BIOS = xdc.useModule('ti.sysbios.BIOS');
16 var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
17 var HeapBuf = xdc.useModule('ti.sysbios.heaps.HeapBuf');
18 var Task = xdc.useModule('ti.sysbios.knl.Task');
19 var Idle = xdc.useModule('ti.sysbios.knl.Idle');
20 var SEM = xdc.useModule('ti.sysbios.knl.Semaphore');
21 var Event = xdc.useModule('ti.sysbios.knl.Event');
22 var Hwi = xdc.useModule('ti.sysbios.family.arm.v7r.keystone3.Hwi');
23 var System = xdc.useModule('xdc.runtime.System');
24 var SysMin = xdc.useModule('xdc.runtime.SysMin');
25 var SysStd = xdc.useModule('xdc.runtime.SysStd');
26 var Diags = xdc.useModule('xdc.runtime.Diags');
27 var Pmu = xdc.useModule('ti.sysbios.family.arm.v7a.Pmu');
28 var Timestamp = xdc.useModule('xdc.runtime.Timestamp');
29 System.SupportProxy = SysStd;
31 /* Enable extended format for System_printf() */
32 System.extendedFormats = '%$L%$S%$F%f';
34 /*
35 * Create and install logger for the whole system
36 */
37 /*
38 var loggerBufParams = new LoggerBuf.Params();
39 loggerBufParams.numEntries = 4;
40 var logger0 = LoggerBuf.create(loggerBufParams);
41 Defaults.common$.logger = logger0;
42 Main.common$.diags_INFO = Diags.ALWAYS_ON;
43 //Defaults.common$.diags_USER1 = Diags.ALWAYS_ON;
44 //Task.common$.diags_USER1 = Diags.ALWAYS_ON;
45 */
46 System.SupportProxy = SysStd;
48 /*
49 * Build a custom BIOS library. The custom library will be smaller than the
50 * pre-built "instrumented" (default) and "non-instrumented" libraries.
51 *
52 * The BIOS.logsEnabled parameter specifies whether the Logging is enabled
53 * within BIOS for this custom build. These logs are used by the RTA and
54 * UIA analysis tools.
55 *
56 * The BIOS.assertsEnabled parameter specifies whether BIOS code will
57 * include Assert() checks. Setting this parameter to 'false' will generate
58 * smaller and faster code, but having asserts enabled is recommended for
59 * early development as the Assert() checks will catch lots of programming
60 * errors (invalid parameters, etc.)
61 */
62 BIOS.libType = BIOS.LibType_Custom;
63 BIOS.logsEnabled = true;
64 BIOS.assertsEnabled = true;
66 /* Make sure libraries are built with 32-bit enum types to be compatible with DSP enum types*/
67 BIOS.includeXdcRuntime = true;
68 BIOS.customCCOpts += " --enum_type=int ";
69 BIOS.libType = BIOS.LibType_Custom;
70 BIOS.cpuFreq.lo = 400000000;
71 BIOS.cpuFreq.hi = 0;
72 /* Remove clock while we are profiling for cycles and don't want BIOS
73 periodic interruption. */
74 BIOS.clockEnabled = true;
76 /* Enable BIOS Task Scheduler */
77 BIOS.taskEnabled = true;
79 /*
80 * Initialize MPU and enable it
81 *
82 * Note: MPU must be enabled and properly configured for caching to work.
83 */
84 xdc.loadCapsule("r5_mpu.xs");
86 /* Enable cache */
87 var Cache = xdc.useModule('ti.sysbios.family.arm.v7r.Cache');
88 Cache.enableCache = true;
90 System.SupportProxy = SysStd;
92 /* FIQ Stack Usage: */
93 Hwi.fiqStackSize = 2048;
94 Hwi.fiqStackSection = ".myFiqStack"
96 /* Sysbios supports workaround for Silicon issue https://jira.itg.ti.com/browse/K3_OPEN_SI-148
97 * Details of silicon issue : https://confluence.itg.ti.com/display/PROCIPDEV/%2310+The+same+interrupt+cannot+be+nested+back-2-back+within+another+interrupt
98 * Sysbios Requirement Details: https://jira.itg.ti.com/browse/SYSBIOS-1419
99 * Workaround requires use of a resevred dummyIRQ.
100 * Using DummyIRQ#255 as per cslr_intr_mss.h it is a reserved interrupt not connected to any
101 * peripheral interrupt sources
102 */
103 Hwi.dummyIRQ = 255;
104 Program.sectMap[".myFiqStack"] = "TCMB_RAM";
106 /* Default Heap Creation: Local L2 memory */
107 var heapMemParams = new HeapMem.Params();
108 heapMemParams.size = 32*1024;
109 Program.global.heap0 = HeapMem.create(heapMemParams);
110 Memory.defaultHeapInstance = Program.global.heap0;
112 /* Enable Timer */
113 var Timer = xdc.useModule('ti.sysbios.timers.rti.Timer');
115 for (var i=0; i < Timer.numTimerDevices; i++) {
116 Timer.intFreqs[i].lo = 200000000;
117 Timer.intFreqs[i].hi = 0;
118 }
121 Program.sectMap[".vecs"] = "VECTORS";