PDK-9454 : McSPI : Baremetal master slave not functional
authorsujith <sujith.s@ti.com>
Fri, 19 Mar 2021 11:31:50 +0000 (17:01 +0530)
committersujith <sujith.s@ti.com>
Fri, 19 Mar 2021 17:07:17 +0000 (22:37 +0530)
Root Cause : The slave on MPU 10, relies on SCI client APIs
to route interrupts. But MCU 10 hosts baremetal master
and cannot hosrt sci server

Fix : Moved the master to MCU 11 and hosted sci server on mcu 10

Test : Tested on j7200 and j721e
Works as expected on j7200 but DMA fails on j721e

Signed-off-by: sujith <sujith.s@ti.com>
packages/ti/drv/spi/example/mcspi_slavemode/j7200/linker_mcu.lds
packages/ti/drv/spi/example/mcspi_slavemode/j721e/linker_mcu.lds
packages/ti/drv/spi/spi_component.mk

index ff524c79f2cca53c599330491f55afa43d49bcc6..4c4596100e7cc9b8c89c3c8375dc5942ae6f204e 100755 (executable)
@@ -28,10 +28,9 @@ __SVC_STACK_SIZE = 0x1000;
 /* Memory Map */
 MEMORY
 {
-    /* 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 local view */
+    MCU0_R5F1_TCMA (X)       : origin=0x0        length=0x8000
+    MCU0_R5F1_TCMB0 (RWIX)   : origin=0x41010000 length=0x8000
 
     /* MCU0_R5F_1 SoC view */
     MCU0_R5F1_ATCM (RWIX)   : origin=0x41400000 length=0x8000
@@ -52,7 +51,8 @@ MEMORY
     /* j7200 Reserved Memory for DMSC Firmware */
     MSMC3_DMSC_FW  (RWIX)   : origin=0x700F0000 length=0x10000         /* 64KB */
 
-    DDR0    (RWIX)          : origin=0x80000000 length=0x80000000      /* 2GB */
+    DDR1    (RWIX)          : origin=0x90000000 length=0x100            /* first 4 bytes will hold sync word */
+    DDR0    (RWIX)          : origin=0x90000100 length=0x02000000 - 0x100
 }
 
 /* Section Configuration */
@@ -60,42 +60,42 @@ 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
-    .bootCode      : {} palign(8)      > MSMC3
-    .startupCode   : {} palign(8)      > MSMC3
-    .startupData   : {} palign(8)      > MSMC3, type = NOINIT
-    .text          : {} palign(8)      > MSMC3
-    .const         : {} palign(8)      > MSMC3
-    .cinit         : {} palign(8)      > MSMC3
-    .pinit         : {} palign(8)      > MSMC3
-    .bss           : {} align(4)       > MSMC3
-    .far           : {} align(4)       > MSMC3
-    .data          : {} palign(128)    > MSMC3
-    .boardcfg_data : {} palign(128)    > MSMC3
-    .sysmem        : {}                > MSMC3
-    .data_buffer   : {} palign(128)    > MSMC3
+    .rstvectors    : {} palign(8)      > MCU0_R5F1_TCMA
+    .intvecs       : {} palign(8)      > MCU0_R5F1_TCMA
+    .intc_text     : {} palign(8)      > MCU0_R5F1_TCMB0
+    .bootCode      : {} palign(8)      > MCU0_R5F1_TCMB0
+    .startupCode   : {} palign(8)      > MCU0_R5F1_TCMB0
+    .startupData   : {} palign(8)      > MCU0_R5F1_TCMB0, type = NOINIT
+    .text          : {} palign(8)      > DDR0
+    .const         : {} palign(8)      > DDR0
+    .cinit         : {} palign(8)      > DDR0
+    .pinit         : {} palign(8)      > DDR0
+    .bss           : {} align(4)       > DDR0
+    .far           : {} align(4)       > DDR0
+    .data          : {} palign(128)    > DDR0
+    .boardcfg_data : {} palign(128)    > DDR0
+    .sysmem        : {}                > DDR0
+    .data_buffer   : {} palign(128)    > DDR0
     .bss.devgroup* : {} align(4)       > DDR0
     .const.devgroup*: {} align(4)      > DDR0
 
     /* USB or any other LLD buffer for benchmarking */
-    .benchmark_buffer (NOLOAD) {} ALIGN (8) > MSMC3
+    .benchmark_buffer (NOLOAD) {} ALIGN (8) > DDR0
 
-    .stack      : {} align(4)       > MSMC3  (HIGH)
-    .irqStack   : {. = . + __IRQ_STACK_SIZE;} align(4)      > MSMC3  (HIGH)
+    .stack      : {} align(4)       > DDR0  (HIGH)
+    .irqStack   : {. = . + __IRQ_STACK_SIZE;} align(4)      > DDR0  (HIGH)
     RUN_START(__IRQ_STACK_START)
     RUN_END(__IRQ_STACK_END)
-    .fiqStack   : {. = . + __FIQ_STACK_SIZE;} align(4)      > MSMC3  (HIGH)
+    .fiqStack   : {. = . + __FIQ_STACK_SIZE;} align(4)      > DDR0  (HIGH)
     RUN_START(__FIQ_STACK_START)
     RUN_END(__FIQ_STACK_END)
-    .abortStack : {. = . + __ABORT_STACK_SIZE;} align(4)    > MSMC3  (HIGH)
+    .abortStack : {. = . + __ABORT_STACK_SIZE;} align(4)    > DDR0  (HIGH)
     RUN_START(__ABORT_STACK_START)
     RUN_END(__ABORT_STACK_END)
-    .undStack   : {. = . + __UND_STACK_SIZE;} align(4)      > MSMC3  (HIGH)
+    .undStack   : {. = . + __UND_STACK_SIZE;} align(4)      > DDR0  (HIGH)
     RUN_START(__UND_STACK_START)
     RUN_END(__UND_STACK_END)
-    .svcStack   : {. = . + __SVC_STACK_SIZE;} align(4)      > MSMC3  (HIGH)
+    .svcStack   : {. = . + __SVC_STACK_SIZE;} align(4)      > DDR0  (HIGH)
     RUN_START(__SVC_STACK_START)
     RUN_END(__SVC_STACK_END)
 }
index dba01e7a1464e47a41ed2691d14f06fc596449b3..b8c98bf1f36db9b12587393f7d719d7132d3a541 100755 (executable)
@@ -28,10 +28,9 @@ __SVC_STACK_SIZE = 0x1000;
 /* Memory Map */
 MEMORY
 {
-    /* 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 local view */
+    MCU0_R5F1_TCMA (X)       : origin=0x0        length=0x8000
+    MCU0_R5F1_TCMB0 (RWIX)   : origin=0x41010000 length=0x8000
 
     /* MCU0_R5F_1 SoC view */
     MCU0_R5F1_ATCM (RWIX)   : origin=0x41400000 length=0x8000
@@ -52,7 +51,8 @@ MEMORY
     /* j721e Reserved Memory for DMSC Firmware */
     MSMC3_DMSC_FW  (RWIX)   : origin=0x707F0000 length=0x10000         /* 64KB */
 
-    DDR0    (RWIX)          : origin=0x80000000 length=0x80000000      /* 2GB */
+    DDR1    (RWIX)          : origin=0x90000000 length=0x100            /* first 4 bytes will hold sync word */
+    DDR0    (RWIX)          : origin=0x90000100 length=0x02000000 - 0x100
 }
 
 /* Section Configuration */
@@ -60,42 +60,42 @@ 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
-    .bootCode      : {} palign(8)      > MSMC3
-    .startupCode   : {} palign(8)      > MSMC3
-    .startupData   : {} palign(8)      > MSMC3, type = NOINIT
-    .text          : {} palign(8)      > MSMC3
-    .const         : {} palign(8)      > MSMC3
-    .cinit         : {} palign(8)      > MSMC3
-    .pinit         : {} palign(8)      > MSMC3
-    .bss           : {} align(4)       > MSMC3
-    .far           : {} align(4)       > MSMC3
-    .data          : {} palign(128)    > MSMC3
-    .boardcfg_data : {} palign(128)    > MSMC3
-    .sysmem        : {}                > MSMC3
-    .data_buffer   : {} palign(128)    > MSMC3
+    .rstvectors    : {} palign(8)      > MCU0_R5F1_TCMA
+    .intvecs       : {} palign(8)      > MCU0_R5F1_TCMA
+    .intc_text     : {} palign(8)      > MCU0_R5F1_TCMB0
+    .bootCode      : {} palign(8)      > MCU0_R5F1_TCMB0
+    .startupCode   : {} palign(8)      > MCU0_R5F1_TCMB0
+    .startupData   : {} palign(8)      > MCU0_R5F1_TCMB0, type = NOINIT
+    .text          : {} palign(8)      > DDR0
+    .const         : {} palign(8)      > DDR0
+    .cinit         : {} palign(8)      > DDR0
+    .pinit         : {} palign(8)      > DDR0
+    .bss           : {} align(4)       > DDR0
+    .far           : {} align(4)       > DDR0
+    .data          : {} palign(128)    > DDR0
+    .boardcfg_data : {} palign(128)    > DDR0
+    .sysmem        : {}                > DDR0
+    .data_buffer   : {} palign(128)    > DDR0
     .bss.devgroup* : {} align(4)       > DDR0
     .const.devgroup*: {} align(4)      > DDR0
 
     /* USB or any other LLD buffer for benchmarking */
-    .benchmark_buffer (NOLOAD) {} ALIGN (8) > MSMC3
+    .benchmark_buffer (NOLOAD) {} ALIGN (8) > DDR0
 
-    .stack      : {} align(4)       > MSMC3  (HIGH)
-    .irqStack   : {. = . + __IRQ_STACK_SIZE;} align(4)      > MSMC3  (HIGH)
+    .stack      : {} align(4)       > DDR0  (HIGH)
+    .irqStack   : {. = . + __IRQ_STACK_SIZE;} align(4)      > DDR0  (HIGH)
     RUN_START(__IRQ_STACK_START)
     RUN_END(__IRQ_STACK_END)
-    .fiqStack   : {. = . + __FIQ_STACK_SIZE;} align(4)      > MSMC3  (HIGH)
+    .fiqStack   : {. = . + __FIQ_STACK_SIZE;} align(4)      > DDR0  (HIGH)
     RUN_START(__FIQ_STACK_START)
     RUN_END(__FIQ_STACK_END)
-    .abortStack : {. = . + __ABORT_STACK_SIZE;} align(4)    > MSMC3  (HIGH)
+    .abortStack : {. = . + __ABORT_STACK_SIZE;} align(4)    > DDR0  (HIGH)
     RUN_START(__ABORT_STACK_START)
     RUN_END(__ABORT_STACK_END)
-    .undStack   : {. = . + __UND_STACK_SIZE;} align(4)      > MSMC3  (HIGH)
+    .undStack   : {. = . + __UND_STACK_SIZE;} align(4)      > DDR0  (HIGH)
     RUN_START(__UND_STACK_START)
     RUN_END(__UND_STACK_END)
-    .svcStack   : {. = . + __SVC_STACK_SIZE;} align(4)      > MSMC3  (HIGH)
+    .svcStack   : {. = . + __SVC_STACK_SIZE;} align(4)      > DDR0  (HIGH)
     RUN_START(__SVC_STACK_START)
     RUN_END(__SVC_STACK_END)
 }
index e6bf5b0351f02535e0657041e08d1c86bd8d8d74..e165fd7731d1cbca8ba45dc48063c3d45c84e792 100755 (executable)
@@ -364,7 +364,7 @@ export MCSPI_Baremetal_Master_TestApp_BOARDLIST
 ifeq ($(SOC),$(filter $(SOC), am64x))
 MCSPI_Baremetal_Master_TestApp_$(SOC)_CORELIST = mcu1_0 mpu1_0 m4f_0
 else
-MCSPI_Baremetal_Master_TestApp_$(SOC)_CORELIST = mcu1_0
+MCSPI_Baremetal_Master_TestApp_$(SOC)_CORELIST = mcu1_1
 endif
 export MCSPI_Baremetal_Master_TestApp_$(SOC)_CORELIST
 ifeq ($(SOC),$(filter $(SOC), j721e am65xx j7200 am64x))
@@ -410,7 +410,7 @@ export MCSPI_Baremetal_Master_Dma_TestApp_BOARDLIST
 ifeq ($(SOC),$(filter $(SOC), am64x))
 MCSPI_Baremetal_Master_Dma_TestApp_$(SOC)_CORELIST = mcu1_0 mpu1_0
 else
-MCSPI_Baremetal_Master_Dma_TestApp_$(SOC)_CORELIST = mcu1_0
+MCSPI_Baremetal_Master_Dma_TestApp_$(SOC)_CORELIST = mcu1_1
 endif
 export MCSPI_Baremetal_Master_Dma_TestApp_$(SOC)_CORELIST
 ifeq ($(SOC),$(filter $(SOC), j721e am65xx j7200 am64x))