Create Keystone platform instances with no external DDR defined
authorRobert Tivy <rtivy@ti.com>
Tue, 8 Apr 2014 23:11:20 +0000 (16:11 -0700)
committerChris Ring <cring@ti.com>
Wed, 9 Apr 2014 19:57:51 +0000 (12:57 -0700)
On MAR-based cores (i.e., C6x), SYS/BIOS will, by default, set the
"cacheable" bit for any external memory that it "sees", i.e., any
external memory that is defined for the platform.  This happens regardless
of whether or not that memory is used for program placement.  This
cacheable-ness is somewhat hidden to the programmer.

In order to offer better control of this, Keystone platform instances are
created with no external memory defined.  This allows all MAR pages to be
tagged "non-cached" by default, and the programmer is free to set MAR bits
to their liking.

ipc-bios.bld
packages/ti/ipc/tests/package.bld

index defbb129233a83188d1e5566b3de9f308ffd6d8f..1dc417a90fe97f93a825acff26cf6283791bc695 100644 (file)
@@ -191,19 +191,19 @@ for (arg = 0; arg < arguments.length; arg++) {
     if (targetName.match(/elf\.C66$/)) {
         switch (platform) {
             case '66AK2E':
-                target.platforms.$add("ti.platforms.evmC66AK2E");
+                target.platforms.$add("ti.platforms.evmC66AK2E:core0");
                 break;
 
             case 'TCI6630':
-                target.platforms.$add("ti.platforms.evmTCI6630K2L");
+                target.platforms.$add("ti.platforms.evmTCI6630K2L:core0");
                 break;
 
             case 'TCI6636':
-                target.platforms.$add("ti.platforms.evmTCI6636K2H");
+                target.platforms.$add("ti.platforms.evmTCI6636K2H:core0");
                 break;
 
             case 'TCI6638':
-                target.platforms.$add("ti.platforms.evmTCI6638K2K");
+                target.platforms.$add("ti.platforms.evmTCI6638K2K:core0");
                 break;
 
             case 'DRA7XX':
index e8dcaf955e9fd13c6a5df587b0b9027e18c04048..953bfb5d525eb9ab1b8a3cc524e259a2ebe0addd 100644 (file)
@@ -443,6 +443,33 @@ Build.platformTable["ti.platforms.evmDRA7XX:ipu1"] = {
     stackMemory: "EXT_DATA",
 };
 
+/*
+ * Create Keystone platform instances without any external memory.
+ * The main reason for this is to prevent SYS/BIOS from tagging
+ * any of the external memory address space as "cacheable" in MAR
+ * register settings.
+ *
+ * All the tests currently build just one Keystone DSP executable
+ * that is used for all cores.  One could create a separate platform
+ * instance for each core on a given Keystone part, and then use that
+ * particular core's platform instance when building for that core.
+ */
+Build.platformTable["ti.platforms.evmC66AK2E:core0"] = {
+    externalMemoryMap: [ ]
+};
+
+Build.platformTable["ti.platforms.evmTCI6630K2L:core0"] = {
+    externalMemoryMap: [ ]
+};
+
+Build.platformTable["ti.platforms.evmTCI6636K2H:core0"] = {
+    externalMemoryMap: [ ]
+};
+
+Build.platformTable["ti.platforms.evmTCI6638K2K:core0"] = {
+    externalMemoryMap: [ ]
+};
+
 for (var i = 0; i < Build.targets.length; i++) {
     var targ = Build.targets[i];