107 lines
2.6 KiB
Plaintext
107 lines
2.6 KiB
Plaintext
|
ENTRY(Reset_Handler)
|
||
|
|
||
|
_minimum_stack_size = 64K;
|
||
|
_minimum_heap_size = 0;
|
||
|
|
||
|
MEMORY
|
||
|
{
|
||
|
FLASH (rx) : ORIGIN = 0x60000000, LENGTH = 8M
|
||
|
FLASH_BOOTLOADER (rx) : ORIGIN = 0x60000000, LENGTH = 48K
|
||
|
FLASH_ISR (rx) : ORIGIN = 0x6000C000, LENGTH = 1K
|
||
|
FLASH_TEXT (rx) : ORIGIN = 0x6000C400, LENGTH = 975K
|
||
|
FLASH_FATFS (r) : ORIGIN = 0x60100000, LENGTH = 7M
|
||
|
RAM (rwx) : ORIGIN = 0x00000000, LENGTH = 32K
|
||
|
OCRAM (rwx) : ORIGIN = 0x20200000, LENGTH = 64K
|
||
|
}
|
||
|
|
||
|
_estack = ORIGIN(OCRAM) + LENGTH(OCRAM);
|
||
|
_bootloader_dbl_tap = ORIGIN(RAM) + LENGTH(RAM) - 4;
|
||
|
|
||
|
__fatfs_flash_start_addr = ORIGIN(FLASH_FATFS);
|
||
|
__fatfs_flash_length = LENGTH(FLASH_FATFS);
|
||
|
|
||
|
__RAM_VECTOR_TABLE_SIZE_BYTES = 0;
|
||
|
|
||
|
SECTIONS
|
||
|
{
|
||
|
.interrupts :
|
||
|
{
|
||
|
__VECTOR_TABLE = .;
|
||
|
__VECTOR_RAM = .;
|
||
|
|
||
|
. = ALIGN(4);
|
||
|
KEEP(*(.isr_vector)) /* Startup code */
|
||
|
. = ALIGN(4);
|
||
|
} > FLASH_ISR
|
||
|
|
||
|
.text :
|
||
|
{
|
||
|
. = ALIGN(4);
|
||
|
*(EXCLUDE_FILE(
|
||
|
*flexspi_nor_flash_ops.o
|
||
|
*fsl_flexspi.o
|
||
|
) .text*) /* .text* sections (code) */
|
||
|
*(.rodata*) /* .rodata* sections (constants, strings, etc.) */
|
||
|
. = ALIGN(4);
|
||
|
} > FLASH_TEXT
|
||
|
|
||
|
.ARM.exidx :
|
||
|
{
|
||
|
*(.ARM.exidx*)
|
||
|
*(.gnu.linkonce.armexidx.*)
|
||
|
_etext = .; /* define a global symbol at end of code */
|
||
|
__etext = .; /* define a global symbol at end of code */
|
||
|
} > FLASH_TEXT
|
||
|
|
||
|
/* used by the startup to initialize data */
|
||
|
_sidata = .;
|
||
|
|
||
|
.data : AT (_sidata)
|
||
|
{
|
||
|
. = ALIGN(4);
|
||
|
__data_start__ = .; /* create a global symbol at data start */
|
||
|
|
||
|
*(.data*) /* .data* sections */
|
||
|
*flexspi_nor_flash_ops.o(.text*)
|
||
|
*fsl_flexspi.o(.text*)
|
||
|
. = ALIGN(4);
|
||
|
|
||
|
__data_end__ = .; /* define a global symbol at data end */
|
||
|
} > RAM
|
||
|
|
||
|
/* Uninitialized data section */
|
||
|
.bss :
|
||
|
{
|
||
|
. = ALIGN(4);
|
||
|
__bss_start__ = .;
|
||
|
|
||
|
*(.bss*)
|
||
|
*(COMMON)
|
||
|
|
||
|
. = ALIGN(4);
|
||
|
__bss_end__ = .;
|
||
|
PROVIDE(end = .);
|
||
|
} > RAM
|
||
|
|
||
|
.heap :
|
||
|
{
|
||
|
. = ALIGN(8);
|
||
|
_heap_start = .; /* define a global symbol at heap start */
|
||
|
|
||
|
. += _minimum_heap_size;
|
||
|
|
||
|
__HeapLimit = .;
|
||
|
} > OCRAM
|
||
|
|
||
|
.stack :
|
||
|
{
|
||
|
. = ALIGN(8);
|
||
|
. += _minimum_stack_size;
|
||
|
} > OCRAM
|
||
|
|
||
|
.ARM.attributes 0 : { *(.ARM.attributes) }
|
||
|
}
|
||
|
|
||
|
ASSERT(__data_end__ <= ORIGIN(FLASH_TEXT) + LENGTH(FLASH_TEXT), "region FLASH_TEXT overflowed with text and data")
|
||
|
ASSERT(_estack - _minimum_stack_size >= __HeapLimit, "region OCRAM overflowed with stack and heap")
|