136 lines
3.2 KiB
Plaintext
136 lines
3.2 KiB
Plaintext
|
/*
|
||
|
* STM32L010x4 Linkerscript
|
||
|
* Copyright (C) 2023 Mario Huettel <mario.huettel@linux.com>
|
||
|
*
|
||
|
* This file is part of 'STM32L010x4 code template'.
|
||
|
*
|
||
|
* It is free software: you can redistribute it and/or modify
|
||
|
* it under the terms of the GNU General Public License as published by
|
||
|
* the Free Software Foundation, version 2 of the License.
|
||
|
*
|
||
|
* This code is distributed in the hope that it will be useful,
|
||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
* GNU General Public License for more details.
|
||
|
*
|
||
|
* You should have received a copy of the GNU General Public License
|
||
|
* along with this template. If not, see <http://www.gnu.org/licenses/>.
|
||
|
* --------------------------------------------------------------------
|
||
|
* FLASH: 16K
|
||
|
* RAM: 2K
|
||
|
*/
|
||
|
|
||
|
/* USER PARAMETERS */
|
||
|
__ld_stack_size = 0x0200;
|
||
|
|
||
|
/* Due to the limited RAM of this device it is recommended not to use any heap */
|
||
|
__ld_heap_size = 0x0000;
|
||
|
|
||
|
/* END OF USER PARAMETERS */
|
||
|
ENTRY(Reset_Handler)
|
||
|
__ld_top_of_stack = 0x20000800; /* One byte above the end of the SRAM. Stack is pre-decrewmenting, so this is okay */
|
||
|
|
||
|
|
||
|
/* Available memory areas */
|
||
|
MEMORY
|
||
|
{
|
||
|
FLASH (xr) : ORIGIN = 0x08000000, LENGTH = 16K
|
||
|
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 2K
|
||
|
}
|
||
|
|
||
|
SECTIONS
|
||
|
{
|
||
|
.vectors : ALIGN(4)
|
||
|
{
|
||
|
KEEP(*(.vectors))
|
||
|
. = ALIGN(4);
|
||
|
} >FLASH
|
||
|
|
||
|
.text : ALIGN(4)
|
||
|
{
|
||
|
*(.text) /* .text sections (code) */
|
||
|
*(.text*) /* .text* sections (code) */
|
||
|
*(.rodata) /* .rodata sections (constants, strings, etc.) */
|
||
|
*(.rodata*) /* .rodata* sections (constants, strings, etc.) */
|
||
|
*(.glue_7) /* glue arm to thumb code */
|
||
|
*(.glue_7t) /* glue thumb to arm code */
|
||
|
*(.eh_frame)
|
||
|
KEEP(*(.init)) /* Constructors */
|
||
|
KEEP(*(.fini)) /* Destructors */
|
||
|
. = ALIGN(4);
|
||
|
} >FLASH =0xFF
|
||
|
|
||
|
.ARM.extab : ALIGN(4)
|
||
|
{
|
||
|
*(.ARM.extab* .gnu.linkonce.armextab.*)
|
||
|
. = ALIGN(4);
|
||
|
} >FLASH =0xFF
|
||
|
|
||
|
.ARM : ALIGN(4)
|
||
|
{
|
||
|
__exidx_start = .;
|
||
|
*(.ARM.exidx*)
|
||
|
__exidx_end = .;
|
||
|
. = ALIGN(4);
|
||
|
} >FLASH =0xFF
|
||
|
|
||
|
/* Constructor/Destructor tables */
|
||
|
.preinit_array : ALIGN(4)
|
||
|
{
|
||
|
PROVIDE_HIDDEN (__preinit_array_start = .);
|
||
|
KEEP (*(.preinit_array*))
|
||
|
PROVIDE_HIDDEN (__preinit_array_end = .);
|
||
|
. = ALIGN(4);
|
||
|
} >FLASH =0xFF
|
||
|
|
||
|
.init_array : ALIGN(4)
|
||
|
{
|
||
|
PROVIDE_HIDDEN (__init_array_start = .);
|
||
|
KEEP (*(SORT(.init_array.*)))
|
||
|
KEEP (*(.init_array*))
|
||
|
PROVIDE_HIDDEN (__init_array_end = .);
|
||
|
. = ALIGN(4);
|
||
|
} >FLASH =0xFF
|
||
|
|
||
|
.fini_array : ALIGN(4)
|
||
|
{
|
||
|
PROVIDE_HIDDEN (__fini_array_start = .);
|
||
|
KEEP (*(.fini_array*))
|
||
|
KEEP (*(SORT(.fini_array.*)))
|
||
|
PROVIDE_HIDDEN (__fini_array_end = .);
|
||
|
. = ALIGN(4);
|
||
|
} >FLASH =0xFF
|
||
|
|
||
|
/* Initialized Data */
|
||
|
__ld_load_data = LOADADDR(.data);
|
||
|
.data : ALIGN(4)
|
||
|
{
|
||
|
__ld_sdata = .;
|
||
|
*(.data)
|
||
|
*(.data*)
|
||
|
. = ALIGN(4);
|
||
|
__ld_edata = .;
|
||
|
} >RAM AT> FLASH
|
||
|
|
||
|
/* Uninitialized static data */
|
||
|
.bss : ALIGN(4)
|
||
|
{
|
||
|
__ld_sbss = .;
|
||
|
*(.bss)
|
||
|
*(.bss*)
|
||
|
*(COMMON)
|
||
|
. = ALIGN(4);
|
||
|
__ld_ebss = .;
|
||
|
} >RAM
|
||
|
|
||
|
.heap_stack (NOLOAD) : ALIGN(4)
|
||
|
{
|
||
|
__ld_sheap = .;
|
||
|
. = . + __ld_heap_size;
|
||
|
__ld_eheap = .;
|
||
|
. = . + __ld_stack_size;
|
||
|
. = ALIGN(4);
|
||
|
} >RAM
|
||
|
}
|
||
|
|