am65xx - Add dummy interrupt and fix linker command file
authorPrasad Jondhale <prasad.jondhale@ti.com>
Fri, 11 Dec 2020 11:00:37 +0000 (16:30 +0530)
committerPrasad Jondhale <prasad.jondhale@ti.com>
Fri, 11 Dec 2020 11:00:37 +0000 (16:30 +0530)
Signed-off-by: Prasad Jondhale <prasad.jondhale@ti.com>
packages/ti/drv/emac/test/EmacLoopbackTest/am65xx/emacUnitTest_r5.cfg
packages/ti/drv/emac/test/EmacLoopbackTest/am65xx/emac_linker_r5.lds
packages/ti/transport/ndk/nimu/example/am65xx/nimuExample_r5.cfg
packages/ti/transport/ndk/nimu/example/am65xx/nimu_linker_r5.lds

index 95ef689cdd5a942fedcdcf71781e1d3702ad9c29..b1965c162216a4066d728e5ea63f97823c511139 100755 (executable)
@@ -139,11 +139,20 @@ BIOS.libType = BIOS.LibType_Custom;
 var Timer = xdc.useModule('ti.sysbios.timers.dmtimer.Timer');
 Timer.checkFrequency = false;
 
+/* 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#352 as per cslr_intr_mcu0.h it is a reserved interrupt not connected to any
+ * peripheral interrupt sources
+ */
+Hwi.dummyIRQ                   = 352;
+
 var Reset = xdc.useModule("xdc.runtime.Reset");
 Reset.fxns[Reset.fxns.length++] = "&utilsCopyVecs2ATcm";
 
 Program.sectMap[".bss:emac_ddr_mem"] = "DDR0";
-Program.sectMap[".bss:emac_msmc_mem"] = "MSMC3_H";
+Program.sectMap[".bss:emac_msmc_mem"] = "MSMC3";
 Program.sectMap[".vecs"] = "RESET_VECTORS";
 /*
  * Initialize MPU and enable it
index 5bb3443d361f98d8870b5815a2888b1fab62172f..4ac1f37c75942fb6fd25c907e67a9deabfaf3944 100644 (file)
@@ -1,61 +1,34 @@
-/*----------------------------------------------------------------------------*/
-/* File: emac_linker_r5.cmd                                                  */
-/* Description:                                                                                                                                  */
-/*    Link command file for AM65XX M4 MCU 0 view                                                         */
-/*       TI ARM Compiler version 15.12.3 LTS or later                                                    */
-/*                                                                            */
-/*    Platform: QT                                                            */
-/* (c) Texas Instruments 2017, All rights reserved.                           */
-/*----------------------------------------------------------------------------*/
-/*  History:                                                                                                                         *'
-/*    Aug 26th, 2016 Original version .......................... Loc Truong   */
-/*    Aug 01th, 2017 new TCM mem map  .......................... Loc Truong   */
-/*    Nov 07th, 2017 Changes for R5F Init Code.................. Vivek Dhande */
-/*----------------------------------------------------------------------------*/
-/* Linker Settings                                                            */
-/* Standard linker options                                                                                                       */
---retain="*(.intvecs)"
---retain="*(.intc_text)"
---retain="*(.rstvectors)"
+
+/* This is standard linker options used by examples applications and tests    */
+/* Please refer user guide that came with this release for more details       */
+/* on which sections could be used at load time and runtime                   */
+
 --fill_value=0
---entry_point=ti_sysbios_family_arm_v7r_keystone3_Hwi_vectors /* Default BIOS */
---retain="*(.utilsCopyVecsToAtcm)"
+/* Retain entry point */
+-e __VECS_ENTRY_POINT
 
 /*----------------------------------------------------------------------------*/
-/* Memory Map                                                                 */
+/* Memory Sections                                                            */
 MEMORY
 {
-    VECTORS (X)                : origin=0x41C7F000 length=0x1000
-    /*  Reset Vectors base address(RESET_VECTORS) should be 64 bytes aligned  */
-    RESET_VECTORS (X)          : origin=0x41C00000 length=0x100
-    /* MCU0_R5F_0 local view */
-    MCU0_R5F_TCMA_SBL_RSVD (X) : origin=0x0            length=0x100
-    MCU0_R5F_TCMA (X)          : origin=0x100          length=0x8000 - 0x100
-    MCU0_R5F_TCMB0 (RWIX)      : origin=0x41010000     length=0x8000
-
-    /* MCU0_R5F_1 SoC view */
-    MCU0_R5F1_ATCM (RWIX)      : origin=0x41400000 length=0x8000
-    MCU0_R5F1_BTCM (RWIX)      : origin=0x41410000 length=0x8000
-
-    /* Fully avaialble for apps. Used by SBL to load SYSFW */
-    OCMRAM_LOW         (RWIX)          : origin=0x41C00100 length=0x40600 - 0x100           /* ~257KB */
-
-    /* MCU0 memory used for SBL. Avaiable after boot for app starts for dynamic use */
-    SBL_RESERVED       (RWIX)  : origin=0x41C40600 length=0x60000 - 0x40600         /* ~126KB */
-
-    /* MCU0 share locations */
-    OCMRAM     (RWIX)          : origin=0x41C60000 length=0x20000 - 0x1000          /* ~124KB */
-
-    /* AM65XX M4 locations */
-    MSMC3       (RWIX)          : origin=0x70000000 length=0xF0000             /* 1MB - 64K */
-    MSMC3_H (RWIX)              : origin=0x70100000 length=0xE2000             /* 1MB -56K */
-
-    /* Reserved for DMSC */
-    MSMC3_DMSC (RWIX)           : origin=0x701F0000 length=0x10000             /* 64K */
-
-    DDR0    (RWIX)             : origin=0x80000000 length=0x80000000           /* 2GB */
-
-/* Additional memory settings  */
+    /* Refer the user guide for details on persistence of these sections */
+    /* Also, when these memories can be used by apps */
+    MCU0_ATCM_NOT_USED          (R)     : origin=0x0        length=0x7FFF
+    MCU0_BTCM_NOT_USED          (R)     : origin=0x41010000 length=0x7FFF
+    /* Used by SBL, can be used after APPs is started */
+    MCU_MSRAM_RSVD_UNUSED       (R)     : origin=0x41C00000 length=0x200
+    MCU_MSRAM_RSVD_SBL          (RWIX)  : origin=0x41C00200 length=0x3DE00
+
+    VECTORS                     (RWIX)  : origin=0x41C3E000 length=0x100
+    RESET_VECTORS               (RWIX)  : origin=0x41C3E100 length=0x1000
+    OCMRAM                      (RWIX)  : origin=0x41C3F100 length=0x40F00
+
+    /* COMPUTE_CLUSTER0_MSMC_SRAM */
+    MSMC3                       (RWIX) : origin=0x70000000 length=0x1EFC00
+    /* The origin and length is determined by board cfg, */
+    /* refer user guide for details */
+    MSMC3_RSVD_DMSC             (RWIX)  : origin=0x701F0000 length=0x1000
+    DDR0                        (RWIX)  : origin=0x80000000 length=0x7FFFFFE4
 
 }  /* end of MEMORY */
 
@@ -64,37 +37,51 @@ MEMORY
 
 SECTIONS
 {
-/* 'intvecs' and 'intc_text' sections shall be placed within                  */
-/* a range of +\- 16 MB                                                       */
-    .intvecs   : {} palign(8)          > VECTORS
-    .intc_text         : {} palign(8)          > VECTORS
-    .rstvectors : {} palign(8)             > RESET_VECTORS
-    .utilsCopyVecsToAtcm : {} palign(8) > MCU0_R5F_TCMB0
-    .text      : {} palign(8)          > MSMC3
-    .const     : {} palign(8)          > MSMC3
-    .cinit     : {} palign(8)          > MSMC3
-    .pinit     : {} palign(8)          > MSMC3
+    /* Place sysbios entry point - starts */
+    .vecs : { *(.vecs) } palign(8) > VECTORS
+    .vecs : { __VECS_ENTRY_POINT = .; } > VECTORS
+
+    xdc.meta (COPY): { *(xdc.meta) } > OCMRAM
+    .init_text  : {
+                     boot.*(.text)
+                     *(.text:ti_sysbios_family_arm_MPU_*)
+                     *(.text:ti_sysbios_family_arm_v7r_Cache_*)
+                  }  palign(8) > OCMRAM
+
+    .text:xdc_runtime_Startup_reset__I: {} palign(8) > OCMRAM
+
+    .bootCode       : {} palign(8) > OCMRAM
+    .startupCode    : {} palign(8) > OCMRAM
+    .startupData    : {} palign(8) > OCMRAM, type = NOINIT
+    .utilsCopyVecsToAtcm : {} palign(8) > OCMRAM
+
+    /* Place sysbios entry point - ends */
+
+    .text    : {} palign(8) > MSMC3
+    .const   : {} palign(8) > MSMC3
+    .cinit   : {} palign(8) > MSMC3
+    .pinit   : {} palign(8) > MSMC3
 
     /* For NDK packet memory, we need to map this sections before .bss*/
     .bss:NDK_MMBUFFER  (NOLOAD) {} ALIGN (128) > DDR0
     .bss:NDK_PACKETMEM (NOLOAD) {} ALIGN (128) > DDR0
 
-    .bss       : {} align(4)           > MSMC3
-    .far       : {} align(4)           > DDR0
-    .data      : {} palign(128)        > MSMC3
-    .boardcfg_data        : {} palign(128)           > MSMC3
-       .sysmem         : {}                            > MSMC3
-       .stack          : {} align(4)           > MSMC3  (HIGH)
+    .bss    : {} align(8)   > DDR0
+    .far    : {} align(8)   > DDR0
+    .data   : {} palign(128)> MSMC3
+    .boardcfg_data : {} palign(128) > MSMC3
+    .sysmem : {} align(8)   > MSMC3
+    .stack  : {} align(8)   > MSMC3  (HIGH)
 
     /* SA sections */
-    .scBufs            : {} align(4)           > DDR0
-    .saSrcBuffers      : {} align(4)           > DDR0
-    .saDstBuffers      : {} align(4)           > DDR0
+    .scBufs         : {} align(8)   > DDR0
+    .saSrcBuffers   : {} align(8)   > DDR0
+    .saDstBuffers   : {} align(8)   > DDR0
 
-    /* USB or any other LLD buffer for benchmarking */
+    /* LLD buffer for benchmarking */
     .benchmark_buffer (NOLOAD) {} ALIGN (8) > DDR0
 
-/* Additional sections settings        */
+    /* Additional sections settings */
 
 }  /* end of SECTIONS */
 
index 7ccdb036d547d24b9ffbd09503182fc14a018c49..05085097706a3fe68e4e23b69454089e79df7e00 100755 (executable)
@@ -187,6 +187,15 @@ else
 var Timer = xdc.useModule('ti.sysbios.timers.dmtimer.Timer');
 Timer.checkFrequency = false;
 
+/* 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#352 as per cslr_intr_mcu0.h it is a reserved interrupt not connected to any
+ * peripheral interrupt sources
+ */
+Hwi.dummyIRQ                   = 352;
+
 var Reset = xdc.useModule("xdc.runtime.Reset");
 Reset.fxns[Reset.fxns.length++] = "&utilsCopyVecs2ATcm";
 
@@ -199,7 +208,7 @@ for (var i = 0; i < 4; i++) {
 }
 
 Program.sectMap[".bss:nimu_ddr_mem"] = "DDR0";
-Program.sectMap[".bss:nimu_msmc_mem"] = "MSMC3_H";
+Program.sectMap[".bss:nimu_msmc_mem"] = "MSMC3";
 /*
  * Initialize MPU and enable it
  *
index cf0b99c23ac7f4e191a1148e2364452c0d58f749..4ac1f37c75942fb6fd25c907e67a9deabfaf3944 100644 (file)
@@ -1,97 +1,87 @@
-/*----------------------------------------------------------------------------*/
-/* File: k3m4_r5f_linker.cmd                                                  */
-/* Description:                                                                                                                                  */
-/*    Link command file for AM65XX M4 MCU 0 view                                                         */
-/*       TI ARM Compiler version 15.12.3 LTS or later                                                    */
-/*                                                                            */
-/*    Platform: QT                                                            */
-/* (c) Texas Instruments 2017-2019, All rights reserved.                           */
-/*----------------------------------------------------------------------------*/
-/*  History:                                                                                                                         *'
-/*    Aug 26th, 2016 Original version .......................... Loc Truong   */
-/*    Aug 01th, 2017 new TCM mem map  .......................... Loc Truong   */
-/*    Nov 07th, 2017 Changes for R5F Init Code.................. Vivek Dhande */
-/*----------------------------------------------------------------------------*/
-/* Linker Settings                                                            */
-/* Standard linker options                                                                                                       */
---retain="*(.intvecs)"
---retain="*(.intc_text)"
---retain="*(.rstvectors)"
+
+/* This is standard linker options used by examples applications and tests    */
+/* Please refer user guide that came with this release for more details       */
+/* on which sections could be used at load time and runtime                   */
+
 --fill_value=0
---entry_point=ti_sysbios_family_arm_v7r_keystone3_Hwi_vectors /* Default BIOS */
---retain="*(.utilsCopyVecsToAtcm)"
+/* Retain entry point */
+-e __VECS_ENTRY_POINT
 
 /*----------------------------------------------------------------------------*/
-/* Memory Map                                                                 */
+/* Memory Sections                                                            */
 MEMORY
 {
-    VECTORS (X)                : origin=0x41C7F000 length=0x1000
-    /*  Reset Vectors base address(RESET_VECTORS) should be 64 bytes aligned  */
-    RESET_VECTORS (X)          : origin=0x41C00000 length=0x100
-    /* MCU0_R5F_0 local view */
-    MCU0_R5F_TCMA_SBL_RSVD (X) : origin=0x0            length=0x100
-    MCU0_R5F_TCMA (X)          : origin=0x100          length=0x8000 - 0x100
-    MCU0_R5F_TCMB0 (RWIX)      : origin=0x41010000     length=0x8000
+    /* Refer the user guide for details on persistence of these sections */
+    /* Also, when these memories can be used by apps */
+    MCU0_ATCM_NOT_USED          (R)     : origin=0x0        length=0x7FFF
+    MCU0_BTCM_NOT_USED          (R)     : origin=0x41010000 length=0x7FFF
+    /* Used by SBL, can be used after APPs is started */
+    MCU_MSRAM_RSVD_UNUSED       (R)     : origin=0x41C00000 length=0x200
+    MCU_MSRAM_RSVD_SBL          (RWIX)  : origin=0x41C00200 length=0x3DE00
+
+    VECTORS                     (RWIX)  : origin=0x41C3E000 length=0x100
+    RESET_VECTORS               (RWIX)  : origin=0x41C3E100 length=0x1000
+    OCMRAM                      (RWIX)  : origin=0x41C3F100 length=0x40F00
+
+    /* COMPUTE_CLUSTER0_MSMC_SRAM */
+    MSMC3                       (RWIX) : origin=0x70000000 length=0x1EFC00
+    /* The origin and length is determined by board cfg, */
+    /* refer user guide for details */
+    MSMC3_RSVD_DMSC             (RWIX)  : origin=0x701F0000 length=0x1000
+    DDR0                        (RWIX)  : origin=0x80000000 length=0x7FFFFFE4
 
-    /* MCU0_R5F_1 SoC view */
-    MCU0_R5F1_ATCM (RWIX)      : origin=0x41400000 length=0x8000
-    MCU0_R5F1_BTCM (RWIX)      : origin=0x41410000 length=0x8000
-
-    /* Fully avaialble for apps. Used by SBL to load SYSFW */
-    OCMRAM_LOW         (RWIX)          : origin=0x41C00100 length=0x40600 - 0x100           /* ~257KB */
-
-    /* MCU0 memory used for SBL. Avaiable after boot for app starts for dynamic use */
-    SBL_RESERVED       (RWIX)  : origin=0x41C40600 length=0x60000 - 0x40600         /* ~126KB */
+}  /* end of MEMORY */
 
-    /* MCU0 share locations */
-    OCMRAM     (RWIX)          : origin=0x41C60000 length=0x20000 - 0x1000          /* ~124KB */
+/*----------------------------------------------------------------------------*/
+/* Section Configuration                                                      */
 
-    /* AM65XX M4 locations */
-    MSMC3       (RWIX)          : origin=0x70000000 length=0xF0000             /* 1MB - 64K */
-    MSMC3_H (RWIX)              : origin=0x70100000 length=0xE2000             /* 1MB -56K */
+SECTIONS
+{
+    /* Place sysbios entry point - starts */
+    .vecs : { *(.vecs) } palign(8) > VECTORS
+    .vecs : { __VECS_ENTRY_POINT = .; } > VECTORS
 
-    /* Reserved for DMSC */
-    MSMC3_DMSC (RWIX)           : origin=0x701F0000 length=0x10000             /* 64K */
+    xdc.meta (COPY): { *(xdc.meta) } > OCMRAM
+    .init_text  : {
+                     boot.*(.text)
+                     *(.text:ti_sysbios_family_arm_MPU_*)
+                     *(.text:ti_sysbios_family_arm_v7r_Cache_*)
+                  }  palign(8) > OCMRAM
 
-    DDR0    (RWIX)             : origin=0x80000000 length=0x80000000           /* 2GB */
+    .text:xdc_runtime_Startup_reset__I: {} palign(8) > OCMRAM
 
-/* Additional memory settings  */
+    .bootCode       : {} palign(8) > OCMRAM
+    .startupCode    : {} palign(8) > OCMRAM
+    .startupData    : {} palign(8) > OCMRAM, type = NOINIT
+    .utilsCopyVecsToAtcm : {} palign(8) > OCMRAM
 
-}  /* end of MEMORY */
+    /* Place sysbios entry point - ends */
 
-/*----------------------------------------------------------------------------*/
-/* Section Configuration                                                      */
+    .text    : {} palign(8) > MSMC3
+    .const   : {} palign(8) > MSMC3
+    .cinit   : {} palign(8) > MSMC3
+    .pinit   : {} palign(8) > MSMC3
 
-SECTIONS
-{
-/* 'intvecs' and 'intc_text' sections shall be placed within                  */
-/* a range of +\- 16 MB                                                       */
-    .intvecs   : {} palign(8)          > VECTORS
-    .intc_text         : {} palign(8)          > VECTORS
-    .rstvectors : {} palign(8)             > RESET_VECTORS
-    .utilsCopyVecsToAtcm : {} palign(8) > MCU0_R5F_TCMB0
-    .text      : {} palign(8)          > MSMC3
-    .const     : {} palign(8)          > DDR0
-    .cinit     : {} palign(8)          > DDR0
-    .pinit     : {} palign(8)          > DDR0
     /* For NDK packet memory, we need to map this sections before .bss*/
     .bss:NDK_MMBUFFER  (NOLOAD) {} ALIGN (128) > DDR0
     .bss:NDK_PACKETMEM (NOLOAD) {} ALIGN (128) > DDR0
-    .bss       : {} align(4)           > DDR0 
-    .far       : {} align(4)           > DDR0
-    .data      : {} palign(128)        > DDR0
-    .boardcfg_data        : {} palign(128)           > DDR0
-       .sysmem         : {}                            > DDR0
-       .stack          : {} align(4)           > DDR0
+
+    .bss    : {} align(8)   > DDR0
+    .far    : {} align(8)   > DDR0
+    .data   : {} palign(128)> MSMC3
+    .boardcfg_data : {} palign(128) > MSMC3
+    .sysmem : {} align(8)   > MSMC3
+    .stack  : {} align(8)   > MSMC3  (HIGH)
+
     /* SA sections */
-    .scBufs            : {} align(4)           > DDR0
-    .saSrcBuffers      : {} align(4)           > DDR0
-    .saDstBuffers      : {} align(4)           > DDR0
+    .scBufs         : {} align(8)   > DDR0
+    .saSrcBuffers   : {} align(8)   > DDR0
+    .saDstBuffers   : {} align(8)   > DDR0
 
-    /* USB or any other LLD buffer for benchmarking */
+    /* LLD buffer for benchmarking */
     .benchmark_buffer (NOLOAD) {} ALIGN (8) > DDR0
 
-/* Additional sections settings        */
+    /* Additional sections settings */
 
 }  /* end of SECTIONS */