rt-thread-official/bsp/synopsys/boards/linker_template_mw.ld

155 lines
2.7 KiB
Plaintext

#define __ASSEMBLY__
#include <target_mem_config.h>
MEMORY {
#if (REGION_ICCM_SIZE != 0)
REGION_ICCM : ORIGIN = REGION_ICCM_START, LENGTH = REGION_ICCM_SIZE
#endif
#if (REGION_DCCM_SIZE !=0)
REGION_DCCM : ORIGIN = REGION_DCCM_START, LENGTH = REGION_DCCM_SIZE
#endif
#if (REGION_XCCM_SIZE != 0)
REGION_XCCM : ORIGIN = REGION_XCCM_START, LENGTH = REGION_XCCM_SIZE
#endif
#if (REGION_YCCM_SIZE != 0)
REGION_YCCM : ORIGIN = REGION_YCCM_START, LENGTH = REGION_YCCM_SIZE
#endif
#if (REGION_EXT_ROM_SIZE != 0)
REGION_EXT_ROM : ORIGIN = REGION_EXT_ROM_START, LENGTH = REGION_EXT_ROM_SIZE
#endif
#if (REGION_EXT_RAM_SIZE != 0)
REGION_EXT_RAM : ORIGIN = REGION_EXT_RAM_START, LENGTH = REGION_EXT_RAM_SIZE
#endif
}
ENTRY(_start)
SECTIONS {
GROUP : {
.image_head: {
. = . + IMAGE_HEAD_SIZE;
}
.init_bootstrap:{
_f_init = .;
*(.init_vector .init_vector.*)
*(.init_bootstrap .init_bootstrap.*)
_e_init = .;
}
.vector ALIGN(1024): {
_f_vector = .;
*(.vector .vector.*)
_e_vector = .;
}
} > REGION_ROM
#if (REGION_XCCM_SIZE != 0)
GROUP (NOLOAD): {
.x_ccm ALIGN(8): {
_f_x_ccm = .;
*(.x_ccm)
*(.x_ccm.*)
_e_x_ccm = .;
}
} > REGION_XCCM
#endif
#if (REGION_YCCM_SIZE != 0)
GROUP (NOLOAD): {
.y_ccm ALIGN(8): {
_f_y_ccm = .;
*(.y_ccm)
*(.y_ccm.*)
_e_y_ccm = .;
}
} > REGION_YCCM
#endif
GROUP : {
.text ALIGN(4): {
_f_text = .;
*(TYPE text)
*(.text*)
_e_text = .;
}
.rodata ALIGN(4): {
_f_rodata = .;
_fctors = .;
*(.ctors*)
_ectors = .;
_fdtors = .;
*(.dtors*)
_edtors = .;
_feh_frame = .;
*(.eh_frame*)
_eeh_frame = .;
*(TYPE lit)
/* section information for finsh shell */
. = ALIGN(4);
__fsymtab_start = .;
*(FSymTab*)
__fsymtab_end = .;
. = ALIGN(4);
__vsymtab_start = .;
*(VSymTab*)
__vsymtab_end = .;
. = ALIGN(4);
__rt_init_start = .;
*(.rti_fn*)
__rt_init_end = .;
. = ALIGN(4);
_e_rodata = .;
}
} > REGION_ROM
GROUP : {
.data ALIGN(8): {
_f_data = .;
_f_sdata = .;
*(.sdata)
*(.sbss)
_e_sdata = .;
*(TYPE data)
}
#if defined(EMBARC_UNIT_TEST)
.unit_test ALIGN(8): {
_f_embarc_unittest = .;
KEEP(*(".embarc_unittest"))
_e_embarc_unittest = .;
}
#endif
.tls ALIGN(8): {
*(.tls*)
_e_data = .;
}
} > REGION_RAM AT > REGION_ROM
GROUP (NOLOAD) : {
.bss ALIGN(8): {
_f_bss = .;
*(TYPE bss)
_e_bss = .;
}
.stack ALIGN(4) SIZE(_STACKSIZE): {}
.heap? ALIGN(4) SIZE(_HEAPSIZE): {}
} > REGION_RAM
_f_stack = ADDR(.stack);
_e_stack = ADDR(.stack) + SIZEOF(.stack);
_f_heap = ADDR(.heap);
_e_heap = ADDR(.heap) + SIZEOF(.heap);
_load_addr_text = LOADADDR(.text);
_load_addr_rodata = LOADADDR(.rodata);
_load_addr_data = LOADADDR(.data);
}