/* * Copyright 2023 Arm Limited and/or its affiliates * * SPDX-License-Identifier: MIT * */ __STACK_SIZE = 0x00004000; MEMORY { FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x00090000 RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00090000 } ENTRY(Reset_Handler) SECTIONS { .text : { KEEP(*(.vectors)) *(.text*) *(.rodata*) } > FLASH .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } > FLASH __exidx_start = .; .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } > FLASH __exidx_end = .; .copy.table : { . = ALIGN(4); __copy_table_start__ = .; LONG (__etext) LONG (__data_start__) LONG ((__data_end__ - __data_start__) / 4) __copy_table_end__ = .; } > FLASH .zero.table : { . = ALIGN(4); __zero_table_start__ = .; __zero_table_end__ = .; } > FLASH __etext = ALIGN (4); .data : AT (__etext) { __data_start__ = .; *(.data) *(.data.*) . = ALIGN(4); /* All data end */ __data_end__ = .; } > RAM .bss : { . = ALIGN(4); __bss_start__ = .; *(.bss) *(.bss.*) *(COMMON) . = ALIGN(4); __bss_end__ = .; . = ALIGN(8); __end__ = .; PROVIDE(end = .); } > RAM AT > RAM .stack (ORIGIN(RAM) + LENGTH(RAM) - __STACK_SIZE) (COPY) : { . = ALIGN(8); __StackLimit = .; . = . + __STACK_SIZE; . = ALIGN(8); __StackTop = .; } > RAM PROVIDE(__stack = __StackTop); /* Check if data + stack exceeds RAM limit */ ASSERT(__StackLimit >= __bss_end__, "region RAM overflowed with stack") }