| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 | /** STM32F030 Linkerscript* Copyright (C) 2019 Stefan Strobel <stefan.strobel@shimatta.net>** This file is part of 'STM32F0 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: 4K*//* USER PARAMETERS */__ld_stack_size = 0x0400;__ld_heap_size  = 0x0200;/* END OF USER PARAMETERS */ENTRY(Reset_Handler)__ld_top_of_stack = 0x20001000; /* 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 = 4K	}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  */	} >FLASH		.ARM.extab : 	{ 		*(.ARM.extab* .gnu.linkonce.armextab.*) 	} >FLASH		.ARM :	{    		__exidx_start = .;      		*(.ARM.exidx*)      		__exidx_end = .;   	} >FLASH		/* Constructor/Destructor tables */ 	.preinit_array     :	{    		PROVIDE_HIDDEN (__preinit_array_start = .);    		KEEP (*(.preinit_array*))    		PROVIDE_HIDDEN (__preinit_array_end = .);  	} >FLASH  		.init_array :  	{    		PROVIDE_HIDDEN (__init_array_start = .);    		KEEP (*(SORT(.init_array.*)))    		KEEP (*(.init_array*))    		PROVIDE_HIDDEN (__init_array_end = .);  	} >FLASH  	.fini_array :	{    		PROVIDE_HIDDEN (__fini_array_start = .);    		KEEP (*(.fini_array*))    		KEEP (*(SORT(.fini_array.*)))    		PROVIDE_HIDDEN (__fini_array_end = .);  	} >FLASH		/* 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}
 |