This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Compiler/AM5708: AM5708 Linker Issue

Part Number: AM5708

Tool/software: TI C/C++ Compiler

Tool/software:    TI C/C++ Compiler

IDE:                     CCS studio v 9.1.0.00010

SDK:                   C:\ti\pdk_am57xx_1_0_15\packages\ti\csl

Core:                  DSP Core , A15 core

SOC :                  AM5708

Board :               Custom Board with 512MB RAM

I have created bare-metal work space for DSP core and configured the two interrupts Timer using CSL Library. 

Timer Interrupt config :

#define TIMER_IRQ_NO                                         (32U)                 
#define TIMER_IRQ_XBAR_INST_NO                   CSL_XBAR_INST_DSP1_IRQ_32
#define TIMER_IRQ_XBAR_CPU_ID                      CSL_XBAR_IRQ_CPU_ID_DSP1

#define TIMER_BASE_ADDRESS                         SOC_TIMER9_BASE
#define TIMER_CONFIGURE                                 CM_L4PER_TIMER9_CLKCTRL
#define TIMER_IRQ_XBAR_INDEX                       CSL_XBAR_TIMER9_IRQ

1.Timer is Tested with 125 us interval separately.

2.  DSP core is not running if i configure DSP linker Address more than 0x83A00000  (DDR3_DSP: org = 0x83A00000 len = 0x02000000). Kindly anyone help to solve this issue.

    The Testing steps and Linker scripts are shared below

    1. The DSP core is hanging for below condition

               1.  Linker Address is more than 0x83A00000  and  if i enable the Timer interrupt the board 

     2. The DSP core is working for below condition

               1. Linker Address is range is( 0x80000000  -  0x83A00000) with  Timer interrupt and without timer interrupt 

               2. Linker Address is range is cross the  0x83A00000 the without Timer interrupt only dsp core is running

 DSP Linker configuration :

-stack 0x2000 /* SOFTWARE STACK SIZE */
-heap 0x2000 /* HEAP AREA SIZE */

/* SPECIFY THE SYSTEM MEMORY MAP */
MEMORY
{
RST_START: org = 0x00800000 len = 0x0300
IRAM_MEM: org = 0x00800300 len = 0x7c00
MMU_TLB: org = 0x4031C000 len = 0x000004000
DDR3_DSP: org = 0x83A00000 len = 0x02000000 /* 32 MB For DSP Core*/
DDR3_A15: org = 0x90000000 len = 0x0A000000 /* 160 MB For A15 Core*/
DDR3_SM: org= 0x9D000000 len = 0x01000000 /* 16 MB for Shared memory*/
}

/* SPECIFY THE SECTIONS ALLOCATION INTO MEMORY */
SECTIONS
{
.cachetest_ddrbuf > DDR3_DSP
GROUP: load > DDR3_DSP
{
.bss: /* UNINITIALIZED OR ZERO INITIALIZED */
.neardata:
.rodata:
}
BOARD_IO_DELAY_DATA : load > IRAM_MEM
BOARD_IO_DELAY_CODE : load > IRAM_MEM
.csl_vect : load > RST_START
.vects : load > IRAM_MEM
.l2_int : load > IRAM_MEM
.pmIdleFunc : load > IRAM_MEM
.init : load > DDR3_DSP
.cio : load > DDR3_DSP

.text : load > DDR3_DSP /* CODE */
.data : load > DDR3_DSP /* INITIALIZED GLOBAL AND STATIC VARIABLES. */
/* GLOBAL & STATIC VARIABLES. */
RUN_START(bss_start)
RUN_END(bss_end)
.const : load > DDR3_DSP /* GLOBAL CONSTANTS */
.cinit : load > DDR3_DSP
.stack : load > DDR3_DSP /* SOFTWARE SYSTEM STACK */
.far : load > DDR3_DSP
.plt : load > DDR3_DSP
.fardata : load > DDR3_DSP
.switch : load > DDR3_DSP
.my_sect_ddr : load > DDR3_DSP
.sysmem : load > DDR3_DSP
}