125 lines
3.0 KiB
Plaintext
125 lines
3.0 KiB
Plaintext
/* SPDX-License-Identifier: BSD-3-Clause */
|
|
|
|
/******************************************************************************
|
|
*
|
|
* Copyright (C) 2012-2018 Texas Instruments Incorporated - http://www.ti.com/
|
|
*
|
|
******************************************************************************/
|
|
|
|
MEMORY {
|
|
MAIN_FLASH (RX) : ORIGIN = 0x00000000, LENGTH = 0x00200000
|
|
INFO_FLASH (RX) : ORIGIN = 0x00200000, LENGTH = 0x00008000
|
|
SRAM_CODE_0(RWX): ORIGIN = 0x01000000, LENGTH = 0x00000110
|
|
SRAM_CODE_1(RWX): ORIGIN = 0x01000110, LENGTH = 0x00000030
|
|
SRAM_CODE_2(RWX): ORIGIN = 0x01000150, LENGTH = 0x00000040
|
|
SRAM_CODE_3(RWX): ORIGIN = 0x01000190, LENGTH = 0x00001E70
|
|
SRAM_CODE_4(RWX): ORIGIN = 0x01002000, LENGTH = 0x00000200
|
|
SRAM_DATA (RW) : ORIGIN = 0x20002000, LENGTH = 0x00001000
|
|
}
|
|
|
|
REGION_ALIAS("REGION_INTVECT", SRAM_CODE_0);
|
|
REGION_ALIAS("REGION_RESET", SRAM_CODE_1);
|
|
REGION_ALIAS("REGION_DESCRIPTOR", SRAM_CODE_2);
|
|
REGION_ALIAS("REGION_TEXT", SRAM_CODE_3);
|
|
REGION_ALIAS("REGION_BSS", SRAM_CODE_3);
|
|
REGION_ALIAS("REGION_DATA", SRAM_DATA);
|
|
REGION_ALIAS("REGION_STACK", SRAM_CODE_4);
|
|
REGION_ALIAS("REGION_HEAP", SRAM_DATA);
|
|
REGION_ALIAS("REGION_ARM_EXIDX", SRAM_CODE_3);
|
|
REGION_ALIAS("REGION_ARM_EXTAB", SRAM_CODE_3);
|
|
|
|
SECTIONS {
|
|
/* section for the interrupt vector area */
|
|
.intvecs : {
|
|
KEEP (*(.intvecs))
|
|
} > REGION_INTVECT
|
|
|
|
PROVIDE (_vtable_base_address =
|
|
DEFINED(_vtable_base_address) ? _vtable_base_address : 0x20000000);
|
|
|
|
.vtable (_vtable_base_address) : AT (_vtable_base_address) {
|
|
KEEP (*(.vtable))
|
|
} > REGION_DATA
|
|
|
|
.descriptor :{
|
|
FILL(0x00000000);
|
|
. = ORIGIN(REGION_DESCRIPTOR) + LENGTH(REGION_DESCRIPTOR) - 1;
|
|
BYTE(0x00);
|
|
__ROM_AT = .;
|
|
} > REGION_DESCRIPTOR
|
|
|
|
.reset : {
|
|
KEEP(*(.reset))
|
|
} > REGION_RESET AT> REGION_RESET
|
|
|
|
.text : {
|
|
CREATE_OBJECT_SYMBOLS
|
|
KEEP (*(.text))
|
|
*(.text.*)
|
|
. = ALIGN(0x4);
|
|
KEEP (*(.ctors))
|
|
. = ALIGN(0x4);
|
|
KEEP (*(.dtors))
|
|
. = ALIGN(0x4);
|
|
__init_array_start = .;
|
|
KEEP (*(.init_array*))
|
|
__init_array_end = .;
|
|
KEEP (*(.init))
|
|
KEEP (*(.fini*))
|
|
} > REGION_TEXT AT> REGION_TEXT
|
|
|
|
.rodata : {
|
|
*(.rodata)
|
|
*(.rodata.*)
|
|
} > REGION_TEXT AT> REGION_TEXT
|
|
|
|
.ARM.exidx : {
|
|
__exidx_start = .;
|
|
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
|
|
__exidx_end = .;
|
|
} > REGION_ARM_EXIDX AT> REGION_ARM_EXIDX
|
|
|
|
.ARM.extab : {
|
|
KEEP (*(.ARM.extab* .gnu.linkonce.armextab.*))
|
|
} > REGION_ARM_EXTAB AT> REGION_ARM_EXTAB
|
|
|
|
__etext = .;
|
|
|
|
.data : {
|
|
__data_load__ = LOADADDR (.data);
|
|
__data_start__ = .;
|
|
KEEP (*(.data))
|
|
KEEP (*(.data*))
|
|
. = ALIGN (4);
|
|
__data_end__ = .;
|
|
} > REGION_DATA AT> REGION_TEXT
|
|
|
|
.bss : {
|
|
__bss_start__ = .;
|
|
*(.shbss)
|
|
KEEP (*(.bss))
|
|
*(.bss.*)
|
|
*(COMMON)
|
|
. = ALIGN (4);
|
|
__bss_end__ = .;
|
|
} > REGION_BSS AT> REGION_BSS
|
|
|
|
.heap : {
|
|
__heap_start__ = .;
|
|
end = __heap_start__;
|
|
_end = end;
|
|
__end = end;
|
|
KEEP (*(.heap))
|
|
__heap_end__ = .;
|
|
__HeapLimit = __heap_end__;
|
|
} > REGION_HEAP AT> REGION_HEAP
|
|
|
|
.stack (NOLOAD) : ALIGN(0x8) {
|
|
_stack = .;
|
|
KEEP(*(.stack))
|
|
} > REGION_STACK AT> REGION_STACK
|
|
|
|
__stack_top = ORIGIN(REGION_STACK) + LENGTH(REGION_STACK);
|
|
PROVIDE(__stack = __stack_top);
|
|
}
|