Hi,
I have LPCXpresso54608 evaluation board ( OM13092 ). I use Mcuxpresso Ide and sdk examples. I chose one of sdk examples and wanted to relocate all data in external sdram. I added pin_mux.c settings to use sdram and used a function to init sdram in main function ( BOARD_InitSDRAM() ). Then, I built and released project.
I got a linker script file ( driver_examples_emc_emc_sdram_Release.ld ) at the location
"\MCUXpressoIDE_10.1.1_606\workspace\driver_examples_emc_emc_sdram\Release".
Opened it and arranged little bit and activated it from Project menu. Project>Properties>C/C++ Build>Settings>Tool Settings>MCU Linker>Managed Linker Script. Deactivated Manage linker scripts and selected my own linker script and its path.
I know almost nothing about linker scripts file so I might(definitely did) make a mistake. and then I see datas and others files located in Board_Sdram. But I could not press 'Resume Debug Session' button because it was unvisible. I pressed button 'Terminate All debug Sessions' and I got a new error window I made a mistake somewhere and I am asking where I might make a mistake ?
What did I do in Release.ld file? Here it is.( just deleted all 'SRAM_0_1_2_3' texts and wrote 'BOARD_SDRAM' instead.)
/*
 * GENERATED FILE - DO NOT EDIT
 * (c) Code Red Technologies Ltd, 2008-2013
 * (c) NXP Semiconductors 2013-2018
 * Generated linker script file for LPC54608J512
 * Created from linkscript.ldt by FMCreateLinkLibraries
 * Using Freemarker v2.3.23
 * MCUXpresso IDE v10.1.1 [Build 606] [2018-01-02] on Mar 14, 2018 1:57:33 PM
 */
INCLUDE "mmdriver_examples_emc_emc_sdram_Release_library.ld"
INCLUDE "mmdriver_examples_emc_emc_sdram_Release_memory.ld"
ENTRY(ResetISR)
SECTIONS
{
 .text_Flash2 : ALIGN(4)
 {
 FILL(0xff)
 *(.text_Flash2*) /* for compatibility with previous releases */
 *(.text_BOARD_FLASH*) /* for compatibility with previous releases */
 *(.text.$Flash2*)
 *(.text.$BOARD_FLASH*) *(.rodata.$Flash2*)
 *(.rodata.$BOARD_FLASH*) } > BOARD_FLASH
/* MAIN TEXT SECTION */
 .text : ALIGN(4)
 {
 FILL(0xff)
 __vectors_start__ = ABSOLUTE(.) ;
 KEEP(*(.isr_vector))
 /* Global Section Table */
 . = ALIGN(4) ;
 __section_table_start = .;
 __data_section_table = .;
 LONG(LOADADDR(.data));
 LONG( ADDR(.data));
 LONG( SIZEOF(.data));
 LONG(LOADADDR(.data_RAM2));
 LONG( ADDR(.data_RAM2));
 LONG( SIZEOF(.data_RAM2));
 LONG(LOADADDR(.data_RAM3));
 LONG( ADDR(.data_RAM3));
 LONG( SIZEOF(.data_RAM3));
 LONG(LOADADDR(.data_RAM4));
 LONG( ADDR(.data_RAM4));
 LONG( SIZEOF(.data_RAM4));
 __data_section_table_end = .;
 __bss_section_table = .;
 LONG( ADDR(.bss));
 LONG( SIZEOF(.bss));
 LONG( ADDR(.bss_RAM2));
 LONG( SIZEOF(.bss_RAM2));
 LONG( ADDR(.bss_RAM3));
 LONG( SIZEOF(.bss_RAM3));
 LONG( ADDR(.bss_RAM4));
 LONG( SIZEOF(.bss_RAM4));
 __bss_section_table_end = .;
 __section_table_end = . ;
 /* End of Global Section Table */
*(.after_vectors*)
} >PROGRAM_FLASH
.text : ALIGN(4)
 {
 *(.text*)
 *(.rodata .rodata.* .constdata .constdata.*)
 . = ALIGN(4);
 } > PROGRAM_FLASH
 /*
 * for exception handling/unwind - some Newlib functions (in common
 * with C++ and STDC++) use this. 
 */
 .ARM.extab : ALIGN(4) 
 {
 *(.ARM.extab* .gnu.linkonce.armextab.*)
 } > PROGRAM_FLASH
 __exidx_start = .;
.ARM.exidx : ALIGN(4)
 {
 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
 } > PROGRAM_FLASH
 __exidx_end = .;
_etext = .;
 
 
 /* USB_RAM */
 .m_usb_data (NOLOAD) :
 {
 *(m_usb_global)
 } > USB_RAM
 /* DATA section for SRAMX */
 .data_RAM2 : ALIGN(4)
 {
 FILL(0xff)
 PROVIDE(__start_data_RAM2 = .) ;
 *(.ramfunc.$RAM2)
 *(.ramfunc.$SRAMX)
 *(.data.$RAM2*)
 *(.data.$SRAMX*)
 . = ALIGN(4) ;
 PROVIDE(__end_data_RAM2 = .) ;
 } > SRAMX AT>PROGRAM_FLASH
/* DATA section for USB_RAM */
 .data_RAM3 : ALIGN(4)
 {
 FILL(0xff)
 PROVIDE(__start_data_RAM3 = .) ;
 *(.ramfunc.$RAM3)
 *(.ramfunc.$USB_RAM)
 *(.data.$RAM3*)
 *(.data.$USB_RAM*)
 . = ALIGN(4) ;
 PROVIDE(__end_data_RAM3 = .) ;
 } > USB_RAM AT>PROGRAM_FLASH
/* DATA section for BOARD_SDRAM */
 .data_RAM4 : ALIGN(4)
 {
 FILL(0xff)
 PROVIDE(__start_data_RAM4 = .) ;
 *(.ramfunc.$RAM4)
 *(.ramfunc.$BOARD_SDRAM)
 *(.data.$RAM4*)
 *(.data.$BOARD_SDRAM*)
 . = ALIGN(4) ;
 PROVIDE(__end_data_RAM4 = .) ;
 } > BOARD_SDRAM AT>PROGRAM_FLASH
/* MAIN DATA SECTION */
 .uninit_RESERVED : ALIGN(4)
 {
 KEEP(*(.bss.$RESERVED*))
 . = ALIGN(4) ;
 _end_uninit_RESERVED = .;
 } > BOARD_SDRAM
 /* Main DATA section (BOARD_SDRAM) */
 .data : ALIGN(4)
 {
 FILL(0xff)
 _data = . ;
 *(vtable)
 *(.ramfunc*)
 *(.data*)
 . = ALIGN(4) ;
 _edata = . ;
 } > BOARD_SDRAM AT>PROGRAM_FLASH
 /* BSS section for SRAMX */
 .bss_RAM2 : ALIGN(4)
 {
 PROVIDE(__start_bss_RAM2 = .) ;
 *(.bss.$RAM2*)
 *(.bss.$SRAMX*)
 . = ALIGN (. != 0 ? 4 : 1) ; /* avoid empty segment */
 PROVIDE(__end_bss_RAM2 = .) ;
 } > SRAMX 
 /* BSS section for USB_RAM */
 .bss_RAM3 : ALIGN(4)
 {
 PROVIDE(__start_bss_RAM3 = .) ;
 *(.bss.$RAM3*)
 *(.bss.$USB_RAM*)
 . = ALIGN (. != 0 ? 4 : 1) ; /* avoid empty segment */
 PROVIDE(__end_bss_RAM3 = .) ;
 } > USB_RAM 
 /* BSS section for BOARD_SDRAM */
 .bss_RAM4 : ALIGN(4)
 {
 PROVIDE(__start_bss_RAM4 = .) ;
 *(.bss.$RAM4*)
 *(.bss.$BOARD_SDRAM*)
 . = ALIGN (. != 0 ? 4 : 1) ; /* avoid empty segment */
 PROVIDE(__end_bss_RAM4 = .) ;
 } > BOARD_SDRAM 
 /* MAIN BSS SECTION */
 .bss : ALIGN(4)
 {
 _bss = .;
 *(.bss*)
 *(COMMON)
 . = ALIGN(4) ;
 _ebss = .;
 PROVIDE(end = .);
 } > BOARD_SDRAM
 /* NOINIT section for SRAMX */
 .noinit_RAM2 (NOLOAD) : ALIGN(4)
 {
 *(.noinit.$RAM2*)
 *(.noinit.$SRAMX*)
 . = ALIGN(4) ;
 } > SRAMX 
 /* NOINIT section for USB_RAM */
 .noinit_RAM3 (NOLOAD) : ALIGN(4)
 {
 *(.noinit.$RAM3*)
 *(.noinit.$USB_RAM*)
 . = ALIGN(4) ;
 } > USB_RAM 
 /* NOINIT section for BOARD_SDRAM */
 .noinit_RAM4 (NOLOAD) : ALIGN(4)
 {
 *(.noinit.$RAM4*)
 *(.noinit.$BOARD_SDRAM*)
 . = ALIGN(4) ;
 } > BOARD_SDRAM 
 /* DEFAULT NOINIT SECTION */
 .noinit (NOLOAD): ALIGN(4)
 {
 _noinit = .;
 *(.noinit*) 
 . = ALIGN(4) ;
 _end_noinit = .;
 } > BOARD_SDRAM
/* Reserve and place Heap within memory map */
 _HeapSize = 0x1000;
 .heap : ALIGN(4)
 {
 _pvHeapStart = .;
 . += _HeapSize;
 . = ALIGN(4);
 _pvHeapLimit = .;
 } > BOARD_SDRAM
_StackSize = 0x1000;
 /* Reserve space in memory for Stack */
 .heap2stackfill :
 {
 . += _StackSize;
 } > BOARD_SDRAM
 /* Locate actual Stack in memory map */
 .stack ORIGIN(BOARD_SDRAM) + LENGTH(BOARD_SDRAM) - _StackSize - 0: ALIGN(4)
 {
 _vStackBase = .;
 . = ALIGN(4);
 _vStackTop = . + _StackSize;
 } > BOARD_SDRAM
/* ## Create checksum value (used in startup) ## */
 PROVIDE(__valid_user_code_checksum = 0 - 
 (_vStackTop 
 + (ResetISR + 1) 
 + (NMI_Handler + 1) 
 + (HardFault_Handler + 1) 
 + (( DEFINED(MemManage_Handler) ? MemManage_Handler : 0 ) + 1) /* MemManage_Handler may not be defined */
 + (( DEFINED(BusFault_Handler) ? BusFault_Handler : 0 ) + 1) /* BusFault_Handler may not be defined */
 + (( DEFINED(UsageFault_Handler) ? UsageFault_Handler : 0 ) + 1) /* UsageFault_Handler may not be defined */
 ) );
/* Provide basic symbols giving location and size of main text
 * block, including initial values of RW data sections. Note that
 * these will need extending to give a complete picture with
 * complex images (e.g multiple Flash banks).
 */
 _image_start = LOADADDR(.text);
 _image_end = LOADADDR(.data) + SIZEOF(.data);
 _image_size = _image_end - _image_start;
}
 
					
				
		
 jeremyzhou
		
			jeremyzhou
		
		
		
		
		
		
		
		
	
			
		
		
			
					
		Hi fatih ozen,
