Resource: Update to handle resource table area using linker symbol
authorSam Nelson <sam.nelson@ti.com>
Wed, 11 Apr 2018 20:49:30 +0000 (16:49 -0400)
committerSam Nelson <sam.nelson@ti.com>
Thu, 9 Aug 2018 20:01:32 +0000 (16:01 -0400)
- Modified to  place memory only if loadSegment is defined
- For new platforms, SYSBIOS will not handle platform memory map.
So the linker command file is external. Only way to get the
start address is using the external linker symbol.
- Added new variable loadSymbol to allow setting the tableptr using
symbol

Signed-off-by: Sam Nelson <sam.nelson@ti.com>
packages/ti/ipc/remoteproc/Resource.xdc
packages/ti/ipc/remoteproc/Resource.xs

index 8051cfc29bcb5cebb506536e4d5da2eeb90a2a42..33124aaf6f39cf709da02ace5bee4b7dcb116d72 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011-2013, Texas Instruments Incorporated
+ * Copyright (c) 2011-2018, Texas Instruments Incorporated
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -56,6 +56,14 @@ module Resource {
      */
     metaonly config String loadSegment;
 
+    /*!
+     *  @def    Resource_loadSymbol
+     *  @brief  If loadSymbol is defined, loadAddr is overridden with the
+     *          loadSymbol as external pointer
+     */
+    metaonly config String loadSymbol;
+
+
     /*!
      *  @def    Resource_traceOnly
      *  @brief  Set traceOnly to true in order to get an image with trace
index 59a4e696d09d51bbb99ba36cf403a48d470448b8..f4c41220e04452d95fe454ca84358a6c79f0ad84 100644 (file)
@@ -57,12 +57,11 @@ function module$use()
             this.$logError("Resource.loadSegment not found", this);
         }
         addr = segment.base;
+        /* The .resource_table section should always be at the segment base */
+        Program.sectMap[".resource_table"] = new Program.SectionSpec();
+        Program.sectMap[".resource_table"].type = "NOINIT";
+        Program.sectMap[".resource_table"].loadAddress = addr;
     }
-
-    /* The .resource_table section should always be at the segment base */
-    Program.sectMap[".resource_table"] = new Program.SectionSpec();
-    Program.sectMap[".resource_table"].type = "NOINIT";
-    Program.sectMap[".resource_table"].loadAddress = addr;
 }
 
 function module$static$init(obj, params)
@@ -80,8 +79,11 @@ function module$static$init(obj, params)
         if (null == segment) {
             this.$logError("Resource.loadSegment not found", this);
         }
-//        print("Resource.loadSegment", Resource.loadSegment);
         addr = segment.base;
+    } else {
+        if (Resource.loadSymbol != undefined) {
+            addr = $externPtr(Resource.loadSymbol);
+        }
     }
 
     /* Assign the addresses for the module state variables */