Updated build infrastructure for Keystone II
authorJustin Sobota <jsobota@ti.com>
Fri, 8 Feb 2013 23:49:05 +0000 (18:49 -0500)
committerJustin Sobota <jsobota@ti.com>
Fri, 8 Feb 2013 23:49:05 +0000 (18:49 -0500)
13 files changed:
build/buildlib.xs
config.bld
package.bld
package.xdc
package.xs
release.bat [new file with mode: 0644]
rm.h
setupenv.bat
src/rm.c
test/k2h/c66/bios/rmK2HC66BiosTestProject.txt
test/k2h/c66/bios/rm_test.cfg [moved from test/rm_test.cfg with 97% similarity]
test/k2k/c66/bios/rmK2KC66BiosTestProject.txt
test/k2k/c66/bios/rm_test.cfg [new file with mode: 0644]

index 4934b5a6745894e38b6b67030dcb00a9cb5da3c9..648548e02aab857533a2e497e9c04ff6d260bad9 100644 (file)
@@ -294,7 +294,7 @@ function createLibMake(makelibname,targetname, objectPath)
     /* libmakefile.writeLine("INTERNALDEFS = -D"+stringname.replace(/\./g,"_")+" -Dxdc_target_types__=ti/targets/std.h -DMAKEFILE_BUILD -eo.$(OBJEXT) -ea.$(AOBJEXT) -fr=$(@D) -fs=$(@D) -ppa -ppd=$@.dep");*/\r
     libmakefile.writeLine("INTERNALDEFS = -D"+stringname.replace(/\./g,"_")+"  -DMAKEFILE_BUILD -eo.$(OBJEXT) -ea.$(AOBJEXT) -fr=$(@D) -fs=$(@D) -ppa -ppd=$@.dep");\r
     libmakefile.writeLine("INTERNALLINKDEFS = -o $@ -m $@.map");\r
-         libmakefile.writeLine("OBJDIR =  $(LIBDIR)");    \r
+    libmakefile.writeLine("OBJDIR =  $(LIBDIR)/obj"); \r
    \r
  return libmakefile;\r
 \r
@@ -383,16 +383,17 @@ function makeAddObjects(srcString, makefilename, srcfiles, flags,fileExt, target
 var makefilelocal;\r
 function buildLibrary (libOptions, libName, target, libFiles) \r
 {\r
-    var lldFullLibraryPath = "./lib/" + libName;\r
-    var lldFullLibraryPathMake = "$(LIBDIR)/" + libName;\r
+    var lldFullLibraryPath = "./lib/c66/" + libName;\r
+    var lldFullBuildPath = "./build/c66/" + libName;\r
+    var lldFullLibraryPathMake = "$(LIBDIR)/" + "c66/" + libName;\r
 \r
     /* Create Main make file in the root of package folder */\r
     makefilelocal = createMake(makefilelocal);\r
 \r
     /* Write the rule to make library in main makefile */\r
-    lib = lldFullLibraryPath+".a"+target.suffix;\r
+    lib = lldFullBuildPath+".a"+target.suffix;\r
     libMake = lldFullLibraryPathMake+".a"+target.suffix;\r
-    var objectPath= "./package/lib/"+lldFullLibraryPath;\r
+    var objectPath= "./package/"+lldFullBuildPath;\r
     makefilelocal.writeLine("\n\n# Make rule to create "+libMake+" library");\r
     makefilelocal.writeLine(".libraries: "+ libMake);\r
     makefilelocal.writeLine(libMake+": FORCE\n\t$(MAKE) -f "+lib+".mk $@");                                 \r
@@ -441,7 +442,7 @@ function buildLibrary (libOptions, libName, target, libFiles)
     if(afiles.length > 0)\r
     {                                                \r
       makeAddObjects("COMMONSRC",makefilelib,afiles,libOptions,"asm",target);\r
-      librule += " $(COMMONSRCSOBJS)";                   \r
+      librule += " $(COMMONSRCASMOBJS)";                   \r
     }\r
     if(safiles.length > 0)\r
     {                                                \r
@@ -451,14 +452,10 @@ function buildLibrary (libOptions, libName, target, libFiles)
 \r
     makefilelib.writeLine(librule);\r
     makefilelib.writeLine("\t@echo archiving $? into $@ ...");\r
+    makefilelib.writeLine("\tif [ ! -d $(LIBDIR)/c66 ]; then $(MKDIR) $(LIBDIR)/c66 ; fi;"); \r
                makefilelib.writeLine("\t$(ARIN) $@ $?");\r
                makefilelib.close();   \r
 \r
-    /* Create the library file and add all the objects to the file. */\r
-    var lib = Pkg.addLibrary(lldFullLibraryPath, target, libOptions);\r
-\r
-    lib.addObjects (libFiles);\r
-\r
     /* Create the Epilogue; which executes after all the builds are completed. \r
      * This is used to generate the benchmark information for the built library. \r
      * Also add the benchmarking information file to the package. */\r
@@ -468,11 +465,13 @@ function buildLibrary (libOptions, libName, target, libFiles)
     Pkg.makeEpilogue += "\n\t sectti.exe tmp.xml > " + lldFullLibraryPath + ".a" + target.suffix +  "_size.txt";\r
     Pkg.makeEpilogue += "\n\t $(RM) tmp.xml\n\n";\r
     Pkg.otherFiles[Pkg.otherFiles.length++] = lldFullLibraryPath + ".a" + target.suffix + "_size.txt";\r
-    Pkg.otherFiles[Pkg.otherFiles.length++] = lldFullLibraryPath + ".a" + target.suffix + ".mk";\r
+    Pkg.otherFiles[Pkg.otherFiles.length++] = lldFullBuildPath + ".a" + target.suffix + ".mk";\r
+    Pkg.otherFiles[Pkg.otherFiles.length++] = lldFullLibraryPath + ".a" + target.suffix;\r
 \r
     /* We need to clean after ourselves; extend the 'clean' target to take care of this. */\r
-    Pkg.makeEpilogue += "clean::\n\t";\r
-    Pkg.makeEpilogue += "$(RM) " + lldFullLibraryPath + ".a" + target.suffix + "_size.txt\n\n";\r
+    Pkg.makeEpilogue += "clean::\n";\r
+    Pkg.makeEpilogue += "\t$(RM) " + lldFullBuildPath + ".a" + target.suffix + "_size.txt\n";    \r
+    Pkg.makeEpilogue += "\t$(RMDIR) " + "$(LIBDIR)/" + "c66/ \n\n";\r
 \r
     return lib;\r
 }\r
@@ -505,6 +504,7 @@ function createMiniPkg(pkgName)
     Pkg.makeEpilogue += "\t tar -C " + "\"" + newPkgRep + "\"" + " -cf packages/" + pkgName + "_mini.tar " + \r
                         packageName + "simpleC66LE.mak " + packageName + "simpleC66BE.mak\n";\r
                         \r
+\r
     /* Step2: Add the exported header files to the package */\r
     var includeFiles = libUtility.listAllFiles (".h", ".", false);\r
     for (var k = 0 ; k < includeFiles.length; k++)\r
index 393e28de84eaa7bb9e07382e896e9c2cfe337145..4f921514de767439d9f926c8ff004639faa70fbd 100644 (file)
@@ -26,7 +26,8 @@ var lldPartNumber = java.lang.System.getenv("PARTNO");
 var lldIncludePath = " -i" + lldPath + "/src" + " -i" + lldPath  + " -i" + lldPath + "/test" + " -i" + lldPath + "/util/libfdt";\r
 \r
 /* Configure the RM Release Version Information */\r
-var lldReleaseVersion = [02,00,00,00];\r
+/* 3 steps: remove SPACE and TAB, convert to string and split to make array */\r
+var lldReleaseVersion = (""+Pkg.version.replace(/\s/g, "")).split(',');\r
 \r
 /* RM Coverity Analysis: Check the environment variable to determine if Static\r
  * Analysis has to be done on the RM Code base or not? */\r
@@ -95,4 +96,3 @@ if (miniBuild == "ON")
 \r
 /* List all the build targets here. */\r
 Build.targets = [ C66LE, C66BE ];\r
-\r
index 7befa1239c88df2dbbeb7938fb07204b65ded910..306acf524ccd8f39227056ef72dad7109258a91f 100644 (file)
@@ -172,11 +172,22 @@ if (lldInstallType == "SETUP")
     Pkg.makeEpilogue += "\t tar -xf ./packages/" + lldRTSCFileName + ".tar" + " -Ctmp/packages \n";\r
     Pkg.makeEpilogue += "\t installjammer " + InstallJammerVersion + PackageBaseDir + WinInstallDir + \r
                         " --output-dir packages/ --build install/rm.mpi\n";\r
-    Pkg.makeEpilogue += "\t -$(RMDIR) /S /Q tmp\n\n";\r
+    Pkg.makeEpilogue += "\t -$(RMDIR) tmp\n\n";\r
+}\r
 \r
-    /* We need to clean after ourselves; extend the 'clean' target to take care of this. */\r
-    Pkg.makeEpilogue += "clean::\n";\r
-    Pkg.makeEpilogue += "\t $(RM) packages/*.exe\n";\r
-    Pkg.makeEpilogue += "\t $(RM) packages/*.bin\n";\r
+/* We need to clean after ourselves; extend the 'clean' target to take care of this. */\r
+Pkg.makeEpilogue += "clean::\n";\r
+Pkg.makeEpilogue += "\t -$(RM) docs/Doxyfile Settings.xdc rmver.h\n";\r
+Pkg.makeEpilogue += "\t -$(RM) makefile\n";\r
+Pkg.makeEpilogue += "\t -$(RMDIR) docs/doxygen\n";\r
+if (lldInstallType == "SETUP")\r
+{\r
+    Pkg.makeEpilogue += "\t -$(RM) packages/*.exe\n";\r
+    Pkg.makeEpilogue += "\t -$(RM) packages/*.bin\n";\r
+    Pkg.makeEpilogue += "\t -$(RMDIR) eclipse\n\n";\r
+}\r
+if (miniBuild == "ON")\r
+{\r
+    Pkg.makeEpilogue += "\t -$(RM) simpleC66LE.mak\n";\r
+    Pkg.makeEpilogue += "\t -$(RM) simpleC66BE.mak\n";\r
 }\r
-    \r
index da62e2bf8056626aa82d55852186d07dadc0c170..8e57aabaa6f5a072d364ee0bbfee22b90f774095 100644 (file)
@@ -12,4 +12,3 @@
 package ti.drv.rm[2, 0, 0, 0] {\r
     module Settings;\r
 }\r
-\r
index e488a957624b4f4c970356107b445249594d75df..37b1ffcf83c33839055f33b72e9c23a9c7fac7ad 100644 (file)
 \r
 function getLibs(prog)\r
 {\r
-    var suffix;\r
+    var suffix = prog.build.target.suffix;\r
 \r
-    /* find a compatible suffix */\r
-    if ("findSuffix" in prog.build.target) {\r
-        suffix = prog.build.target.findSuffix(this);\r
-    }\r
-    else {\r
-        suffix = prog.build.target.suffix;\r
+    var name = this.$name + ".a" + suffix;\r
+\r
+    /* Read LIBDIR variable */\r
+    var lib = java.lang.System.getenv("LIBDIR");\r
+\r
+    /* If NULL, default to "lib" folder */\r
+    if (lib == null)\r
+    {\r
+        lib = "./lib";\r
+    } else {\r
+        print ("\tSystem environment LIBDIR variable defined : " + lib);\r
     }\r
 \r
-    var name = this.$name + ".a" + suffix;\r
-    var lib = "";\r
+    /* Get target folder, if applicable */\r
+    if ( java.lang.String(suffix).contains('66') )\r
+        lib = lib + "/c66";\r
 \r
-    lib = "lib/" + name;\r
+    /* Get library name with path */\r
+    lib = lib + "/" + name;\r
     if (java.io.File(this.packageBase + lib).exists()) {\r
-        return lib;\r
+       return lib;\r
     }\r
 \r
-    /* could not find any library, throw exception */\r
-    throw Error("Library not found: " + name);\r
+    /* Could not find any library, throw exception */\r
+    throw new Error("\tLibrary not found: " + this.packageBase + lib);\r
 }\r
 \r
 /*\r
diff --git a/release.bat b/release.bat
new file mode 100644 (file)
index 0000000..3b92546
--- /dev/null
@@ -0,0 +1,3 @@
+xdc clean -PR .
+xdc -PR .
+xdc release
diff --git a/rm.h b/rm.h
index d74afb4c4b64f0b8d77c262dd9dbe8735c31126b..e41967289eb2bda043899d510cfcdbcc417ec365 100644 (file)
--- a/rm.h
+++ b/rm.h
@@ -49,9 +49,6 @@ extern "C" {
 /* Standard includes */
 #include <stdint.h>
 
-/* RM version */
-#include <ti/drv/rm/rmver.h>
-
 /**  @mainpage Resource Manager
  *
  *   @section intro  Introduction
index f5a6564224a147cf3d6d07fd6c764b093c1e7501..10d62976f5c748b54835faa7849098b1aae78302 100644 (file)
 \r
 IF DEFINED PARTNO GOTO partno_defined\r
 @REM Configure the Part Number\r
-set PARTNO=TCI6614\r
+set PARTNO=keystone2\r
 :partno_Defined\r
 \r
 IF DEFINED PDK_INSTALL_PATH GOTO pdk_defined\r
-set PDK_INSTALL_PATH=C:/ti/pdk_tci6614_1_00_00_11/packages\r
+set PDK_INSTALL_PATH=C:\ti\pdk_keystone2_1_00_00_07\packages\r
 :pdk_defined\r
 \r
 @REM ---------------------------------\r
 @REM Enabling MINI PACKAGE to be Built\r
 @REM ---------------------------------\r
-set MINI_PACKAGE=ON\r
+set MINI_PACKAGE=OFF\r
 @echo MINI PACKAGE is set to %MINI_PACKAGE%\r
 \r
 @REM This is the base location for the various tools. \r
@@ -39,7 +39,7 @@ REM RM LLD depends upon the following packages:-
 REM     - None\r
 \r
 @REM Specify the XDC Tool Path\r
-set XDC_INSTALL_PATH=C:/ti/xdctools_3_23_03_53\r
+set XDC_INSTALL_PATH=C:/ti/xdctools_3_24_05_48\r
 set XDCPATH=../../..;%XDC_INSTALL_PATH%/packages\r
 \r
 @REM Configure the XDCPATH\r
@@ -58,8 +58,8 @@ set PATH=%XDC_INSTALL_PATH%;%XDC_INSTALL_PATH%\bin;T:\Doxygen\doxygen\1.5.1-p1\b
 set PATH=%PATH%;T:\gen\InstallJammer\v1_2_05\r
 \r
 set PATH=%PATH%;%XDCCGROOT%\bin\r
-set PATH=%PATH%;T:\SDOApps\cg_xml\cg_xml_v2_20_00\bin\r
-set PATH=%PATH%;T:\ti_pdsp_cgen\20091120\r
+set PATH=%PATH%;T:\SDOApps\cg_xml\cg_xml_v2_30_00\bin\r
+set PATH=%PATH%;T:\ti_pdsp_cgen\20111216\r
 \r
 @REM Third Party Tools: HTML Help compiler.\r
 set PATH=%PATH%;T:\Doxygen\HTML_Help_Workshop\10-01-2007\r
@@ -73,4 +73,3 @@ Title RM LLD Build Environment
 \r
 @echo RM LLD Build Environment Configured \r
 @echo ---------------------------------------\r
-\r
index 9900a28817d0f8b74636bb103d2b0494ba588ae7..8972186ad07b810f9139751f77649662233c14f7 100644 (file)
--- a/src/rm.c
+++ b/src/rm.c
@@ -46,6 +46,7 @@
 \r
 /* RM external includes */\r
 #include <ti/drv/rm/rm.h>\r
+#include <ti/drv/rm/rmver.h>\r
 #include <ti/drv/rm/rm_services.h>\r
 #include <ti/drv/rm/rm_transport.h>\r
 \r
index 03ceae60c2421c39a6ac69ccf80c0a44e306a451..be768d9a1f16bebc1f94ef864deb20fa45467b85 100644 (file)
@@ -1,6 +1,6 @@
 -ccs.linkFile "PDK_INSTALL_PATH/ti/drv/rm/test/rm_test.c"
 -ccs.linkFile "PDK_INSTALL_PATH/ti/drv/rm/test/rm_osal.c"
--ccs.linkFile "PDK_INSTALL_PATH/ti/drv/rm/test/rm_test.cfg"
+-ccs.linkFile "PDK_INSTALL_PATH/ti/drv/rm/test/k2h/c66/bios/rm_test.cfg"
 -ccs.setCompilerOptions "-mv6600 -g -DDEVICE_K2H --diag_warning=225 -I${PDK_INSTALL_PATH}/ti/drv/rm" 
 -rtsc.enableRtsc
 
similarity index 97%
rename from test/rm_test.cfg
rename to test/k2h/c66/bios/rm_test.cfg
index cc7c4a32e3937487fecfc0c0aaeaa7898e936119..7f6dd12eb9a2e6aa8c8d2cc820125f4943a3d6c7 100644 (file)
@@ -92,7 +92,9 @@ SharedRegion.setEntryMeta(0,
     });
 
 /* PDK packages */
-var Csl = xdc.loadPackage('ti.csl');
+var devType = "k2h"
+var Csl = xdc.useModule('ti.csl.Settings');
+Csl.deviceType = devType;
 var Rm = xdc.loadPackage('ti.drv.rm'); 
     
 
index 000e2255a3a4a1ec99774edbee8270756bbecb17..2240808170bb82848baa5a2cdeb5c52682b20f33 100644 (file)
@@ -1,6 +1,6 @@
 -ccs.linkFile "PDK_INSTALL_PATH/ti/drv/rm/test/rm_test.c"
 -ccs.linkFile "PDK_INSTALL_PATH/ti/drv/rm/test/rm_osal.c"
--ccs.linkFile "PDK_INSTALL_PATH/ti/drv/rm/test/rm_test.cfg"
+-ccs.linkFile "PDK_INSTALL_PATH/ti/drv/rm/test/k2k/c66/bios/rm_test.cfg"
 -ccs.setCompilerOptions "-mv6600 -g -DDEVICE_K2K --diag_warning=225 -I${PDK_INSTALL_PATH}/ti/drv/rm" 
 -rtsc.enableRtsc
 
diff --git a/test/k2k/c66/bios/rm_test.cfg b/test/k2k/c66/bios/rm_test.cfg
new file mode 100644 (file)
index 0000000..de9ea1e
--- /dev/null
@@ -0,0 +1,100 @@
+/* 
+ * Copyright (c) 2012-2013, Texas Instruments Incorporated
+ * All rights reserved.
+ *
+ * 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 MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
+
+/*
+ *  Get the list of names that the build device supports.
+ *  I.e. ["CORE0", "CORE1", "CORE2" ... ]
+ */
+// var nameList = MultiProc.getDeviceProcNames();
+var nameList = ["CORE0", "CORE1"];
+
+/* 
+ *  Since this is a single-image example, we don't (at build-time) which 
+ *  processor we're building for.  We therefore supply 'null' 
+ *  as the local procName and allow IPC to set the local procId at runtime.
+ */
+MultiProc.setConfig(null, nameList);
+                           
+/* 
+ *  The SysStd System provider is a good one to use for debugging 
+ *  but does not have the best performance. Use xdc.runtime.SysMin
+ *  for better performance.
+ */
+var System   = xdc.useModule('xdc.runtime.System');
+var SysStd   = xdc.useModule('xdc.runtime.SysStd');
+System.SupportProxy = SysStd;
+
+/* Modules explicitly used in the application */
+var MessageQ    = xdc.useModule('ti.sdo.ipc.MessageQ');
+var Ipc         = xdc.useModule('ti.sdo.ipc.Ipc');
+var HeapBufMP   = xdc.useModule('ti.sdo.ipc.heaps.HeapBufMP');
+var MultiProc   = xdc.useModule('ti.sdo.utils.MultiProc');
+
+/* BIOS/XDC modules */
+var BIOS        = xdc.useModule('ti.sysbios.BIOS');
+BIOS.heapSize   = 0x10000;
+var Task        = xdc.useModule('ti.sysbios.knl.Task');
+
+Program.sectMap[".syncObj"] = new Program.SectionSpec();
+Program.sectMap[".syncObj"] = "MSMCSRAM";
+
+/* Synchronize all processors (this will be done in Ipc_start) */
+Ipc.procSync = Ipc.ProcSync_ALL;
+
+/* Shared Memory base address and length */
+var SHAREDMEM           = 0x0C000000;
+var SHAREDMEMSIZE       = 0x00100000;
+
+/* 
+ *  Need to define the shared region. The IPC modules use this
+ *  to make portable pointers. All processors need to add this
+ *  call with their base address of the shared memory region.
+ *  If the processor cannot access the memory, do not add it.
+ */ 
+var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
+SharedRegion.setEntryMeta(0,
+    { base: SHAREDMEM, 
+      len:  SHAREDMEMSIZE,
+      ownerProcId: 0,
+      isValid: true,
+      name: "DDR2 RAM",
+    });
+
+/* PDK packages */
+var devType = "k2k"
+var Csl = xdc.useModule('ti.csl.Settings');
+Csl.deviceType = devType;
+var Rm = xdc.loadPackage('ti.drv.rm'); 
+    
+